Преобразовать массив так, чтобы сначала располагались все элементы равные максимальному, затем все остальные - C (СИ)
Формулировка задачи:
Помогите сделать задачу.
Преобразовать Массив таким образом, чтобы сначала располагались все элементы равные максимальному, затем все остальные.
не знаю где ошибка
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a[10],i,j,k=0,b[10],max,n; printf ("-->"); scanf ("%d",&n); srand(time(0)); for (i=0;i<n;i++) { a[i]=rand()%10; printf("%2d",a[i]); } max=a[0]; for (i=0;i<n;i++) { if (a[i]>max) max=a[i]; } printf("\n%d=max",max); for(j=0;j<n;j++) { b[j]=rand()%10; printf("%3d",b[j]); } k=n-1; if (a[i]==max) { b[j]=max; j++; } else { b[k]=a[i]; k--; } for (j=0;j<n;j++) printf ("\n%d",b[i]); return 0; }
Решение задачи: «Преобразовать массив так, чтобы сначала располагались все элементы равные максимальному, затем все остальные»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> double max_element(double* array, unsigned int size) { unsigned int i = 0; double return_value = *array; for (i = 1; i < size; ++i) if (array[i] > return_value) return_value = array[i]; return return_value; } void swap(double* a, double* b) { double t = *a; *a = *b; *b = t; } void sort(double* array, unsigned int size) { double max_elem = max_element(array, size); unsigned int i, iterations = 0, end; int next = 1; while (next > 0) { next = -1; for (i = 0, end = size - 1 - iterations; i < end; ++i) if (array[i + 1] == max_elem) { swap(array + i + 1, array + i); next = 1; } ++iterations; } } int main() { unsigned int size, i; double* array = NULL; printf("Enter the array size\n"); scanf("%u", &size); array = (double*)malloc(sizeof(double) * size); printf("Enter the array\n"); for (i = 0; i < size; ++i) scanf("%lf", array + i); sort(array, size); printf("Result\n"); for (i = 0; i < size; ++i) printf("%lf ", array[i]); free(array); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- В функции
max_element
ищется максимальный элемент в массиве. - В функции
swap
происходит обмен значениями двух переменных. - В функции
sort
происходит сортировка массива по принципу, что все элементы равные максимальному располагаются в начале массива. - В функции
main
пользователю предлагается ввести размер массива, затем сам массив. - После ввода массива он сортируется с помощью функции
sort
. - Выводится отсортированный массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д