Как переделать код под задачу

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
desember12
Сообщения: 6
Зарегистрирован: 10 дек 2015, 22:04

В двумерном массиве целочисленном получить среднее арифметическое положительных элементов.

Как переделать код под эту задачу

Код: Выделить всё

#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");
	}
}
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Читать же тяжко. Начала блоков не сразу распознаются, концы вообще теряются. Ладно ещё подсветка, но при таком оформлении листинга вообще не понятно, зачем использован тег.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Din666
Сообщения: 52
Зарегистрирован: 17 июл 2015, 13:25
Откуда: Moscow
Контактная информация:

Код: Выделить всё

    const int *begin = (const int*)mass;
    const int *const end = begin + sizeof(mass)/sizeof(mass[0]); 
    int sum = 0;
    int count = 0;
    for (; begin != end; ++begin) { if ( *begin > 0 ) {sum += *begin; ++count;} }
    double result = (double)(sum/count);
    printf("Среднее арифм положительных элементов =  %f", result);
Ответить