Собственно сама программа:
#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;
}
Как мне подсказали, вот что нужно сделать:
исключить
#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 в большинстве случаев другое.
Но я не знаю как это сделать. Прошу помочь.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.