Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [c++] Массивы


Автор: neic 20.6.2010, 15:13
Задание:
Отсортировать квадратную матрицу размером n=n*2 по правилу:
Под главной диагональю (включая саму главную диагональ, т.е. i=j) по строкам начиная с n/2 и справа по столбцам начиная с n/2

Остальную часть матрицы заполнить 0.

Вот сделал заполнение, но программа зависает и все, матрицу не выводит, помогите найти ошибку.

Код

int main()
{
    int i,j,k=0;
    int n,m;
    cout << "Please enter n : ";
              cin >> n;
    cout << "Please enter m : ";
              cin >> m;    
    n = n * 2;
              m = m * 2;
    int mas[100][100];
    for (i=0;i<=n;i++){
            for (j=0;j<=m;j++){
                if(i == n/2) & (j == n/2);{
                    if (j<=i)
                        mas[i][j]=rand() % 10 + 1;
                    else
                        mas[i][j]=0;
                    cout << " " << mas[i][j];
                    k++;
                }
            }
        cout <<  "" <<"\n";
    }
    cout <<  k  << "\n";
    system("pause");
}

Автор: ИванМ 20.6.2010, 23:48
Цитата(neic @  20.6.2010,  15:13 Найти цитируемый пост)
 if(i == n/2) & (j == n/2);

Что вы хотели сказать этой строчкой?

Автор: neic 21.6.2010, 10:59
Это эксперимент был.
Там без разницы если я поставлю "==" или просто "=", все равно зависает. В примере увидел, что так можно. Видимо не удачный пример увидел.

Автор: ИванМ 21.6.2010, 17:32
neic, синтаксис оператора if:
if(условие) блок_кода
Блок кода может быть вида 
оператор;
или 
{
оператор1;
оператор2;
...
}
А что у вас написано совсем непонятно. Особенно как вообще такой код смог откомпилироваться.

Автор: neic 22.6.2010, 01:56
Чуть-чуть исправил, но проблема осталась:
Код

int main()
{
    int i,j,k=0;
    int n,m;
    cout << "Please enter n : ";
    cin >> n;
    cout << "Please enter m : ";
    cin >> m;    
    n = n * 2;
    m = m * 2;

    int mas[100][100];
    for (i=0;i<=n;i++){
            for (j=0;j<=m;j++){
                mas[i][j]=0;
                if ((i = n/2) & (j = n/2)){
                    if (j<=i)
                        mas[i][j]=rand() % 10 + 1;
                    else
                        mas[i][j]=0;
                    cout << " " << mas[i][j];
                    k++;
                }
            }
        cout <<  "" <<"\n";
    }
    cout <<  k  << "\n";
    system("pause");
}

Автор: ИванМ 22.6.2010, 12:47
Код

 if (i == n/2 && j == n/2)

Но ваш алгоритм все равно неправильный.

Автор: neic 22.6.2010, 14:51
ИванМ
алгоритм ладно с ним, в VB6 у меня уже все есть готовое, нужно только перевести все это в код С++

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)