Форум программистов, компьютерный форум CyberForum.ru

Разряженная матрица - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
legend
 Аватар для legend
28 / 27 / 0
Регистрация: 17.11.2010
Сообщений: 152
12.07.2011, 23:59     Разряженная матрица #1
Добрый вечер, можете посмотреть код программы на неточности , тупости и тп.

спс зарание за помощь.

задание - компактный вывод разряженной матрицы .
разряженная - это матрица в которой преймущественно нули. выводиться же все ненулевые - и под ними номер ее позиции.

Не по теме:

п.с. извените за корявый ввод матрицы =\ переделывал в позднее время.. так уж случилось



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include "iostream"
#include "conio.h"
#include <Windows.h>
 
 
 using namespace std;
 
 struct mas
 {
 int A;
 int LJ;
 int KK;
 mas *next;
 };
 
 
 int create(mas*, int*, int, int); 
 void print(mas*, int*, int, int);
 
 
 int main()
 {
 int m,n,num,*LI,k;
 mas *X;
 
 cout<<"Enter number of rows and columns: ";
 cin>>m>>n;
 X=new mas;
 LI=new int[m+1];
 
 cout<<endl<<"~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
 
 num=create(X,LI,m,n);
 
         cout<<"\nYour matrix:\n";
 print(X,LI,m,n);
 system ("pause");
 return 0;
 }
 
 
 
 
 
 int create(mas *X, int *LI, int m, int n)//функция создания матрицы
 {
 int i,j,num,k,f;
 mas *z=X,*p,*q, *lol;
 num=0;
 z->A=0;
 lol=z;
 p=z;
 q=z;
 
 cout<<"Enter your matrix:\n";
 for (i=0;i<m;i++)
 {
         f=0;
         for (j=0;j<n;j++)
         {
             cin>>k;
             if (k!=0) 
             {
                 if (f==0)
                 {
                     LI[i]=num;
                     f=1;
                 }
 
 
                 if(!z->A) //если вводится самый первый элемент
                 {
                     z->A=k;
                     z->LJ=j;
                     z->next=0;
                     z->KK = i;
                     num++;
                 }
                 else
                 {
                     z->next=new mas;
                     z=z->next;
                     z->A=k;
                     z->LJ=j;
                     z->next=0;
                     z->KK=i;
                     num++;
                 }
             }
         }
 
 } 
 cout<<"\n";
 while (p!=0)
 {
 cout<<p->A<<" "; //вывод ненулевых элементов
 p=p->next;
 }
 cout<<"\n j = \n";
 while (q!=0)
 {
 cout<<q->LJ<<" "; //вывод индекса j каждого ненулевого элемента
 q=q->next;
 }
 cout<<"\n i = \n"; // vivod  I pozicija
 while (lol!=0)
 {cout<<lol->KK<<" ";
 lol=lol->next;}
 cout<<"\n";
 LI[m]=num;
//for (i=0;i<=m;i++)
 //cout<<LI[i]<<" "; //вывод LI(местоположения 1 ненул. эл—та в каждой строке)
 return num;
 }
 
 void print(mas *X,int *LI, int m, int n) //функция вывода матрицы
 {
 mas *p;
 p=X;
 int i,j,k,f;
 for (i=0; i<m; i++)
 {
 f=LI[i+1]-LI[i]; // число ненулевых элементов в строке
 k=0;
 for (j=0; j<n; j++)
 if ((p->LJ==j)&&(k<f))
 {
 cout<<p->A<<" ";
 if(p->next) p=p->next;
 k++;
 }
 else cout<<"0 ";
 cout<<"\n";
 }
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2011, 23:59     Разряженная матрица
Посмотрите здесь:

C++ Разряженная Матрица
Дана разряженная ленточная матрица. Найти сумму её элементов. C++
Разряженная матрица C++
C++ Как создать Разряженная Ленточная матрица
Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) C++
Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) C++
C++ дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
13.07.2011, 00:36     Разряженная матрица
  #2

Не по теме:

Разреженная матрица

Yandex
Объявления
13.07.2011, 00:36     Разряженная матрица
Ответ Создать тему
Опции темы

Текущее время: 00:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru