Автор Тема: Матрицы в С++  (Прочитано 8125 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Katerinka

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Матрицы в С++
« : 15 Октября 2009, 09:22:33 »
вот сама задачка:
Дана матрица A=(aij) размерностью m на n и матрица B=(bij) размерностью m на n. Сформировать матрицу C=(cij) размерностью m на n:
Cij = aij – bij
Найти в матрице C=(cij) строку с максимальным средним арифметическим значением ее элементов.

а вот код который у меня получился:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>

int m,n;
float **A, **B, **D, *s, *r, max;

void vvodA(void)
{
int i, j;
for (j=0; j<m; j++)
    for (i=0; i<n; i++)
    {
    cout<<"-Input A["<<j<<"]["<<i<<"]:";
    cin>>*(*(A+j)+i);
    }
}

void vvodB(void)
{
int i, j;
for (j=0; j<m; j++)
    for (i=0; i<n; i++)
    {
    cout<<"-Input B["<<j<<"]["<<i<<"]:";
    cin>>*(*(B+j)+i);
    }
}



float form(float **D, float **A, float **B, int m, int n)
{  int i,j;
for(j = 0; j < m; j++)
  {
   for(i = 0; i < n; i++)
   D[j] = A[j] - B[j];
   }

return D[j];
}

float maxar(float**, int , int);

void vv(float**,int,int);


void main(void)
{

clrscr();
A=new float*[n];
for(int j=0;j<m;j++)
     A[j]=new float[n];
B=new float*[n];
for(j=0;j<m;j++)
     B[j]=new float[n];
D=new float*[n];
for(j=0;j<m;j++)
     D[j]=new float[n];
cout<<"Input size array A:"<<endl;
cout<<"-Count row M:";
cin>>m;
cout<<"-Cout column N:";
cin>>n;
cout<<endl;
vvodA();
cout<<endl;
vv(A,m,n);
cout<<endl;
cout<<"Input size array B:"<<endl;
cout<<"-Cout row M:"<<m;
cout<<endl;
//cin>>m;
cout<<"-Cout collumn N:"<<n;

cout<<endl;
vvodB();
cout<<endl;
vv(B,m,n);
cout<<endl;

form(D,A,B,m,n);
vv(D,m,n);

max=maxar(D,m,n);
cout<<"Max="<<max<<endl;
cprintf("\n\n Press any key.");
getch();
return;
delete[] A;
delete[] B;
delete[] D;
}

float maxar(float**D, int m, int n)

{  float max;
int i, j;
float p=0.0;

for (j=0; j<m;j++)
    {
    for (i=0;i<n;i++)
    {
   p+=*(*(D+j)+i);
    }
   *(s+j)=p/n;
   p=0.0;
   if (*(s+j)>max);
     {
     max=*(s+j);

     }
     }
return max;
}


void vv(float** M, int m, int n)
{
for(int i=0;i<m;i++)
  {
  for(int j=0;j<n;j++)
  printf("%6.0f", M[j]);
  printf("\n");
  }
  cout<<"Adress array:"<<endl;
  for (int j=0;j<m;j++)
  {
  for (i=0;i<n;i++)
  cout<<((M+j)+i)<<" ";
  cout<<endl;}

}

Проблема в том, что она считает неправильно, а как исправить не знаю и еще нужно уходить от вот таких записей: D[j] = A[j] - B[j] и писать как-то по другому, этого я тоже не могу понять как делать... помогите пожалуйста)

Оффлайн lu

  • Модератор
  • *****
  • Сообщений: 3126
  • ~~~~^_^~~~~
    • Просмотр профиля
Re: Матрицы в С++
« Ответ #1 : 15 Октября 2009, 09:34:48 »
так у вас ж двумерные массивы .
D[i ][j]=A[i ][j]-B[i ][j]
Мы помогаем, а не решаем за Вас !!!

Полезные обозначения:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ∂ ℮ ∩ ≡  ≠ ≤ ≥ ≈ ∩   α β γ δ ε ζ η θ λ μ ξ π ρ σ φ ψ

Оффлайн Katerinka

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Матрицы в С++
« Ответ #2 : 15 Октября 2009, 10:15:08 »
Да, двумерные, но мне сказали уходить от такой записи и по-другому как-то записывать

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: Матрицы в С++
« Ответ #3 : 29 Октября 2009, 00:05:26 »
По другому здесь не запишешь)) Если только все через уазатели, но к чему?
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: Матрицы в С++
« Ответ #4 : 30 Октября 2009, 20:05:38 »
Тем более что вы и так уже задействовали указатели при передаче массива в функцию
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: Матрицы в С++
« Ответ #5 : 30 Октября 2009, 20:23:25 »
тебе не надоело решать задания 2недельной давности? автору уже пох на него)
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

 

Помогите решить задачу. Для матрицы создать следующие функции.

Автор алина 11

Ответов: 1
Просмотров: 4400
Последний ответ 24 Января 2010, 17:54:21
от InfStudent
С++ и матрица. Для каждого столбца матрицы определить сумму элементов

Автор Sven

Ответов: 2
Просмотров: 6873
Последний ответ 30 Января 2011, 18:29:15
от Данила
Помогите решить задачи на СИ, про матрицы и символьные строки.

Автор katerinka777

Ответов: 4
Просмотров: 6291
Последний ответ 25 Апреля 2010, 12:56:01
от InfStudent
Вычисление по формуле, согласно норме матрицы

Автор drongoo

Ответов: 5
Просмотров: 5382
Последний ответ 09 Мая 2010, 06:36:20
от drongoo
Вывод матрицы в файл и на консоль С++

Автор sir. Andrey

Ответов: 1
Просмотров: 4637
Последний ответ 21 Октября 2010, 14:48:36
от sir. Andrey