Двумерные массивы
От: sukhenko  
Дата: 23.01.09 07:46
Оценка:
Задание:
Дан двухмерный массив размерностью 3X4. Необходимо найти количество элементов значение которых равно нулю.
При реализации данного кода выводится «N=0», несмотря на присутствие нескольких нулей в сгенерированном массиве. В чем моя ошибка?
#include <iostream>
#include <stdlib.h>
#include<time.h>
using namespace std;
void main ()
{
srand (time(NULL));
const int row=3;
const int col=4;
int nul [row] [col];
int n=0;
for (int i=0;i<row;i++)
{
for (int j=0;j<col;j++)
{
nul [row] [col]= rand()%10;
cout<<nul[row][col]<<" ";
}
cout<<"\n\n";
}
cout<<"\n\n\n";

for (int i=0;i<row+1;i++)
{
for (int j=0;j<col+1;j++)
{
if (nul[i][j]==0)
{
n++;
}
}
}
cout<<"N="<<n<<"\n";
}

Re: Двумерные массивы
От: Sashaka Россия  
Дата: 23.01.09 08:05
Оценка:
Здравствуйте, sukhenko, Вы писали:

S>Задание:

S>Дан двухмерный массив размерностью 3X4. Необходимо найти количество элементов значение которых равно нулю.
S>При реализации данного кода выводится «N=0», несмотря на присутствие нескольких нулей в сгенерированном массиве. В чем моя ошибка?
S>#include <iostream>
S>#include <stdlib.h>
S>#include<time.h>
S>using namespace std;
S>void main ()
S>{
S> srand (time(NULL));
S> const int row=3;
S> const int col=4;
S> int nul [row] [col];
S> int n=0;
S> for (int i=0;i<row;i++)
S> {
S> for (int j=0;j<col;j++)
S> {
S> nul [row] [col]= rand()%10;// ты пишешь все за границу массива (правильно: nul [i] [j])
S> cout<<nul[row][col]<<" ";
S> }
S> cout<<"\n\n";
S> }
S> cout<<"\n\n\n";

S> for (int i=0;i<row+1;i++) // и тут цикл тоже за границу массива выходит (правильно: i<row)

S> {
S> for (int j=0;j<col+1;j++) //и тут цикл тоже за границу массива выходит (правильно: j<col)
S> {
S> if (nul[i][j]==0)
S> {
S> n++;
S> }
S> }
S> }
S> cout<<"N="<<n<<"\n";
S>}

S>
Re: Двумерные массивы
От: Mager Украина  
Дата: 23.01.09 08:11
Оценка:
Здравствуйте, sukhenko, Вы писали:

Вообще то так нужно:

#include <iostream>
#include <stdlib.h>
#include<time.h>
using namespace std;
void main ()
{
    srand (time(NULL));
    const int row=3;
    const int col=4;
    int nul [row] [col];
    int n=0;
    for (int i=0;i<row;i++)
    {
        for (int j=0;j<col;j++)
        {
            nul [i] [j]= rand()%10;
            cout<<nul[i][j]<<" ";
        }
        cout<<"\n\n";
    }
    cout<<"\n\n\n";

    for (int i=0;i<row;i++)
    {
        for (int j=0;j<col;j++)
        {
            if (nul[i][j]==0)
            {
                n++;
            }
        }
    }
    cout<<"N="<<n<<"\n";
}


Повнимательней нужно быть, студент!
Re: Двумерные массивы
От: nen777w  
Дата: 23.01.09 08:22
Оценка:
Хотел было модерировать сообщение, но посмотрев на то что пишет девушка сделал скидку.

Итак. у вас просто масса ошибок.
Ошибка номер 1, пожалуй самая грубая. Гласит она вот что! При вставке кода в RSDN используй теги!!!
code или ccode они есть на форме для написания сообщений.

Ошибка номер 2 неправильная адресация по массиву:

    for (int i=0;i<row;i++)
    {
        for (int j=0;j<col;j++)
        {
            nul[i][j] = rand()%10;
            cout<<nul[i][j]<<" ";
        }
        cout<<"\n\n";
    }


Логическая ошибка номер 3. Есть вероятность что при помощи rand()%10 можете и не получить 0.

Ошибка номер 4. Выход за пределы массива, +1 ненужно.

for (int i=0;i<row;i++)
{
  for (int j=0;j<col;j++)
  {
   if (0 == nul[i][j])
   {
     n++; 
   }
  }
}



Ошибка номер 5. Потенциальная.
для сравнения константы и переменной части писать лучше константа == переменная. Поможет избежать случая когда по невнимательности поставили = вместо ==
Re[2]: Двумерные массивы
От: neFormal Россия  
Дата: 23.01.09 09:27
Оценка: :)))
Здравствуйте, nen777w, Вы писали:

N>Хотел было модерировать сообщение, но посмотрев на то что пишет девушка сделал скидку.


http://bash.org.ru/quote/56008
...coding for chaos...
Re[2]: Двумерные массивы (Флейм)
От: Vamp Россия  
Дата: 27.01.09 20:32
Оценка: 1 (1) +1
N>для сравнения константы и переменной части писать лучше константа == переменная. Поможет избежать случая когда по невнимательности поставили = вместо ==
A вот здесь не соглашусь. Компиляторы тут ворнинг сделают, а запись переменная == константа более наглядна.
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.