Форум программистов, компьютерный форум, киберфорум
Наши страницы

Симметричная квадратная матрица - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ составить программу поиска двух строк http://www.cyberforum.ru/cpp-beginners/thread41655.html
Дана числовая таблица С размером N*N. Составить программу поиска двух строк по следующему алгоритму : одной - с минимальным значением среднего арифметического (SR), другой - с максимальным значением...
C++ перемещение в конец столбец в квадрвтной таблице В квадратной таблице В размером (N,N) переместить в конец столбец , у которого количество повторений элемента чаще других встречающегося максимально по сравнению с другими столбцами.Таблицу выдать на... http://www.cyberforum.ru/cpp-beginners/thread41654.html
Преобразовать массив так, чтобы между 0 ограничивающими первый отрезок, оказались элементы второго отрезка C++
"В последовательности А из N элементов каждую группу из рядом стоящих нулей заменить одним нулем . Среди отрезков последовательности , заключенных между парами оставшихся нулей , найти два: с...
Для матрицы а(n, n) найти обратную матрицу C++
Помогите пожалуйста с решением этих задач, а то я уже не знаю что с ними делать.... Задача 1 Для матрицы а(n, n) найти обратную матрицу. Вывести на печать нижнюю треугольную матрицу в...
C++ пара вопросов по GUI http://www.cyberforum.ru/cpp-beginners/thread41631.html
1) итак, посмотрел Inter PRO одного банка. При наборе в IE адреса он каким-то образом переадресует запущенному Inter PRO, он в свою очередь генерит запрос на сервак багка, с ключами там всякими,...
C++ Создать абстрактный класс И вот ещё одно.... ))) Тоже очень надо на завтра..... Это всё одно задание..... =) пожалуйста... :-[ Создать абстрактный класс Клиент с методами, которые позволяют вывести на экран... подробнее

Показать сообщение отдельно
Jiton
2 / 2 / 1
Регистрация: 09.12.2008
Сообщений: 14

Симметричная квадратная матрица - C++

23.06.2009, 20:52. Просмотров 1837. Ответов 4
Метки (Все метки)

"Симметричная квадратная матрица А порядка n задана последовательностью n(n+1)/2 чисел, аналогично правой треугольной матрице. Кроме этой последовательности дан вектор b с n элементами. Найти вектор Ab."

Есть решение похожей задачи суть её такая же, только элементы под главной матрицей равны нулю, а у меня матрица симметричная.

и уменя такая просьба можете ли пепредлать, или направьте на верный путь как заполнить симметричную матрицу.
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
 
char * r(char * txt)
{
 static char buf[1024];
 CharToOemA(txt,buf);
 return buf;
}
 
 
#pragma hdrstop
void vvodM(float*C,int k, int n);     
void vvod(float*C,int n);     
void func(float *, float *, float *C, int n, int k);
void vyvod(float *C, int n);                        
void kontrol(float *C, int k, int n);     
float zachita();
int zachita_int();
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{int n=0,k=0;
 float *A=NULL,*b=NULL,*Umn=NULL;        
 printf(r("Введите размерность матрицы А и вектора b  n="));
 n = zachita_int();//scanf("%d",&n);
 b=new float [n];             
 k=(n+1)*n/2;
 A=new float [k];             
 printf(r("\n Введите последовательность матрицы A:"));
 vvodM(A,k,n);
 printf(r("\n Введите вектор b:"));
 vvod(b,n);
 kontrol(A,k,n);           
 Umn=new float [n];           
 func(A,b,Umn,n,k);               
 vyvod(Umn,n);                    
 getch();
 delete [] A;
 delete [] b;                      
 delete [] Umn;
 return 0;
}
//---------------------------------------------------------------------------
void vvodM(float*C,int k, int n)
{int i=0,j=0,l=0;
 
for(i=0;i<k;i++)
{
printf("\n An [%d][%d]=",j,l);l++; //ввод матрицы
if(l==n) {l=0;j++;l=j;}
C[i]=zachita();
//scanf("%f",&C[i]);
 
}
}
 
void vvod(float*C,int n)
{int i=0;
for(i=0;i<n;i++)
{
printf("\n b [%d]=",i);//ввод вектора
C[i]=zachita();
//scanf("%f",&C[i]);
}
}
 
void func(float *A, float *b, float *C, int n, int k)  // решение
{int i=0,j=0,l=0,n1=0;
 float sum=0;
 for(l=0;l<n;l++)
 {
 
     for (j=l;j<n;j++)          
        {sum += A[i++]*b[j];    
        }
     C[l]=sum;sum=0;
 }
}
 
void vyvod(float *C, int n) // вывод вектора Аb
{int i=0;
 printf(r("\n\nВектор Ab:\n"));
 for(i=0;i<n;i++)
 {printf("\n Ab[%d]=%f",i,C[i]);     
   }
}
 
void kontrol(float *C, int k, int n) // вывод матрицы
{int i=0,j=0,l=0;
printf(r("\nВы ввели матрицуу:\n"));
 do{
     for (i=0;i<n;i++)
       {printf("\n");
        for (j=0;j<n;j++)
            {if(j>=i) {printf("\t%0.3f",C[l]);l++;}
             else {printf("\t %d",0);}}
      }
   }while(l!=k);
}
 
float zachita()   // защита
 {
 float q;
 char x,a[6];
 for(int j=0;j<6;j++)
 {a[j]=NULL;}
 int i=0,k=0,g=0,t=0;
  do{x=getch();
  //printf("%d",&x);
   if(x>=48 && x<=57 && i<(t+3))
    {printf("%c",x);
    a[i]=x;
    i++;}
//----------------------------
    if(i!=0){if(x==8)
    {printf("%c %c",8, 8);
    i--;if(g==i){k=0;g=0;}
    a[i]=0;
    }}
//----------------------------
   if(x==45 && i==0)
    {printf("%c",x);
    a[i]=x;
    i++;g++;t=g;}
//-------------------------------
    if(k==0)
    {if(x==46)
    {printf("%c",x);
    a[i]=x;g=i;t=(g+1);
    i++;
    k=1;}}
 
   }while(x!=13);
   q=atof(a);
    return q;
}
 
  int zachita_int()
 {int q;
 char x,a[3];
 int i=0;
  do{x=getch();
   if(x>=48 && x<=57 && i<4 )
   {printf("%c",x);
    a[i]=x;
    i++;}
    if(i!=0){if(x==8)
    {printf("%c %c",8, 8);
    i--;
    a[i]=0;} }
   }while(x!=13);
   q=atof(a);
  return q;
  }
Добавлено через 1 час 41 минуту 46 секунд
смысл такой , допустим вводм симметричную
матрицу А и вектор b
1 2 3 4
2 4 5 5
3 5 6

Добавлено через 3 минуты 23 секунды
Как записать Симметричную квадратную матрицу???

Добавлено через 3 часа 46 минут 16 секунд
Up
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru