Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Visual C++ / С/C++

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 08.01.2014, 16:10   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 19.03.2012
Сообщений: 1
Репутация: 0
По умолчанию Помогите перевести программу из С++ в Си

Добрый день.
В общем, есть задание:

Есть код на С++:
Код:
#include "windows.h"
#include "stdio.h"
#include "math.h"
#include <algorithm>
using namespace std;


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

int main(){
	int N;//Кол-во строк N(отсчёт от 1)
	int M;//Кол-во элементов M(отсчёт от 1)
	int EditNumber;//Насколько смещаем массив
	scanf("%d %d %d",&N,&M,&EditNumber);//вводим например "4 5 2"(как в примере)

	int **mass = new int*[N];
	for (int i = 0; i < N; i++) mass[i] = new int[M];
	/*Записываем в массивы наши числа*/
	for(int n=0; n<N;n++){
		printf("mass: %d\n",n);
		for(int m=0; m<M;m++){
			scanf("%d",&mass[n][m]);
		}
	}

	for(int n=0; n<N;n++){
		/*Находим id ячейки, где лежат макс и мин значения*/
		int max[2]={0,(-1*MaxNumber)};
		int min[2]={0,MaxNumber};//min[0] - id ячейки; min[1] - само число
		for(int m=0; 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
			std::rotate(mass[n],mass[n]+(M-EditNumber),mass[n]+M);

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

	for(int n=0; n<N;n++){
		printf("\nmass:%d = ",n);
		for(int m=0; m<M;m++){
			printf("%d ",mass[n][m]);
		}
	}

	system("pause");
	return 0;
}
Но проблема в том, что мне нужно тоже самое решение этой задачи, но только на Си (и желательно, чтобы все работало в Borland C++ builder).

Буду очень благодарен.

Р.S. Прошу прощения, если оформил не правильно.

Добавлено через 1 час 23 минуты
Как мне подсказали, вот что нужно сделать

исключить
Код:
#include <algorithm>
using namespace std;
переписать с использованием malloc() (кстати выделения памяти есть, а освобождения нет, использовать free())
Код:
int **mass = new int*[N];
for (int i = 0; i < N; i++) mass[i] = new int[M];
реализовать rotate самостоятельно.
Код:
std::rotate(mass[n],mass[n]+(M-EditNumber),mass[n]+M);
и максимальное значение unsigned int в большинстве случаев другое.
Но я не знаю как это сделать. Прошу помочь.
Rume вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: билл холдермэнкупить стол раскладной пластиковыйкресло подвесное купитьвешалки напольныевиктор салтыков концерт в нижнем новгороде


Старый 12.04.2015, 14:12   #2
zhord
Неактивный пользователь
 
Пол:Мужской
Регистрация: 12.04.2015
Сообщений: 1
Репутация: 0
По умолчанию Re: Помогите перевести программу из С++ в Си

Еще бы не мешало расширение файла поставить .c, вместо .cpp. После этого будет куча ошибок, которые Вам придется исправлять. В итоге, после исправления всего, у Вас получится программа на Си.
zhord вне форума
 
Ответить с цитированием Вверх
Старый 12.04.2015, 14: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 вне форума
 
Ответить с цитированием Вверх
Ответ

Опции темы
Опции просмотра

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите перевести текст на русский Frenk Архив 6 15.01.2013 00:30
Помогите перевести! kirillsas Скорая помощь 4 01.09.2009 13:25
Помогите перевести написанное на C# в C++ sercool Программирование 4 03.02.2008 23:32
Помогите перевести картинку в другой формат! rubin7 Архив 10 07.06.2007 14:35
Помогите перевести 2 страниц с Итальянского FoxMan Архив 9 29.06.2006 23:24

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:35. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.16099 секунды с 11 запросами