Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | 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; } Буду очень благодарен. Р.S. Прошу прощения, если оформил не правильно. Добавлено через 1 час 23 минуты Как мне подсказали, вот что нужно сделать исключить Код:
#include <algorithm> using namespace std; Код:
int **mass = new int*[N]; for (int i = 0; i < N; i++) mass[i] = new int[M]; Код:
std::rotate(mass[n],mass[n]+(M-EditNumber),mass[n]+M); Но я не знаю как это сделать. Прошу помочь. |
Реклама: | Рекомендуем супермаркет - PSD416G320082 - более 50-ти тысяч наименований товаров со склада в Москве | столы барные | переход с dikidi на yclients | Conecte Constant Contact a Studiocart | Отличное предложение в КНС Нева - DS1522+ - корпоративные поставки в Санкт-Петербурге. |
12.04.2015, 14:12 | #2 |
Неактивный пользователь
Пол: Регистрация: 12.04.2015
Сообщений: 1
Репутация: 0
|
Re: Помогите перевести программу из С++ в Си
Еще бы не мешало расширение файла поставить .c, вместо .cpp. После этого будет куча ошибок, которые Вам придется исправлять. В итоге, после исправления всего, у Вас получится программа на Си.
|
12.04.2015, 14:48 | #3 |
Постоялец
Пол: Регистрация: 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; }
__________________
Сергей Сергеевич |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите перевести текст на русский | 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 |
|
|