Задание:
Дан двухмерный массив размерностью 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";
}
Здравствуйте, 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>
Здравствуйте, 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";
}
Повнимательней нужно быть, студент!
Хотел было модерировать сообщение, но посмотрев на то что пишет девушка сделал скидку.
Итак. у вас просто масса ошибок.
Ошибка номер 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. Потенциальная.
для сравнения константы и переменной части писать лучше константа == переменная. Поможет избежать случая когда по невнимательности поставили = вместо ==
Здравствуйте, nen777w, Вы писали:
N>Хотел было модерировать сообщение, но посмотрев на то что пишет девушка сделал скидку.
http://bash.org.ru/quote/56008