Найти сумму элементов массива, стоящих на позициях, совпадающих с их значением - C (СИ)
Формулировка задачи:
В одномерном массиве, состоящем из n целочисленных элементов:
• найти сумму элементов, стоящих на позициях, совпадающих с их значением.
• отсортировать методом выбора элементы, большие среднего арифметического;
Ребята помогите!
Завтра сдавать... т.е. сегодня
#include <stdio.h> int main() { int i,j,r,n = 10; int a[10] = {1,5,2,8,6,2,4,6,9}; int b[10]; int b_count = 0; int sum=0; int avg=0; for(i=0;i < n;i++) { sum=sum + a[i]; } avg=sum/n; printf("avg %d, \n",avg); for(i=0;i<n;i++) { if(a[i]=i)sum=sum + a[i]; if(a[i]>avg){b[b_count]=a[i]; b_count++;} } printf("sum %d, \n",sum); for(i=0;i<b_count;i++) { int min=i; for(j=i+1;j<r;j++){ if( b[j]<b[min]) min=j; } if(min!=i){ sum = b[i]; b[i]=b[min]; b[min]=sum;} } for(i=0;i<b_count;i++) printf("%d,",b); printf("\n"); }
Решение задачи: «Найти сумму элементов массива, стоящих на позициях, совпадающих с их значением»
textual
Листинг программы
#include <stdio.h> int main() { int r; const int n = 9; int a[n] = { 1, 5, 2, 8, 6, 2, 4, 6, 9 }; int b[n] = {0}; int b_count = 0; int sum = 0; int avg = 0; for(int i = 0; i < n; i++) { sum = sum + a[i]; } avg = sum / n; printf("avg = %d \n", avg); sum = 0; printf("Neotsortirovannyi massiv: "); for(int i = 0; i < n; i++) { if(a[i] == i) sum = sum + a[i]; if(a[i] > avg) { b[b_count] = a[i]; printf("\t %d", b[b_count]); b_count++; } } printf("\nsum = %d \n", sum); for(int i = 0; i < b_count - 1; i++) { int min = b[i]; for(int j = i + 1; j < b_count; j++) { if(min > b[j]) { sum = b[i]; min = b[j]; b[j] = sum; b[i] = min; } } } printf("\nSortirovanniu massiv: \t"); for(int i = 0; i < b_count; i++) { printf("%d\t", b[i]); } printf("\n"); }
Объяснение кода листинга программы
- Включаем файл, который позволяет использовать стандартные функции для работы сprintf и scanf - stdio.h
- Объявляем переменную типа int с именем r, которая не используется в коде.
- Объявляем константу n равную 9, которая определяет размер массива.
- Объявляем два массива типа int: a[n] и b[n], где a - это массив из исходных данных, а b - отсортированный массив.
- Инициализируем массив a значениями 1, 5, 2, 8, 6, 2, 4, 6, 9.
- Инициализируем массив b нулями.
- Объявляем переменную b_count типа int, которая будет считать количество элементов в отсортированном массиве b.
- Объявляем переменную sum типа int, которая будет использоваться для хранения суммы элементов массива a.
- Объявляем переменную avg типа int, которая будет использоваться для хранения среднего значения элементов массива a.
- Запускаем цикл for для перебора элементов массива a от 0 до n-1.
- Внутри цикла прибавляем значение каждого элемента массива a к переменной sum.
- После завершения цикла вычисляем среднее значение, разделив сумму на размер массива n, и сохраняем его в переменной avg.
- Выводим на экран среднее значение с помощью функции printf.
- Сбрасываем значение переменной sum в ноль.
- Выводим на экран неотсортированный массив a в формате колонки с помощью функции printf.
- Запускаем цикл for для перебора элементов массива a от 0 до n-1.
- Внутри цикла проверяем, равно ли значение текущего элемента i, и если да, то прибавляем его к переменной sum.
- Если значение текущего элемента больше среднего значения, то добавляем его в отсортированный массив b и выводим на экран.
- Сортируем отсортированный массив b в порядке возрастания с помощью двух циклов for и функции swap.
- Выводим на экран отсортированный массив b в формате колонки с помощью функции printf.