2013-12-08 2 views
1

Я пытаюсь создать программу, которая печатает массив. Я хочу, чтобы выход этой программы был следующим:Попытка печати массива ничего не печатает

10000 
00000 
00000 
00000 
00000 

Это не то, что происходит. Вместо этого он просто ничего не печатает. Ошибок компиляции нет. У меня есть Microsoft Visual Studio 2010.

#include "stdafx.h" 
#include <iostream> 
int main() 
{ 
    using namespace std; 
    int a [5] [5] = {0}; 
    a [1] [1] = 1; 
    int xcount = 0; 
    int ycount = 0; 
    while(xcount < 6); 
    { 
     cout << a [xcount] [ycount]; 
     xcount = xcount + 1; 
     if(xcount = 6) 
     { 
      ycount = ycount + 1; 
      xcount = xcount + 1; 
      if(ycount = 6) 
      { 
       exit(0); 
      } 
     } 
    } 
    return 0; 
} 

Любая помощь будет оценена по достоинству.

+1

Пожалуйста, открепите свой код. Его легче читать. – KeithSmith

+0

Прошли ли вы через код в отладчике? – edtheprogrammerguy

+0

Я не помню, будет ли '{0}' инициализировать весь массив или только первый элемент. Вы должны проверить это, используя отладчик. – KeithSmith

ответ

2

Если Я правильно понял, что вы пытаетесь вывести массив по столбцам. Ваш код содержит много ошибок, включая точку с запятой в конце инструкции while. Правильная программа может выглядеть следующим образом

#include "stdafx.h" 
#include <iostream> 

int main() 
{ 
    const size_t N = 5; 
    int a[N][N] = { 1 }; 

    int xcount = 0; 
    int ycount = 0; 

    while (true) 
    { 
     std::cout << a[xcount][ycount]; 

     if (++xcount == N) 
     { 
      std::cout << std::endl; 
      xcount = 0; 

      if (++ycount == N) 
      { 
       break; 
      } 
     } 
    } 

    return 0; 
} 
+0

, который решил мою проблему, спасибо – APCoding

0

Удалите точку с запятой:

while (xcount<6); 

Кроме того, алгоритм неправильно. Заменить второй

xcount=xcount+1; 

от

xcount=0; 

P.S. для цикла было бы лучше здесь. Это было бы намного более чистым, так как вы знаете диапазон петель:

for (int ycount=0; ycount<6; ++ycount) 
{ 
    for (int xcount=0; xcount<6; ++xcount) 
     cout << a[xcount][ycount]; 
    cout << endl; 
} 

Обратите внимание, что в оригинальном решении нет разделителей строк.

P.P.S. используйте == в сравнении.

+0

Тогда, где бы xcount изменилось? Вам нужно изменить его, чтобы переместиться слева направо. – APCoding

+0

Есть два шага xcount, сначала правильно, а второе нет. – nyrl

+0

Петля while также неверна, но она будет завершена if (ycount = 6) {exit (0); } (при условии наличия двух равных знаков) – nyrl

1
if (xcount=6) // This sets xcount to 6 

изменить что:

if (xcount==6) // this compares xcount with 6 

Edit теперь, что; вернулся в вопрос:

Имея while(xcount < 6); будет цикл infinately, поскольку ничего не меняется xcount - удалить ;

0

Вы должны использовать цикл вместо пока Попробуйте это:

for(int xcount=0; xcount<5; xcount++) 
{ 
     for(int ycount=0; ycount<5; ycount++) 
     { 
       cout<< a[xcount][ycount]; 
     } 
     cout<<endl; 
} 
a[0][0] = 1; 
Смежные вопросы