mnozenie macierzy

0

Mam nastepujacy problem poniewaz musze zrobic zadanko w c++ na zaliczenie moze ktoś by mi pomógł:

Mnożymy 2 macierze przez siebie (wielkość macierzy określamy na wejściu,
dane w macierzach uzupełniane są losowo). Mierzymy czas mnożenia tych
macierzy

0

Nie zabardzo wiem jak przechodzic po wierszach i kolumnach tak by je mnożyc ale masz tu kodzik do dodawania. Tak jak chciales, podajesz na wejsciu rozmiar, a nastepnie losowo z zakresu 0-10 jest losowane kazde pole macierzy. Zakres mozesz zwiekszyc.

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

#pragma hdrstop
#include <iostream>

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

#pragma argsused
using namespace std;

int main(int argc, char* argv[])
{

cout<<"Mnożenie macierzy\n\n";
cout<<"Podaj rozmiar: ";
int w1,k1;

cin>>w1>>k1;
if(w1>10 || k1>10)
return 0;
randomize();
int losowa;
float macierz1[10][10],macierz2[10][10], AxB[10][10];

//wypelnianie macierzy <ort>odrazu</ort> dwie naraz
for(int k=0;k<k1;k++)
   for(int w=0;w<w1;w++)
   {
   losowa=random(10);
   macierz1[k][w]=losowa;
   losowa=random(10);
   macierz2[k][w]=losowa;
   }
// pokazuje jakie sa
cout<<"Macierz A"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   cout.width(3);
   cout<<macierz1[k][w]<<" ";
   }
   cout<<endl;
 }

 // teraz druga
cout<<"Macierz B"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   cout.width(3);
   cout<<macierz2[k][w]<<" ";
   }
   cout<<endl;
 }

cout<<"Macierz A + B"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   //AxB[k][w]=macierz1[k][w]*macierz2[k][w] +  macierz1[k+1][w]*macierz1[k][w+1];
   AxB[k][w]=macierz1[k][w]+macierz2[k][w];
   }
   cout<<endl;
  }
cout<<"Macierz A + B"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   cout.width(3);
   cout<<AxB[k][w]<<" ";
   }
   cout<<endl;
 }
        system("pause");
        return 0;
}
//---------------------------------------------------------------------------
0

wielkie dzieki masz moze gg lub tlena??

tylko chodzi mi tez aby po mnozeniu podał mi czas wykonania opercji

0
#include <time.h>

int main() {
   clock_t start, stop;
   long jak_dlugo;
   
   start = clock();
   /*tutaj mnozysz macierze*/
   finish = clock();
   jak_dlugo = (double)(finish - start) / CLOCKS_PER_SEC;
}
<\code>
Co do mnozenia to poszukaj na google, jest sporo tego.
0

Prosze masz juz gotowy prgram :) bo nie wiem czy wiesz, ale w tym wczesniejszym to w macierzy AxB[][] byly wartosci przypadkowo wstawiane przez program, zeby wszystko bylo ok to wyzerowalem, i dziala chyba tak jak powinno działać. Jak coś to pisz

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

#pragma hdrstop
#include <iostream>
#include <time>

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

#pragma argsused
using namespace std;
clock_t start,koniec;
long czas;
int main(int argc, char* argv[])
{

cout<<"Mnożenie macierzy\n\n";
cout<<"Podaj rozmiar: ";
int w1,k1,zero;
zero=0;

cin>>w1>>k1;
if(w1>10 || k1>10)
return 0;
start=clock();
randomize();
int losowa;
float macierz1[10][10],macierz2[10][10], AxB[10][10];

//wypelnianie macierzy <ort>odrazu</ort> dwie naraz
for(int k=0;k<k1;k++)
   for(int w=0;w<w1;w++)
   {
   losowa=random(10);
   macierz1[k][w]=losowa;
   losowa=random(10);
   macierz2[k][w]=losowa;
   }
// pokazuje jakie sa
cout<<"Macierz A"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   cout.width(3);
   cout<<macierz1[k][w]<<" ";
   }
   cout<<endl;
 }

 // teraz druga
cout<<"Macierz B"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   cout.width(3);
   cout<<macierz2[k][w]<<" ";
   }
   cout<<endl;
 }

 for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
  AxB[k][w]=zero;
   }

 }

//cout<<"Macierz A x B"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
      for (int i=0;i<w1;i++)
           AxB[k][w]+=(macierz1[k][i] * macierz2[i][w]);
   }


   cout<<endl;
  }
cout<<"Macierz A x B"<<endl;
for(int k=0;k<k1;k++)
  {
   for(int w=0;w<w1;w++)
   {
   cout.width(5);
   cout<<AxB[k][w]<<" ";
   }
   cout<<endl;
 }
koniec=clock();
cout.fill('.');
cout.width(35);
czas=koniec-start;
cout<<left<<endl<<"czas wykonywania operacji: "<<czas<<endl;
        system("pause");
        return 0;
}
//---------------------------------------------------------------------------
0

wielkie dzieki: gesiek20. masz u mnie [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1