|
|
|
помогите начинающему программисту
|
|||
|---|---|---|---|
|
#18+
Задание: Уплотнить заданную матрицу,удаляя из неё нулевые столбцы и нулевые строки. Найти ошибку: #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; } Пожалуйста помогите :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 16:40 |
|
||
|
помогите начинающему программисту
|
|||
|---|---|---|---|
|
#18+
Думаю, что вряд ли кто-то найдёт ошибку в твоей проге. Поэтому совет таков:просто перепиши её ещё раз. По-моему у тебя она как-то усложнена...По мне, так после создания матрицы, нужно сначала прогнать указатель по столбцам и записать в некий массив столбцы с нулевыми элементами, а в другой строки. Потом удалить эти столбцы и строки,т.е сдвинуть все остальные на место нулевых. Допустим было n столбцов, m строк-делаем n--,m-- после каждого сдвига. Потом выводим то, что получилось. Может я не права, но так как-то проще... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 20:15 |
|
||
|
помогите начинающему программисту
|
|||
|---|---|---|---|
|
#18+
Ну для начала: Код: plaintext т.е. m - указатель на указатель/массив указателей типа int. Ok Код: plaintext 1. Тут без комментариев, всё понятно Код: plaintext Ага, определились что m - указатель на массив указателей типа int размерностью n, выделили памаять для m. Ok Код: plaintext 1. Ну а это тогда что за фигня? Теперь у нас m вдруг каким-то чудесным образом стал указателем на массив типа int размерностью n, так что ли получается? И что, компиллятор в этом месте не сказал Вам всё что он о Вас думает? Не верю. Должно было быть так: Код: plaintext 1. И это буквально первые пять строк Вашего кода... Тут об алгоритме и речь то не идёт, сделайте так чтобы у Вас сначала код прошёл компилляцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 21:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34566225&tid=2028774]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 461ms |

| 0 / 0 |
