Выведите на экран средние значения, подсчитанные на основе всех элементов массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго вечера/ночи. Очень прошу помощи, сразу к делу. Есть такое задание: Задание по теме УКАЗАТЕЛИ (с элементами массива необходимо работать через указатель, а не индекс) Создайте целочисленный массив, инициализируя его элементы конкретными значениями. Выведите на экран средние значения, подсчитанные: 1) на основе всех элементов массива; 2) на основе всех положительных элементов массива; 3) на основе всех отрицательных элементов массива. Использовать надо одномерный массив. Написал вот что (не уверен что все верно, может можно и лучше):
#include <iostream.h> 
using namespace std; 
 
int main(void){ 
int amount; 
do{ 
cout << "Input the amount element is array (n>0): "; 
cin >> amount; 
}while(amount <= 0); 
int* a = new int[amount]; 
 
for(int i = 0; i < amount; i++){ 
cout << "a[" << i << "]="; 
cin >> *(a+i); 
} 
float sum = 0; 
float posSum = 0; 
float negSum = 0; 
int posAmount = 0; 
int negAmount = 0; 
 
for(int j = 0; j < amount; j++){ 
sum = sum + *(a+j); 
if(*(a+j) > 0){ 
posSum = posSum + *(a+j); 
posAmount = posAmount + 1; 
} 
if(*(a+j) < 0){ 
negSum = negSum + *(a+j); 
negAmount = negAmount +1; 
} 
} 
if(posAmount == 0) posAmount = 1; 
if(negAmount == 0) negAmount = 1; 
 
sum = sum/amount; 
posSum = posSum/posAmount; 
negSum = negSum/negAmount; 
 
cout << "Total avg: " << sum << endl; 
cout << "Avg of positive: " << posSum << endl; 
cout << "Avg of negative: " << negSum << endl;
return 0; 
}
Ну а это само собой в С++. Знаю, что в Си вместо #include <iostream.h> будет #include <stdio.h>, и вместо cin/cout должно что-то быть с printf(""), scanf(""). Только вот не совсем знаю, только ли это, или еще что-то. Подскажите пожалуйста как должно быть, ну и может как лучше стоит сделать.

Решение задачи: «Выведите на экран средние значения, подсчитанные на основе всех элементов массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
 
main()
{ 
      int amount, i,j, *a, negAmount = 0, posAmount = 0;
      float sum = 0, posSum = 0, negSum = 0; 
 
      do
      { 
          printf("Input the amount element is array (n>0): "); 
          scanf("%d", &amount);
           
      }while(amount <= 0); 
 
      a = (int*)malloc(sizeof(int)*amount);
 
 
     for(i = 0; i < amount; i++)
     { 
           printf("a[%d]=",i);
           scanf("%d",&a[i]); 
           }  
     for(j = 0; j < amount; j++)
     { 
            sum = sum + *(a+j); 
            if(*(a+j) > 0)
            { 
                      posSum = posSum + *(a+j); 
                      posAmount = posAmount + 1; 
                      } 
            if(*(a+j) < 0)
            { 
                      negSum = negSum + *(a+j); 
                      negAmount = negAmount +1; 
                      } 
            } 
 
      if(posAmount == 0) posAmount = 1; 
      if(negAmount == 0) negAmount = 1; 
 
      sum = sum/amount; 
      posSum = posSum/posAmount; 
      negSum = negSum/negAmount; 
 
      printf("Total avg: %d\n",sum); 
      printf("Avg of positive: %d\n",posSum); 
      printf("Avg of negative: %d\n",negSum);
}

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

  1. Включаем необходимые заголовочные файлы: Для работы с целочисленными значениями включаем и .
  2. Создаем переменные:
    • int amount;
    • int i, j;
    • int *a;
    • float sum, posSum, negSum;
    • int posAmount = 0, negAmount = 0;
  3. Проверяем и задаем значение переменной amount:
    • Используем цикл do-while, чтобы получить от пользователя положительное число элементов массива.
    • С помощью функции scanf() считываем значение переменной amount.
  4. Выделяем память под массив:
    • Используем функцию malloc() для выделения памяти под массив a.
  5. Заполняем массив:
    • Используем цикл for для заполнения массива значениями.
    • С помощью функции scanf() считываем значения и сохраняем их в элементах массива a.
  6. Подсчитываем суммы положительных и отрицательных чисел:
    • Используем два вложенных цикла for для подсчета сумм положительных и отрицательных чисел.
    • Если значение элемента массива положительное, увеличиваем posSum и posAmount на 1.
    • Если значение элемента массива отрицательное, увеличиваем negSum и negAmount на 1.
  7. Подсчитываем средние значения:
    • Делим сумму на количество элементов массива для получения среднего значения (sum).
    • Делим posSum на posAmount для получения среднего значения положительных чисел (posSum).
    • Делим negSum на negAmount для получения среднего значения отрицательных чисел (negSum).
  8. Выводим результаты на экран:
    • Используем функцию printf() для вывода значений переменных на экран. Результат выполнения программы:
    • Вывод на экран среднего значения всех элементов массива (sum).
    • Вывод на экран среднего значения положительных чисел (posSum).
    • Вывод на экран среднего значения отрицательных чисел (negSum).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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