2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите дорешать задачку с массивом на С++ Builder!
Сообщение06.01.2008, 16:43 
Помогите пожалуйста дорешать задачку!!! Вот она: "Для квадратной матрицы А вычислить матрицу D=А*А*А. Для матрицы D вычислить сумму элементов каждой строки".

Вот что получилось:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <clx.h>
#pragma hdrstop


//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int i, j, n, m, x, ;
n = 3; m = 3;

int ** A=new int*[n]; // объявление матрицы А N x M
for (i=0; i<n; ++i)
A [i]= new int [m];

int ** C=new int*[n]; // объявление матрицы С N x M
for (i=0; i<n; ++i)
C [i]= new int [m];

int ** D=new int*[n]; // объявление матрицы D N x M
for (i=0; i<n; ++i)
D [i]= new int [m];

randomize ();

cout << "\n Matrix A \n\n" ;

for (i=0; i<n; ++i) // заполнение матрицы А элементами
{ for (j=0; j<m; ++j)
{A[i][j] = random (5);

printf(" %2i", A[i][j]);} // и её вывод
cout << "\n\n";
}

cout <<"\n A*A\n\n";

for(i=0; i<n; i++) //расчёт С=А*А
{
for(j=0; j<m; j++)
{ C[i][j]=0;
for (x=0; x<m; x++)
C[i][j]+=A[i][x]*A[x][j];

printf ("%3i", C[i][j]); //вывод С
}
cout <<"\n\n";
}
cout <<"\n A*A*A \n\n"; // расчёт D=C*A

for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{ D[i][j]=0;
for (x=0; x<m; x++)
D[i][j]+=C[i][x]*A[x][j];
printf ("%6i", D[i][j]);} //вывод D

cout <<"\n\n";
} ;

/* а тут должна быть сумма элементов каждой строки матрицы D... :'( что-то не получается у меня...*/

getch();

return 0;
}


Кто чем сможет, помогите!!!

 
 
 
 
Сообщение07.01.2008, 06:34 
Аватара пользователя
:evil:
1) Пользуйтесь тегом [cоde] — и Ваши программы станет заметно легче читать.

2) В Вашей программе установка $n \not = m$ приведёт к катастрофе. Лучше уж честно признать, что поддерживаются только квадратные матрицы, и выкинуть $m$.

3) На первый взгляд, всё написано правильно. Поэтому вопрос — а что именно не получается? Напишите, что у Вас получилось. Хотя бы код.

 
 
 
 
Сообщение07.01.2008, 14:20 
у меня не запускалось .
исправил в нескольких местах.
результаты вывода на дисплей насколько могу судить верные.
в чем проблема? :?:


добавил расчет суммы элементов каждой строки


Код:
#include <vcl.h>
#pragma hdrstop
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#pragma hdrstop


//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int i, j, n, m, x ;
n = 3; m = 3;

int ** A=new int*[n]; // объявление матрицы А N x M
for (i=0; i<n; ++i)
A [i]= new int [m];

int ** C=new int*[n]; // объявление матрицы С N x M
for (i=0; i<n; ++i)
C [i]= new int [m];

int ** D=new int*[n]; // объявление матрицы D N x M
for (i=0; i<n; ++i)
D [i]= new int [m];

randomize ();

cout << "\n Matrix A \n\n" ;

for (i=0; i<n; ++i) // заполнение матрицы А элементами
{
  for (j=0; j<m; ++j)
  {
   A[i][j] = random (5);
   printf(" %2i", A[i][j]);} // и её вывод
   cout << "\n\n";
}

cout <<"\n A*A\n\n";

for(i=0; i<n; i++) //расчёт С=А*А
{
for(j=0; j<m; j++)
{
C[i][j]=0;
for (x=0; x<m; x++)
   C[i][j]+=A[i][x]*A[x][j];

printf ("%3i", C[i][j]); //вывод С
}
cout <<"\n\n";
}
cout <<"\n A*A*A \n\n"; // расчёт D=C*A

for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{ D[i][j]=0;
for (x=0; x<m; x++)
D[i][j]+=C[i][x]*A[x][j];
printf ("%6i", D[i][j]);} //вывод D

cout <<"\n\n";
} ;

/* а тут должна быть сумма элементов каждой строки матрицы D... :'( что-то не получается у меня...*/

int temp;
for(i=0; i<n; i++)
{
  temp = 0;
  for(j=0; j<m; j++)
  {
   temp +=D[i][j];
  }
  printf ("%d", temp);
  cout <<"\n";
}

getch();

return 0;
}

 
 
 
 
Сообщение07.01.2008, 14:55 
Огромное и искреннее всем спасибо!!! Вы помогли дорешать задачу! Всё получилось!

 
 
 
 
Сообщение07.01.2008, 16:19 
удачи!

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group