Выведите на экран средние значения, подсчитанные на основе всех элементов массива - C (СИ)
Формулировка задачи:
Всем доброго вечера/ночи. Очень прошу помощи, сразу к делу. Есть такое задание:
Задание по теме УКАЗАТЕЛИ (с элементами массива необходимо работать через
указатель, а не индекс)
Создайте целочисленный массив, инициализируя его элементы конкретными
значениями. Выведите на экран средние значения, подсчитанные:
1) на основе всех элементов массива;
2) на основе всех положительных элементов массива;
3) на основе всех отрицательных элементов массива.
Использовать надо одномерный массив.
Написал вот что (не уверен что все верно, может можно и лучше):
Ну а это само собой в С++. Знаю, что в Си вместо #include <iostream.h> будет #include <stdio.h>, и вместо cin/cout должно что-то быть с printf(""), scanf(""). Только вот не совсем знаю, только ли это, или еще что-то.
Подскажите пожалуйста как должно быть, ну и может как лучше стоит сделать.
#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; }
Решение задачи: «Выведите на экран средние значения, подсчитанные на основе всех элементов массива»
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); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
Для работы с целочисленными значениями включаем
и . - Создаем переменные:
- int amount;
- int i, j;
- int *a;
- float sum, posSum, negSum;
- int posAmount = 0, negAmount = 0;
- Проверяем и задаем значение переменной amount:
- Используем цикл do-while, чтобы получить от пользователя положительное число элементов массива.
- С помощью функции scanf() считываем значение переменной amount.
- Выделяем память под массив:
- Используем функцию malloc() для выделения памяти под массив a.
- Заполняем массив:
- Используем цикл for для заполнения массива значениями.
- С помощью функции scanf() считываем значения и сохраняем их в элементах массива a.
- Подсчитываем суммы положительных и отрицательных чисел:
- Используем два вложенных цикла for для подсчета сумм положительных и отрицательных чисел.
- Если значение элемента массива положительное, увеличиваем posSum и posAmount на 1.
- Если значение элемента массива отрицательное, увеличиваем negSum и negAmount на 1.
- Подсчитываем средние значения:
- Делим сумму на количество элементов массива для получения среднего значения (sum).
- Делим posSum на posAmount для получения среднего значения положительных чисел (posSum).
- Делим negSum на negAmount для получения среднего значения отрицательных чисел (negSum).
- Выводим результаты на экран:
- Используем функцию printf() для вывода значений переменных на экран. Результат выполнения программы:
- Вывод на экран среднего значения всех элементов массива (sum).
- Вывод на экран среднего значения положительных чисел (posSum).
- Вывод на экран среднего значения отрицательных чисел (negSum).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д