nixp.ru v3.0

22 января 2017,
воскресенье,
13:16:03 MSK

DevOps с компанией «Флант»
Kat написал 26 ноября 2013 года в 22:34 (1024 просмотра) Ведет себя неопределенно; открыл 5 тем в форуме, оставил 7 комментариев на сайте.

Здравствуйте помогите пожалуйста мне надо все нечетные строки матрицы сдвинуть циклически на К элементов влево. Знаю тут ужас но не получается помогите пожалуйста.

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

int **formMatr (int &n, int &m)

{

printf («\n enter — n  » ) ;

scanf («%d»,&n);

printf («\n enter — m  » ) ;

scanf («%d»,&m);

int **matr = new int *[n];

for (int i=0; i<n; i++)

matr=new int [m];

return matr;

}

int **formMatr2 (int **matr,int &n, int &m)

{

for (int i=0; i<n; i++)

for (int j=0; j<m; j++)

matr[j]=rand()%20;

return matr;

}

void print (int **matr, int n, int m)

{

for (int i=0; i<n; i++)

{

for (int j=0; j<m; j++)

printf («%7d »,matr[j]);

printf («\n» );

}

}

void per(int *i, int &m)

{

int left = i[0];

for(int j = 0; j < m; ++j)

i[j] = i[j + 1];

i[m — 1] = left;

}

void perevorot (int **matr, int &m, int &n)

{

int i;

int K,k;

printf («\nVvedte sdvig: »);

scanf («%d»,&k);

for(int i = 0; i < n; ++i){

if(!(i % 2) || i == 0)

for(int k = 0; k < K; ++k)

per(matr, n);

//std::cout << «\nrol’ed »;

}}

int main ()

{

int **matr;

//int **a;

int n,m,i;

matr=formMatr(n,m);

matr=formMatr2(matr,n,m);

print (matr,n,m);

per(i,n);

perevorot(matr,m,n);

print (matr,n,m);

for (int i=0; i<n; ++i)

delete [] matr ;

delete [] matr ;

system(«PAUSE»);

return 0;

}

rgo

Чем компилируем? Если gcc, то надо всенепременно в опциях компиляции проставить -Wall. Если это сделать, то gcc напишет, что в функции perevorot переменная K используется неинициализированной. Укажет на строчку:

for(int k = 0; k < K; ++k)

И всё потому, что scanf выше читает значение в k, а не в K.

Kat

Спасибо)

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.