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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста написать программу... Программа на С++  
:(
    Опции темы
Kupullko
Дата 24.6.2015, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем добрый день, если не по теме извините, ребят выручите пожалуйста написал программу, а в ней ошибка, не могу понять как исправить помогите..
Вот условие:
в двумерном массиве , элементы которого целые числа сделать следующие: уплотнить массив удалив из него все нулевые строки и столбцы.
Вот что я сделал:
#include <iostream>
using namespace std;
int **creat(int &n, int &m)
{ cout « "n="; cin » n;
 cout « "m="; cin » m;
 int **t = new int *[n];
 for (int i = 0; i<n; i++) t[i] = new int[m];
 for (int i = 0; i<n; i++)
 for (int j = 0; j<m; j++)
 {cout « "t[" « i « "][" « j « "]="; cin » t[i][j];}
 return t;}

void print(int **t, int n, int m)
{ for (int i = 0; i<n; i++, cout « endl)
 for (int j = 0; j<m; j++)
  cout « t[i][j] « ";\t";}

void deleteA(int **t, int n)
{ for (int i = 0; i<n; i++) delete[]t[i];
 delete[]t;}

int main()
{ int n, m,i1,j1,k;
 int **t = creat(n, m);
 print(t, n, m);
 for (int i = 0; i<n; i++)

 {k=0;  for (int j = 0; j<m; j++) 
 if (t[i][j])==0) k++;
 if (k==m) 
  {for (int i = i1; i<n-1; i++)
    for (int j = j1; j < m - 1; j++)
     t[i][j] = t[i + 1][j + 1];
    m--;
    i--:
    print(t, n, m);}
   deleteA(t, n);
   system("pause");
   return 0;}
Ошибка: цыкл инт мэйн не провильный в нем ошибки
Спасибо вам ребят надеюсь на вашу помощь..!!!
PM MAIL   Вверх
feodorv
Дата 24.6.2015, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Откуда взялись i1 и j1???
Цитата(Kupullko @  24.6.2015,  09:05 Найти цитируемый пост)
for (int i = i1; i<n-1; i++)
    for (int j = j1; j < m - 1; j++)
     t[i][j] = t[i + 1][j + 1];

Если бы было так:
Код

for (int i1 = i; i1<n-1; i1++)
    for (int j1 = j; j1 < m - 1; j1++)
     t[i1][j1] = t[i1 + 1][j1 + 1];[/quote]
то я бы ещё понял...


И всё же. Вам сначала нужно удалить нулевые строки, потом удалить нулевые столбцы. Вы же пытаетесь сделать это как бы одновременно, что приводит к хаосу в матрице.


И когда Вы копируете нижележащую строку на текущую, не нужно отсчитывать от j, а нужно начинать с 0-го элемента (Вы же всю строку копируете, а не её часть), соответственно не нужно делать j1+1 и m-1:
Код

for (int i1 = i; i1<n-1; i1++)
    for (int j1 = 0; j1 < m; j1++)
       t[i1][j1] = t[i1+1][j1];


Добавлено через 2 минуты и 17 секунд
Цитата(Kupullko @  24.6.2015,  09:05 Найти цитируемый пост)
    m--;

Когда Вы удалили одну нулевую строку, у Вас уменьшается число строк n, а не столбцов m...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Kupullko
Дата 24.6.2015, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я исправил, и что то все равно не работает..


int main()
{    int n, m,i1,j1,k;
    int **t = creat(n, m);
    print(t, n, m);
    for (int i = 0; i<n; i++)

    {k=0;    for (int j = 0; j<m; j++)    
    if (t[i][j]==0) k++;
    if (k==m-1) 
     for (int i1 = i; i1<n-1; i1++)
                for (int j1 = j; j1 < m - 1; j1++)
                    t[i1][j1] = t[i1 + 1][j1 + 1];
                n--;
                i--;
                print(t, n, m);}
            deleteA(t, n);
            system("pause");
            return 0;}
PM MAIL   Вверх
feodorv
Дата 25.6.2015, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(Kupullko @  24.6.2015,  11:49 Найти цитируемый пост)
я исправил, и что то все равно не работает

А это?
Цитата(feodorv @  24.6.2015,  10:38 Найти цитируемый пост)
И когда Вы копируете нижележащую строку на текущую, не нужно отсчитывать от j, а нужно начинать с 0-го элемента (Вы же всю строку копируете, а не её часть), соответственно не нужно делать j1+1 и m-1:
    
for (int i1 = i; i1<n-1; i1++)
    for (int j1 = 0; j1 < m; j1++)
       t[i1][j1] = t[i1+1][j1];

???


Цитата(Kupullko @  24.6.2015,  11:49 Найти цитируемый пост)
    if (k==m-1) 

Откуда вдруг -1 появилось?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Kupullko
Дата 25.6.2015, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все ровно не помогает:(
PM MAIL   Вверх
rudolfninja
Дата 25.6.2015, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Kupullko @  25.6.2015,  09:57 Найти цитируемый пост)
Все ровно не помогает:( 

Покажите, что получилось (какой код) на выходе.
И, пожалуйста, используйте теги для вставки кода. 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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