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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двумерный массив 
V
    Опции темы
Studeht
Дата 29.4.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, господа эксперты! Требуется помощь в решение следующей задачи:Вычеркнуть из матрицы i-е строки и j-е столбцы, удовлетворяющие условию:  i*j = z Вот я решил вычеркнуть эти столбцы и строки обнулив их элементы. Вот код:
Код

#include <iostream.h>
#include <conio.h>
#define  MaxSize 15

void main()
{
        int Mas[MaxSize][MaxSize];
        int m,n,z,i,j,k;
        clrscr();
        do {
        cout<<"Введите число строк матрицы ";
        cin>>m;
        cout<<"Введите число столбцов матрицы ";
        cin>>n;
           }
        while (m<2 && n<2 && m>MaxSize && n>MaxSize);
        cout<<"Введите Z=";
        cin>>z;
        cout<<"Введите "<<m*n<<" элементов матрицы ";
        for (i=0; i<m; i++)
        {
          for (j=0; j<n; j++)
            cin>>Mas[i][j];
        }
        cout<<endl;
        clrscr();
         for (i=0; i<m; i++)
           for (j=0; j<n; j++)
             if (i*j==z)
             {
               cout<<endl;
               for (k=0; k<m; k++)
                 Mas[i][k]=0;
               for (k=0; k<n; k++)
                 Mas[k][j]=0;
             }
             for (i=0; i<m; i++)
             {
               for (j=0; j<n; j++)
               cout<<Mas[i][j]<<" ";
               cout<<"\n";
             }
             getch();
}

Программа работает, но не совсем правильно и я не могу понять где моя ошибка. Вот например: если ввести матрицу 
Код

1 2 3
4 5 6
7 8 9

И ввести z=4, то должно выводить следующее:
Код

1 0 3
0 0 0
7 0 9

А выводит вот так:
Код

1 2 0
4 5 0
7 8 0

Помогите найти ошибку в программе smile  Заранее огромное спасибо!
PM MAIL   Вверх
zim22
Дата 29.4.2009, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(Studeht @  29.4.2009,  17:39 Найти цитируемый пост)
Помогите найти ошибку в программе

помогите себе сами. у вас есть в среде разработки возможность пошаговой отладки программы? (Debug)


--------------------
PM MAIL   Вверх
Studeht
Дата 29.4.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

у вас есть в среде разработки возможность пошаговой отладки программы?

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


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(Studeht @  29.4.2009,  18:03 Найти цитируемый пост)
Да есть!

так почему вы ей не пользуетесь? в режиме Debug вы пошагово увидите работу вашей программы и найдёте ошибки.


--------------------
PM MAIL   Вверх
Toxyrain
Дата 29.4.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Эм, ты забыл что счет в цикле фор да и нумерация эл-в в С начинается с нуля в итоге у тебя все правильно считает i=2 и j=2 будут в 3-м столбце а не в среднем в среднем будет 1 и 1

Добавлено @ 18:17
Эм, ты забыл что счет в цикле фор да и нумерация эл-в в С начинается с нуля в итоге у тебя все правильно считает i=2 и j=2 будут в 3-м столбце а не в среднем в среднем будет 1 и 1
Код

#include <iostream>
#define  MaxSize 15
 using namespace std;
int main()
{
        int Mas[MaxSize][MaxSize];
        int m,n,z,i,j,k;

        do {
        cout<<"Введите число строк матрицы ";
        cin>>m;
        cout<<"Введите число столбцов матрицы ";
        cin>>n;
           }
        while (m<2 && n<2 && m>MaxSize && n>MaxSize);
        cout<<"Введите Z=";
        cin>>z;
        cout<<"Введите "<<m*n<<" элементов матрицы ";
        for (i=0; i<m; i++)
        {
          for (j=0; j<n; j++)
            cin>>Mas[i][j];
        }
        cout<<endl;
        for (i=0; i<m; i++)
           for (j=0; j<n; j++)
             if ((i+1)*(j+1)==z)
             {
               cout<<endl;
               for (k=0; k<m; k++)
                 Mas[i][k]=0;
               for (k=0; k<n; k++)
                 Mas[k][j]=0;
             }
             for (i=0; i<m; i++)
             {
               for (j=0; j<n; j++)
               cout<<Mas[i][j]<<" ";
               cout<<"\n";
             }
             getchar();
}





Это сообщение отредактировал(а) Toxyrain - 29.4.2009, 18:18
PM MAIL   Вверх
mes
Дата 29.4.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(zim22 @  29.4.2009,  17:08 Найти цитируемый пост)

так почему вы ей не пользуетесь? 

А это обязательно ? Я например практически  не пользуюсь пошаговой отладкой  smile 

Цитата(Studeht @  29.4.2009,  16:39 Найти цитируемый пост)
И ввести z=4, то должно выводить следующее:

не забывайте что у 2го столбца матрицы индекс равен 1, так что при 4х должен вывести

Код

1 2 0
4 5 0
0 0 0

и что то мне подсказывает, что именно это и выводится 
 smile

Добавлено через 1 минуту и 50 секунд
Цитата(Studeht @  29.4.2009,  16:39 Найти цитируемый пост)
        int m,n,z,i,j,k;

это плохая привычка объявлять переменные задолго до использования.
особенно это касается переменных цикла, которые желательно объявлять непосредственно в цикле
Код

for (int i; ...)



--------------------
PM MAIL WWW   Вверх
zim22
Дата 29.4.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(mes @  29.4.2009,  18:18 Найти цитируемый пост)
А это обязательно ? Я например практически  не пользуюсь пошаговой отладкой

значит вы в голове отлаживаете, или по-другому. отладка всё-равно есть, даже если её нет.


--------------------
PM MAIL   Вверх
Studeht
Дата 29.4.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо Вам огромное Toxyrain и mes. Я просто также изучаю Паскаль и привык, что там массив нумеруется с 1 а не с 0.
PM MAIL   Вверх
Toxyrain
Дата 29.4.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не за что =) Пометь тему решенной 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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