Получить среднее арифметическое положительных элементов - C (СИ)
Формулировка задачи:
В двумерном массиве целочисленном получить среднее арифметическое положительных элементов.
Как переделать код под эту задачу
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include"logotip.c"
#include"time.h"
main(int argc,char* argv[])
{
logo();
puts("Краткое изложение задачи:");
puts("Транспонировать матрицу IxJ");
puts("Выполнял Рожкин Павел Александрович,ИВТ-12");
puts("Нажмите Enter");getchar();
char buffer[20];
int mass[100][100];//massiv
int i,j;//stroka,stolbez massiva
int a=0,b=0;//Razmer massiva b scanf
if(argc<2)
{Mark4: printf("Для вывода спраки %s Справка",argv[0]);getchar();exit(0);}
//SpraBka
if(argc>4) goto Mark4;
if(strcmp(argv[1],"Справка")==0)
{printf("Создание матрицы происходит через команндую стороку для этого пишите %s Ручной <i><j> или %s Рандом <i><j>(без <>,размер по столбацам и строкам не должен привышать 100)\n",argv[0]);
printf("Вы можете вводить матрицу 2 способами,используйте: %s Ручной ,%s Рандом\n",argv[0],argv[0]);
printf("Нажмите Enter!");getchar();exit(0);}
a=atoi(argv[1]);
b=atoi(argv[1]);
if(i>100) or (j>100){printf("Слишком большой размер матрицы(i и j должны быть меньше 100)\n");goto Mark4;exit(0);}
if(i<2) or (j<2){printf("Слишком Маленький размем матрицы(i и j должны быть больше 2)\n");goto Mark4;exit(0);}
printf("Вы задали матрицу с размером строк = %d ,с размером столбцов = %d\n",i,j);
printf("\n");
printf("\n");
printf("\n");
printf("\n");
if(strcmp(argv[1],"Ручной")==0)
{for(i=0;i<a;i++)//Hachalo BBoda massiva
{
for(j=0;j<b;j++)
{
printf("Введите значение элемента матрицы[%d][%d]\n",i,j);
fgets(buffer,20,stdin);
mass[i][j]=atoi(buffer);
}}
}//Okonchanie Bboda massiva
if(strcmp(argv[1],"Рандом")==0)
{
for(i=0;i<a;i++)
{srandom(time(NULL));
for(j=0;j<b;j++) mass[i][j]=rand()%100;
}}
printf("\n");
printf("\n");
printf("Вы задали матрицу \n");
for(i=0;i<a;i++)//Hachalo Bbiboda massiva
{for(j=0;j<b;j++)
{
printf("mass[%d][%d]=%d\t",i,j,mass[i][j]);
printf("\n");
}}//Okonchanie Bbiboda massiva
printf("\n");
printf("\n");
//Ha4alo Bbipolnenie osnovnoi zeli programmbi
printf("Транспонируем матрицу\n");
{
for(i=0;i<a;i++)
{for(j=0;j<b;j++)
printf("mass[%d][%d]=%d\t)",i,j,mass[j][i]);
printf("\n");
}
printf("\n");
}
}Решение задачи: «Получить среднее арифметическое положительных элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 100 //размеры массива
#define SIZE2 100 //размеры массива
int main(void) //ну сколько можно уже - int main.
{
int mx[100][100];
int i,j;
int sum=0,cnt=0;
srand(time(NULL));
for (i=0;i<SIZE1;i++)
{
for(j=0;j<SIZE2;j++)
{
mx[i][j]=-50+rand()%100; //заполняем случайными числами
printf("%3d ",mx[i][j]);
}
puts("");
}
for (i=0;i<SIZE1;i++) //по строкам
{
for(j=0;j<SIZE2;j++) //по столбцам
{
if (mx[i][j] > 0)
{
sum+=mx[i][j]; //суммируем положительные элементы
cnt++; //считаем кол-во положительных элементов
}
}
puts("");
}
printf("%s%d%s%d%s%d\n","Average:",(sum/cnt)," Pol.Elem: ",cnt, " Sum: ", sum); //sum/cnt - ср. арифметическое
system("PAUSE");
return 0; //ну сколько можно уже
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и генерации случайных чисел
- Определяем размеры массива
- Инициализируем переменные для подсчета суммы и количества положительных элементов, а также запускаем генератор случайных чисел
- Заполняем массив случайными числами от -50 до 50
- Выводим все элементы массива построчно
- Подсчитываем количество положительных элементов и суммируем их значения
- Выводим среднее арифметическое положительных элементов, количество положительных элементов и сумму на экран
- Ждем нажатия клавиши для завершения работы программы
- Возвращаем 0, чтобы указать, что программа успешно завершилась