Выведите на экран средние значения, подсчитанные на основе всех элементов массива - 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).