2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите дорешать задачку с массивом на С++ Builder!
Сообщение06.01.2008, 16:43 


06/01/08
2
Помогите пожалуйста дорешать задачку!!! Вот она: "Для квадратной матрицы А вычислить матрицу 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 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
1) Пользуйтесь тегом [cоde] — и Ваши программы станет заметно легче читать.

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

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

 Профиль  
                  
 
 
Сообщение07.01.2008, 14:20 


28/09/07
172
у меня не запускалось .
исправил в нескольких местах.
результаты вывода на дисплей насколько могу судить верные.
в чем проблема? :?:


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


Код:
#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 


06/01/08
2
Огромное и искреннее всем спасибо!!! Вы помогли дорешать задачу! Всё получилось!

 Профиль  
                  
 
 
Сообщение07.01.2008, 16:19 


28/09/07
172
удачи!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group