Macierze - iloraz elementów

0

Siema. Jestem początkującym programistą :p I mam pewien problem. Mam do zrobienia program i zaciąłem się na jednej części. Muszę obliczyć iloczyn elementów każdego wiersza w macierzy. Oto co stworzyłem

double iloczyn[x];
for (int i=0;i<n;i++)
  {
    for (int j=0; j<m; j++)
        {
            iloczyn[x] = iloczyn[x]*M[i][j];
        }
        x++;
}

Taki miałem pomysł. Ale wiem że to nie zadziała, bo ten każdy iloczyn powinien mieć przypisaną początkową wartość 1, a nie wiem jak to zrobić. Pomóżcie :) Jeżeli ktoś ma jakiś inny pomysł jak zrobić iloczyn tych elementów proszę napisać, jak mówiłem dopiero się uczę ;)

0

Tablicę iloczyn powinieneś deklarować dynamicznie:
double *iloczyn = new double[x];
Nadanie początkowej wartości 1 każdemu elementowi tablicy:

 for(int i = 0; i < x; i++)
   iloczyn[i] = 1;

Założenie, że x to wielkość Twojej tablicy^^.
Dalej powinno ładnie działać.

0

Dopisałem to co wrzuciłeś. Niby nie ma błędów, ale jak wypisuje w konsoli to wyskakuje że jest problem z programem :/ Dodam że tamta częśc programu była okey. A teraz dodałem tylko te dwie częsci:

 //iloczyn elementów każdego wiersza
double *iloczyn = new double[x];

 for(int i = 0; i < x; i++)
   iloczyn[x] = 1;

for (int i=0;i<n;i++)
  {
    for (int j=0; j<m; j++)
        {
            iloczyn[x] = iloczyn[x]*M[i][j];
        }
        x++;
  }

i to żeby do pliku zapisało te liczby:

//zapisywanie do pliku

file.open("maksymalne_wartosci.txt",ios_base::out | ios_base::trunc);

  for (int y; y<m; y++)
  {
    file<<left<<setw(10)<<iloczyn[y]<<"   ";
    file<<endl;
  }

file.close(); 

Widzicie jakieś błędy ???

0

A powiedz mi od jakiej wartości zaczynasz iterować w tej pętli? ;)
for (int y; y<m; y++)
Widzisz błąd?
BTW. Nie zapomnij gdy skończysz używać tablicy iloczyn, zwolnić zaalokowanej dla niej pamięci.

1
LuIMi napisał(a):

Nadanie początkowej wartości 1 każdemu elementowi tablicy:

 for(int i = 0; i < x; i++)
   iloczyn[x] = 1;

Założenie, że x to wielkość Twojej tablicy^^.
Dalej powinno ładnie działać.

Chyba się troszki zapatrzyłeś na kod przedstawiany wcześniej - x razy będziesz zapisywał coś po za tablicą!

0
kampla1 napisał(a):

Dopisałem to co wrzuciłeś. Niby nie ma błędów, ale jak wypisuje w konsoli to wyskakuje że jest problem z programem :/ Dodam że tamta częśc programu była okey. A teraz dodałem tylko te dwie częsci:

 //iloczyn elementów każdego wiersza
double *iloczyn = new double[x];

 for(int i = 0; i < x; i++)
   iloczyn[x] = 1;

for (int i=0;i<n;i++)
  {
    for (int j=0; j<m; j++)
        {
            iloczyn[x] = iloczyn[x]*M[i][j];
        }
        x++;
  }

i to żeby do pliku zapisało te liczby:

x razy zapisujesz 1 poza tablicą, a następnie na dalszych adresach po za tablicą zapisujesz przypadkową wartość iloczyn[x] mnożoną przez M[i][j]

//zapisywanie do pliku

file.open("maksymalne_wartosci.txt",ios_base::out | ios_base::trunc);

  for (int y; y<m; y++)
  {
    file<<left<<setw(10)<<iloczyn[y]<<"   ";
    file<<endl;
  }

file.close(); 

poczynając od przypadkowego elementu (nie znamy początkowego y) zapisujesz dane, ktore nugdy nie były wstawione (więc wartości będą przypadkowe).

Widzicie jakieś błędy ???

nie wypowiem sie za wszystkich, ale ja widzę.

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