Показать сообщение отдельно
Старый 12.04.2015, 13:48   #3
zss
Постоялец
 
Пол:Мужской
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
По умолчанию Re: Помогите перевести программу из С++ в Си

Код:
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <math.h>

#define MaxNumber 65535//Макс значение, которое могут ввести(мы ограничиваемся размером unsigned int)

int main()
{
	int N;//Кол-во строк N(отсчёт от 1)
	int M;//Кол-во элементов M(отсчёт от 1)
	int EditNumber;//Насколько смещаем массив
	int **mass;
	int max[2],min[2];
	int i,n,m;
	scanf("%d %d %d",&N,&M,&EditNumber);//вводим например "4 5 2"(как в примере)
	mass = (int**)malloc(N*sizeof(int*));
	for (i = 0; i < N; i++) 
		mass[i] = (int*)malloc(M*sizeof(int));
	/*Записываем в массивы наши числа*/
	for(n=0; n<N;n++)
	{
		printf("mass: %d\n",n);
		for(m=0; m<M;m++)
		{
			scanf("%d",&mass[n][m]);
		}
	}

	for(n=0; n<N;n++)
	{
		/*Находим id ячейки, где лежат макс и мин значения*/
		max[0]=0;max[1]=mass[n][0];
		min[0]=0;min[1]=mass[n][0];//min[0] - id ячейки; min[1] - само число
		for(m=1; m<M;m++)
		{
			if(mass[n][m]<min[1])
			{
				min[1]=mass[n][m];
				min[0]=m;
			}
			if(mass[n][m]>max[1])
			{
				max[1]=mass[n][m];
				max[0]=m;
			}	
		}
		/*Сдвигаем если нужно наш массив*/
		if((int)fabs((float)(max[0]-min[0]))-1>1)//находим модуль разности и вычитам 1, если больше 1 смещаем массив направо на 2
		{
			for(int m=M-EditNumber-1;m>=0;m--)
				mass[n][m+EditNumber]=mass[n][m];
			//std::rotate(mass[n],mass[n]+(M-EditNumber),mass[n]+M);
		}

	}
	/*Выводим массивы*/
	printf("======RETURN======");

	for(n=0; n<N;n++)
	{
		printf("\nmass:%d = ",n);
		for(int m=0; m<M;m++)
			printf("%d ",mass[n][m]);
	}
	getch();
	return 0;
}
__________________
Сергей Сергеевич
zss вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.01896 секунды с 10 запросами