Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите исправить (двумерный массив) на С++

Ответить
Настройки темы
C/C++ - [решено] Помогите исправить (двумерный массив) на С++

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите подделать программу.
Задание: 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;
}

Отправлено: 21:32, 13-05-2012

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата Luda-tin:
int **a=new int *[nrow];
for (i=0; i<nrow; i++) a[i]=new int [ncol]; »
Как я понимаю - работа с указателями. Стоит ли?
Может для начала задать простой массив от 100 на 100 ? Для отладок лаб. вполне подойдет.

Средства отладки есть? Отрассировать алгоритм можете?
Чтобы не вбивать массивы каждый раз - "вшейте" несколько уже готовых наборов в программу. Если что закомментируйте, а перед сдачей - удалите лишние строки.
Код: Выделить весь код
for (i=0; i<nrow; i++)
  for (j=0; j<ncol; j++) a[i][j] = i+j+1 ;
например. Затем при выполнении задайте несколько нулей и смотрите что получится.
Так же полезно периодически распечатывать массив для сравнения "было"->"стало".

Очень похоже на нарушение границ массива, но не уверен. Сейчас упрощу.
> a = new int *[nrow]
> a = int [nrow]

А когда идут поиски, то они идут до
i,j < ncol, norw
т.е. массив получается "обрамлен" нулями.

Сделайте предварительную распечатку массива. Можно в цикле проверки. Т.е. узнать, откуда прочитан нулевой элемент, должен ли он там быть и должен ли он быть прочитан.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:03, 13-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


код работает и выводит номер столбца

тут
Код: Выделить весь код
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;
переменная num не меняет значения и поэтому постоянно выводит "Stolbcov net"

и еще, в данной задаче не принципиально, но лучше выделенную память освобождать
Код: Выделить весь код
for (i = 0; i < nrow; i++)
    delete[] a[i];
delete[] a;
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:53, 13-05-2012 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите исправить (двумерный массив) на С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Двумерный массив feytan Программирование и базы данных 0 14-04-2011 00:58
RAID - Помогите создать RAID-массив rezonrezon Накопители (SSD, HDD, USB Flash) 1 21-01-2011 05:36
C/C++ - Двумерный массив NAstyaT Программирование и базы данных 1 08-12-2010 00:38
C/C++ - [решено] Динамическая память под двумерный массив, где ошибка?) SeRgikON Программирование и базы данных 4 04-06-2010 18:31
Помогите создать здоровенный массив ! TimStich Программирование и базы данных 2 07-04-2004 21:43




 
Переход