Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2009, 18:20   #1
klepan
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 32
По умолчанию Помогите пожалуста с заданием

Необходимо уплотнить (заархивировать) заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Найти номер первой из строк, содержащих хотя бы один положительный элемент. Предусмотреть возможность разархивирования матрицы.
Заранее спасибо
klepan вне форума Ответить с цитированием
Старый 07.06.2009, 18:26   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Чем помочь? Где ваши наработки?
Показывайте код или задавайте конкретные вопросы. Иначе тема закроется.

Читать это и это.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.06.2009, 19:11   #3
klepan
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 32
По умолчанию

Код:
#include <iostream.h>
void main()
{
int i,j,n,m,t,k,nb;

///////////////////////////создаем 2 матрицы и вводим числа
double **a,**b;
cin>>n>>m;
a=new double *[n];
b=new double *[n];
for(i=0;i<n;i++)
{
a[i]=new double [m];
b[i]=new double [m];
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
/////////////////////////////////этап 1, проверяем строки матрицы a и записываем в матрицу b
for(i=0,k=0;i<n;i++)
{
    t=0;
    for(j=0;j<n;j++)
    {
        if(a[i][j])
        {
            t=1;
            break;
        }
    }
    if(t)
    {
        for(j=0;j<m;j++)
        b[k][j]=a[i][j];
        k++;
        nb=k;/////////сколько строков получилось
    }
}

/////проверяем, если получилось меньше строков, чем в исходной матрице, удаляем последние строки
for(;k<n;k++)
delete [] b[k];
///////////////////////////освобождаем память под матрицу a(больше не нужен)
for(i=0;i<n;i++)
delete [] a[i];
delete [] a;
///////////////////////////создаем новую матрицу a, с новыми данными(число строк, столбцов)
a=new double *[nb];
for(i=0;i<nb;i++)
a[i]=new double [m];
///////////////////////////этап 2, проверяем столбцы матрицы b, и записываем в матрицу a
for(j=0,k=0;j<m;j++)
{
    t=0;    
    for(i=0;i<nb;i++)
    {
        if(b[i][j])
        {
            t=1;
            break;
        }
    }
    if(t)
    {
        for(i=0;i<nb;i++)
        a[i][k]=b[i][j];
        k++;
        n=k;
    }
}

////////////////////////////////////////печатаем полученную матрицу а
for(i=0;i<nb;i++)
{
    for(j=0;j<n;j++)
    cout<<a[i][j]<<" ";
    cout<<endl;
}

////////////////////////////////////////освобождаем память
for(i=0;i<nb;i++)
delete [] a[i];
delete [] a;
for(i=0;i<nb;i++)
delete [] b[i];
delete [] b;
}
Модератор: тег CODE

Последний раз редактировалось Sazary; 07.06.2009 в 19:16.
klepan вне форума Ответить с цитированием
Старый 07.06.2009, 19:19   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну так нулевые строки и столбцы удаляются. В чем вопрос-то?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.06.2009, 22:44   #5
klepan
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 32
По умолчанию

неработает
klepan вне форума Ответить с цитированием
Старый 07.06.2009, 23:21   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от klepan
не работает
Если вы считаете свой ответ информативным, то я вам точно не смогу помочь.

Исходная матрица:
Код:
1 2 0 3
0 0 0 0
1 2 0 3
1 2 0 3
Результат:
Код:
1 2 3
1 2 3
1 2 3
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.06.2009, 14:02   #7
klepan
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 32
По умолчанию

мне нужно сделать так, что бы выводило запрос для ввода матрицы и нужно найти номер первой из строк, содержащих хотя бы один положительный элемент. А так же предусмотреть возможность разархивирования матрицы.
klepan вне форума Ответить с цитированием
Старый 08.06.2009, 14:14   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от klepan
мне нужно сделать так, что бы выводило запрос для ввода матрицы
Ну так добавьте вывод какой-нибудь фразы перед вводом.
Цитата:
Сообщение от klepan
и нужно найти номер первой из строк, содержащих хотя бы один положительный элемент.
А в чем проблема?
Цитата:
Сообщение от klepan
А так же предусмотреть возможность разархивирования матрицы.
Аналогичный вопрос. Вам нужно где-то сохранять номера удаленных столбцов и строк.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.06.2009, 16:31   #9
klepan
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 32
По умолчанию

нужно сделать так чтобы программа предлогала ввести количество строк и столбцов в массиве, а так же ввод самих элементов массива в строку или в столбец. А затем выводила на экран сформированный массив. Как это сделать я не понимаю ((
klepan вне форума Ответить с цитированием
Старый 08.06.2009, 16:38   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от klepan
нужно сделать так чтобы программа предлогала ввести количество строк и столбцов в массиве, а так же ввод самих элементов массива в строку или в столбец. А затем выводила на экран сформированный массив.
Вообще-то, это и так есть. Или вы вышеприведенный код даже не запускали? Догадываюсь, что писали его не вы.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с заданием vvqwert Microsoft Office Excel 1 09.01.2009 16:19
помогите с заданием slim5 Помощь студентам 1 18.06.2008 08:50
Помогите с заданием... flait111 Помощь студентам 4 14.12.2007 16:49