Найти сумму элементов массива, стоящих на позициях, совпадающих с их значением - 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");
}

Объяснение кода листинга программы

  1. Включаем файл, который позволяет использовать стандартные функции для работы сprintf и scanf - stdio.h
  2. Объявляем переменную типа int с именем r, которая не используется в коде.
  3. Объявляем константу n равную 9, которая определяет размер массива.
  4. Объявляем два массива типа int: a[n] и b[n], где a - это массив из исходных данных, а b - отсортированный массив.
  5. Инициализируем массив a значениями 1, 5, 2, 8, 6, 2, 4, 6, 9.
  6. Инициализируем массив b нулями.
  7. Объявляем переменную b_count типа int, которая будет считать количество элементов в отсортированном массиве b.
  8. Объявляем переменную sum типа int, которая будет использоваться для хранения суммы элементов массива a.
  9. Объявляем переменную avg типа int, которая будет использоваться для хранения среднего значения элементов массива a.
  10. Запускаем цикл for для перебора элементов массива a от 0 до n-1.
  11. Внутри цикла прибавляем значение каждого элемента массива a к переменной sum.
  12. После завершения цикла вычисляем среднее значение, разделив сумму на размер массива n, и сохраняем его в переменной avg.
  13. Выводим на экран среднее значение с помощью функции printf.
  14. Сбрасываем значение переменной sum в ноль.
  15. Выводим на экран неотсортированный массив a в формате колонки с помощью функции printf.
  16. Запускаем цикл for для перебора элементов массива a от 0 до n-1.
  17. Внутри цикла проверяем, равно ли значение текущего элемента i, и если да, то прибавляем его к переменной sum.
  18. Если значение текущего элемента больше среднего значения, то добавляем его в отсортированный массив b и выводим на экран.
  19. Сортируем отсортированный массив b в порядке возрастания с помощью двух циклов for и функции swap.
  20. Выводим на экран отсортированный массив b в формате колонки с помощью функции printf.

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы