Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ślad macierzy

Ostatnio zmodyfikowano 2010-11-06 08:26
Autor Wiadomość
Tymek
Temat założony przez niniejszego użytkownika
Ślad macierzy
» 2010-11-04 23:08:10
Witam mam za zadanie , napisać program 1 oraz 2 wymiarowy  który policzy sumę elementów , element maksymalny oraz ślad macierzy .
      Problem tkwi w tym że nie mogę znaleźć dobrego wytłumaczenia na ślad macierzy oraz jak mam to rozumieć . Jeżeli ktoś może wie proszę o odpowiedzieć .
P-23557
F90M
» 2010-11-05 14:01:44
ślad macierzy jest dobrze na wiki opisany
pl.wikipedia.org - ślad macierzy
Ślad macierzy – w algebrze liniowej suma elementów na głównej przekątnej macierzy kwadratowej.
pl.wikipedia.org - główna przekątna
Główną przekątną macierzy kwadratowej A nazywamy wektor (a11,a22,...,ann)

przykładowy kod (tablica dwuwymiarowa)
C/C++
int iMacierz[ 50 ][ 50 ];
//załóżmy że wypełniliśmy elementy tablicy wartościami :)
int iSladMacierzy;

for( int n = 0; n < 50; n++ )
{
    iSladMacierzy += iMacierz[ n ][ n ];
}

Poprawcie mnie jeśli się mylę.
P-23562
Tymek
Temat założony przez niniejszego użytkownika
» 2010-11-05 21:18:04
Wyczarowałem takie coś jest to poprawne??  a może da się to zrobić w lepszy sposób?:D

#include<iostream>
#include<time.h>
using namespace std;
main()
{
      srand(time(0));
      float tablica[10][10], s=0, max=0, slad=0;
      for(int i=0;i<10;i++)
      {
               for(int j=0;j<10;j++)
               {
                     tablica[j]=rand();
                     s+=tablica[j];
                     if(i==j)
                     {
                             slad+=tablica[j];    
                     }
                     if (max<tablica[j])
                     {
                             max=tablica[j];            
                     }
               }
      }
      cout<<"Suma wszystkich elementow:\t"<<s<<endl;
      cout<<"Element maksymalny:\t"<<max<<endl;
      cout<<"Slad macierzy:\t"<<slad<<endl;
      system("pause");
}
P-23583
ison
» 2010-11-05 21:23:23
pomijając już fakt, że main powinien zwracać int to masz złe użycie tablic, raz traktujesz ją jako 2 wymiarową a raz jako 1 wymiarową
lepiej używać preinkrementacji(++i) zamiast postinkrementacji(i++)
P-23584
F90M
» 2010-11-06 02:33:02
@ison, z czystej ciekawości: czy kiedykolwiek wystąpi różnica różnica, między pre a postinkrementacją, w takich pętlach for?
for (int a = 0; a < 100; ++a){};
for (int a = 0; a < 100; a++){};
P-23593
ison
» 2010-11-06 08:26:19
@up przy takim zapisie nie ma to zbyt wielkiego znaczenia, ale w innych przypadkach może mieć
różnica jest taka że postinkrementacja tworzy element tymczasowy, a preinkrementacja nie
te dwie pętle for, które podałeś będą się wykonywały tyle samo razy, niezależnie jakiej inkrementacji użyjesz

więcej informacji na ten temat:
http://www.codeguru.com/forum/showthread.php?t=231052
P-23595
« 1 »
  Strona 1 z 1