Нужно сделать без мах (Упорядочить элементы массива по убыванию) - C (СИ)
Формулировка задачи:
вот код программы препод сказал что можно сделать без мах но я без понятия как...
#include <stdio.h> #include <math.h> int main(void) { const int N = 5; int arr[N]; int i; for(i = 0; i < N; i++) { printf("Vvedite znachenia massiva %d=>",i); scanf("%d", &arr[i]); } int min = abs(arr[0]); int max = abs(arr[0]); int nomin = 0 ; int nomax = 0 ; int pr = 1; int buf; for(i = 1; i < N; i++) { if (abs( arr[i]) > max) { max = abs (arr[i]); nomax = i; } if (abs( arr[i]) < min) { min = abs (arr[i]); nomin = i; } } if(nomin > nomax) { buf=nomin; nomin=nomax; nomax=buf; } if (nomin < nomax && nomin != nomax && nomax != nomin-1 && nomax != nomin+1) { for(i = nomin+1; i < nomax;i++) { pr*=arr[i]; } } printf("pr= %d\n\n",pr); int j; for (i=0; i<N;i++) { for (j = 0; j < N-i-1; j++) { if (arr[j]<arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } for(i=0;i<N;i++) { printf("%d ",arr[i]); } return 0; }
Решение задачи: «Нужно сделать без мах (Упорядочить элементы массива по убыванию)»
textual
Листинг программы
#include <stdio.h> #include <math.h> #define N 5 int main(void) { int arr[N]; int i, j; int nomin = 0 ; int nomax = 0 ; int pr = 1; int buf; for(i = 0; i < N; i++) { printf("Vvedite znachenia massiva %d=>",i); scanf("%d", &arr[i]); } for(i = 1; i < N; i++) { if (abs( arr[i]) > abs(arr[nomax])) { nomax = i; } if (abs( arr[i]) < abs(arr[nomin])) { nomin = i; } } if(nomin > nomax) { buf=nomin; nomin=nomax; nomax=buf; } if (nomin < nomax && nomin != nomax && nomax != nomin-1 && nomax != nomin+1) { for(i = nomin+1; i < nomax;i++) { pr*=arr[i]; } } printf("pr= %d\n\n",pr); for (i=0; i<N;i++) { for (j = 0; j < N-i-1; j++) { if (arr[j]<arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } for(i=0;i<N;i++) { printf("%d ",arr[i]); } return 0; }
Объяснение кода листинга программы
- Ввод 5 чисел с клавиатуры, сохраняемых в массиве arr[5].
- Переменные:
- nomin (именитель) содержит индекс наименьшего элемента.
- nomax (номер максимального элемента) содержит индекс наибольшего элемента.
- pr (произведение) используется для хранения произведения элементов, помещённых в кортеж.
- buf (буфер) используется для временного хранения значений при перестановке элементов.
- Находим индекс наименьшего и наибольшего элемента массива с использованием функции abs() для получения абсолютного значения числа.
- Если наименьший элемент больше, чем два предыдущих, то меняем его местами с последним, а последний элемент помещаем на первое место.
- Если произведение элементов в кортеже (от nomin+1 до nomax) не равно наименьшему элементу, то находим произведение этих элементов и сохраняем в переменной pr.
- Сортировка массива по возрастанию с использованием алгоритма пузырька.
- Вывод отсортированного массива на экран.
- Возврат 0, т.е. успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д