МАКС написав:привет, Вась мені ця прога видає помилку
умова:
симетричну квадратну матрицю А порядку n задано у вигляді послідовності n(n+1)/2 чисел подібно до верхньої трикутної матриці. Визначити А*А*А;
В тебе дуже заплутаний код .
http://radfiz.org.ua/sos/q/1301629698.txt
- Код: Виділити все
#include <iostream>
#include <cstdlib>
#include <stdio.h>
//симетричну квадратну матрицю А порядку n задано у вигляді послідовності
// n(n+1)/2 чисел подібно до верхньої трикутної матриці. Визначити А*А*А;
using namespace std;
int input(int q, int w, int v, int s[] )
{
for(q = 0; q < w; q++)
{
cin >> v;
s[q] = v;
}
}
/////////////////////////////
int set_matrix(int* matr1, int m, int s[])
{
int q = 0;
for(int i = 0; i < m; i++) //задаємо трикутну марицю.
{
for(int j = i; j < m; j++)
{
*(matr1+i*m+j)=s[q];
*(matr1+j*m+i)=s[q];
// matr1[i][j] = s[q]; // задаємо рядки.
// matr1[j][i] = s[q]; // задаємо .
q++;
}
}
}
void MnojMartixMas(int *A,int *B, int *C,int n){
// множення матриці. Приймає вказіники на початки масивів A,B,C та розмірність
for(int irow = 0; irow < n; irow++)
for(int icol = 0; icol < n; icol++) {
double sum = 0;
for(int k = 0; k < n; k++) {
sum += (*(A+irow*n+k)) * (*(B+k*n+icol));
}
*(C+irow*n+icol) = sum;
}
return ;
}
/////////////////////////////
main()
{
int n;
cout <<"input size of matrix n = ";
cin >> n;
int m = (int) n*(n+1)/2;
int b;
int* matr=(int*)calloc(sizeof(int),n*n);
int a[200];
int k;
input(k , m, b, a);
//a[m] = input(k , m, b, a);
k=0;
set_matrix(matr, n, a);
for (int j = 0 ; j < n ; j++)
{
for (int i = 0 ; i < n ; i++)
{
cout<<"\t"<<*(matr+j*n+i)<<" "; // виводимо матрицю на екран.
}
cout<<endl;
}
/////////////////////////////////////////////////////////
int* temp1=(int*)calloc(sizeof(int),n*n);
int* temp2=(int*)calloc(sizeof(int),n*n);
MnojMartixMas(matr,matr, temp1, n);
MnojMartixMas(temp1,matr, temp2, n);
cout <<"matrix in 3rd stepin: " << endl;
for (int j = 0 ; j < n ; j++)
{
for (int i = 0 ; i < n ; i++)
{
cout<<"\t"<<*(temp2+j*n+i)<<" "; // виводимо матрицю на екран.
}
cout<<endl;
}
system ("PAUSE");
return 0;
}
Все виправив. Тепер працює. Програма трішки по дибільному написана... короче розбирайся )))