Я только изучаю Си, скажите где я сделал ошибку, он бесконечно запрашивает число которое нужно найти?
#include <stdio.h>
int main(){
int n, arr[100], c, m, q, last, first, middle, j, i, x, f;
printf("Введите количество элементов: \n");
scanf("%d", &n);
while (n < 0){
printf("Не вводите число меньше 0\nПовторите попытку:\n");
scanf("%d", &n);
}
printf("Введите целые числа %d:\n", n);
for (c = 0; c < n; c++)
scanf("%d",&arr[c]);
for(m = 0; m < n; m++){
for (i = 0; i < n; i++){
for(j = 0; j < i; j++){
if( arr[j] > arr[j + 1]){
q = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = q;
}
}
}
}
printf("Введите число которое нужно найти:\n");
scanf("%d", &x);
first = 0;
last = n - 1;
middle = last /2;
if(middle == x)
printf("Ваше число %d найдено", x);
else if(first == x)
printf("Ваше число %d найдено", first);
else if(last == x)
printf("Ваше число %d найдено", last);
while(middle < x) {
last = middle;
middle = last /2;
}
}
C/C++
Язык Си. Сортировка и поиск элементов массива
#include "stdio.h"
void printArray(const int *arr, int N){
for(int i = 0; i < N; i++)
printf("%d ", *(arr + i));
}
void swap(int *a, int *b){
int t = *a;
*a = *b;
*b = t;
}
void bubbleSort(const int *arr, int N){
for(int i = 0; i < N; i++)
for(int j = 0; j < N - i - 1; j++)
if(*(arr + j) > *(arr + j + 1))
swap(&(*(arr + j)), &(*(arr + j + 1)));
}
int binSearch(const int *arr, int N, int val){
int l = 0, r = N - 1;
while(l val)
r = mid - 1;
else if(*(arr + mid) < val)
l = mid + 1;
else
return mid;
}
return -1;
}
int main(){
int n, x;
printf("Input size of the array:\n");
scanf("%d", &n);
int a[n];
printf("Input elements of the array:\n");
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
printf("Initial array:\n");
printArray(a, n);
bubbleSort(a, n);
printf("\nSorted array:\n");
printArray(a, n);
printf("\nInput value is needed to be found:\n");
scanf("%d", &x);
int index = binSearch(a, n, x);
if(index < 0)
printf("There is no such an element in the array");
else
printf("Element has been found. It is at the position # %d in the sorted array", index);
}
У вас кусок программы, который ищет методом половинного деления, мало того что находится вне цикла (который в самом конце бесконечный) но даже не обращается к массиву. Вопрос знатокам - где он ищет? Минута пошла...
Похожие вопросы
- Язык Си. Сортировка и поиск элементв массива
- Код работает некорректно. Язык Си. Нахождение максимального отрицательного элемента матрицы и замена его числом.
- Упорядочить элементы массива по возрастанию на языке Си
- Сортировка элементов массива методом Шелла
- Можно ли через функцию memset записать число в элемент массива больше чем 255? (Си)
- Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
- Помогите добавить ввод чисел в массив матрицы на языке Си
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- Как ввести строчный массив через scanf_s в языке Си
- Как обработать этот массив на языке Си?
Компилятор показывает две ошибки в вашем коде, тут я их скопировать и вставить не могу, изза ограничения по количеству символов, пожалуйста перейдите по ссылке и посмотрите там, если вам не сложно.
P.S. Пароль от заметки " 12345678 "