![]() |
Помогите исправить (двумерный массив) на С++
Помогите подделать программу.
Задание: 1. Определить номер 1-го из столбцов, содержащих хотя бы один нулевой элемент. 2. Отсортировать строки по убыванию суммы ее отрицательных четных элементов. Первую часть я пыталась сделать, но выводит всегда "Номер столбца 0". Не понимаю где ошибка. Вот что получилось: #include <iostream.h> #include <iomanip.h> int main() { int nrow,K, ncol; cout<<"Vedite koli4estvo strok i stolbcov: "; cin>>nrow>>ncol; int i, j; int **a=new int *[nrow]; for (i=0; i<nrow; i++) a[i]=new int [ncol]; cout<<"Vvedite elementi massiva: "<<endl; for (i=0; i<nrow; i++) for (j=0; j<ncol; j++) cin>>a[i][j]; for (i=0; i<nrow; i++) { for (j=0; j<ncol;j++) cout<<setw(4)<<a[i][j]<<" "; cout<<endl;} int num=-1; for (j=0; j<ncol; j++) for (i=0; i<nrow; i++) { if (a[i][j]==0) { cout<<"Nomer stolbca: "<<j<<endl; break; } } if (num==-1) cout<<"Stolbcov net"<<endl; return 0; } |
Цитата:
Может для начала задать простой массив от 100 на 100 ? Для отладок лаб. вполне подойдет. Средства отладки есть? Отрассировать алгоритм можете? Чтобы не вбивать массивы каждый раз - "вшейте" несколько уже готовых наборов в программу. Если что закомментируйте, а перед сдачей - удалите лишние строки. Код:
for (i=0; i<nrow; i++) Так же полезно периодически распечатывать массив для сравнения "было"->"стало". Очень похоже на нарушение границ массива, но не уверен. Сейчас упрощу. > a = new int *[nrow] > a = int [nrow] А когда идут поиски, то они идут до i,j < ncol, norw т.е. массив получается "обрамлен" нулями. Сделайте предварительную распечатку массива. Можно в цикле проверки. Т.е. узнать, откуда прочитан нулевой элемент, должен ли он там быть и должен ли он быть прочитан. |
код работает и выводит номер столбца
тут Код:
int num=-1; и еще, в данной задаче не принципиально, но лучше выделенную память освобождать Код:
for (i = 0; i < nrow; i++) |
Время: 18:50. |
Время: 18:50.
© OSzone.net 2001-