Страница 1 из 1

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

Добавлено: 17 дек 2015, 19:33
desember12
В двумерном массиве целочисленном получить среднее арифметическое положительных элементов.

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

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

#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");
	}
}

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

Добавлено: 18 дек 2015, 08:23
Сионист
Читать же тяжко. Начала блоков не сразу распознаются, концы вообще теряются. Ладно ещё подсветка, но при таком оформлении листинга вообще не понятно, зачем использован тег.

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

Добавлено: 25 дек 2015, 13:52
Din666

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

    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);