Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с циклом, Происходит проскакивание одного элемента 
:(
    Опции темы
mks2
Дата 26.8.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.8.2006

Репутация: нет
Всего: нет



Программа отображает единичную матрицу любого порядка (например 3 3), результат должен быть:

1 0 0 
0 1 0
0 0 1 


а выводится резултат :

0 0 0
0 1 0
0 0 1

Почему так происходит???

Вот текст программы:



#include <stdio.h>
#include <iostream.h>
#include <iomanip.h>
int main()
{
    
    int nrow,ncol;
    cout <<"Vvedite kol-vo razmer matricu (naprimer 3 3):";
    cin>>nrow>>ncol;
    int i,j;
    nrow=ncol;
    int **a=new int *[nrow];
    
    for (i=0;i<nrow;i++)
        a[i]=new int [ncol];
    
    for (i=0;i<nrow;i++)
        for(j=0;j<ncol;j++)
            a[i][j]=0;
    
    for (i=0;i<nrow;i++) 
        {
            for(j=0;j<ncol;j++)
                {
                if (i=j) a[i][j]=1; 
                else if (i=!j) a[i][j]=0;
//                    cout <<   setw(nrow)  <<a[i][j]<< " ";
                }
//            cout << endl;
        }
            
     for (i=0;i<nrow;i++)
        {
            for(j=0;j<ncol;j++)    
                cout <<   setw(nrow)  <<a[i][j]<< " ";
            cout << endl;
        }
    return 0;
}

PM MAIL   Вверх
rMaveric
Дата 26.8.2006, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



1.
Код

if (i=j) a[i][j]=1; 
                else if (i=!j) a[i][j]=0;



Произнеси что здесь у тебя записано.

2. Используй подсветку синтаксиса
3. Пересмотри алгоритм 


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Mayk
Дата 26.8.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Во-первых пользуемся кнопкой код.

Во-вторых не надо путать присваивание
Цитата(mks2 @  26.8.2006,  12:39 Найти цитируемый пост)
                if (i=j) a[i][j]=1; 

со сравнением (i==j)

и вот тут
Цитата(mks2 @  26.8.2006,  12:39 Найти цитируемый пост)
else if (i=!j) a[i][j]=0;

наверное имелось в виду i!=j.

В третьих циклов многовато.
Код

for(int row=0; row < nrow;++row){
  for(int col=0; col < ncol;++col){
      a[row][col] =  (row == col);
  }
}

построит единичную матрицу.

Добавлено @ 08:53 
Ну вот, rMaveric меня опередил.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
rMaveric
Дата 26.8.2006, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



На мой взгляд подобное формирование матрицы было бы более логичным
Код

for (i=0; i < irow; i++)
    for (j=0; j < irow; j++)
        a[i][j] = i == j ? 1 : 0;




--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Oleg_Ci
Дата 26.8.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Это я просто экпериментирую smile 
Код

#include <stdio.h>
#include <iostream.h>

int main()
{

    int nrow, i;
    cout << "Vvedite kol-vo razmer matricu (1 naprimer):";
    cin >> nrow;
    int * a = new int [ nrow * nrow ];

    for ( i=0; i < nrow * nrow; i++ )
    {
        a[i] = (i%(nrow+1)) ? 0 : 1;
        cout << a[i] << " ";
        if ( !((i+1)%nrow)) cout << endl;
    }

  delete [] a;
  system("pause");
  return 0;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0948 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.