powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите начинающему программисту
3 сообщений из 3, страница 1 из 1
помогите начинающему программисту
    #34561962
poluska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задание: Уплотнить заданную матрицу,удаляя из неё нулевые столбцы и нулевые строки.
Найти ошибку:
#include <vcl.h>
#include <iostream>
#pragma hdrstop

using namespace std;

#pragma argsused
int main(int argc, char* argv[])
{
int n, **m, x, f,i,l,k,**m1,**m2;
cout<<"Enter n\n";
cin>>n;
m= new int*[n];
for (int i=0;i<n;i++)
m =new int[n];

m1=new int*[n];
for (int i=0;i<n;i++)
m1=new int[n];

m2=new int*[n];
for (int i=0;i<n;i++)
m2=new int[n];

for (int f=0;f<n;f++)
for(int x=0;x<n;x++){
cout<<"Enter elements "<<x<<f;
cin>>m[f][x];
}
l=0;
for (f=0;f<n;f++)
for (x=0;x<n;x++)
if (m[f][x]!=0)
{
for (i=0;i<n;i++)
m1[l]=m[f];
l++;
break;
}
k=0;
for (f=0;f<l;f++)
for (x=0;x<n;x++)
if (m[f][x]!=0)
{
for (i=0;i<l;i++)
m2[k]=m1[x];
k++;
break;
}

cout<<"\n\nMatrix:\n";
for(int f=0;f<n;f++)
{
for(int x=0;x<n;x++)
cout<<m[f][x]<<'\t';
cout<<'\n';
}
cout<<"\n\nMatrix:\n";
for(int f=0;f<k;f++)
{
for (int x=0;x<n;x++)
cout<<m1[f][x]<<'\t';
cout<<'\n';
}
cout<<"\n\nMatrix:\n";
for (int f=0;f<l;f++)
{
for (int x=0;x<n;x++)
cout<<m2[f][x]<<'\t';
cout<<'\n';
}
cin>>n;
return 0;
}
Пожалуйста помогите :)
...
Рейтинг: 0 / 0
помогите начинающему программисту
    #34566113
Comet@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, что вряд ли кто-то найдёт ошибку в твоей проге. Поэтому совет таков:просто перепиши её ещё раз. По-моему у тебя она как-то усложнена...По мне, так после создания матрицы, нужно сначала прогнать указатель по столбцам и записать в некий массив столбцы с нулевыми элементами, а в другой строки. Потом удалить эти столбцы и строки,т.е сдвинуть все остальные на место нулевых. Допустим было n столбцов, m строк-делаем n--,m-- после каждого сдвига. Потом выводим то, что получилось. Может я не права, но так как-то проще...
...
Рейтинг: 0 / 0
помогите начинающему программисту
    #34566225
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну для начала:

Код: plaintext
int n, **m, x, f,i,l,k,**m1,**m2;

т.е. m - указатель на указатель/массив указателей типа int. Ok

Код: plaintext
1.
cout<<"Enter n\n";
cin>>n;

Тут без комментариев, всё понятно

Код: plaintext
m= new int*[n];

Ага, определились что m - указатель на массив указателей типа int размерностью n, выделили памаять для m. Ok

Код: plaintext
1.
for (int i= 0 ;i<n;i++)
m=new int[n];

Ну а это тогда что за фигня? Теперь у нас m вдруг каким-то чудесным образом стал указателем на массив типа int размерностью n, так что ли получается? И что, компиллятор в этом месте не сказал Вам всё что он о Вас думает? Не верю. Должно было быть так:

Код: plaintext
1.
for (int i= 0 ;i<n;i++)
m[i]=new int[n];

И это буквально первые пять строк Вашего кода... Тут об алгоритме и речь то не идёт, сделайте так чтобы у Вас сначала код прошёл компилляцию.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите начинающему программисту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]