[C]program na mnożenie macierzy

Awatar użytkownika
refuss
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 19 sty 2008, o 17:11
Płeć: Mężczyzna
Lokalizacja: knurów
Podziękował: 41 razy
Pomógł: 4 razy

[C]program na mnożenie macierzy

Post autor: refuss »

witam mógłby mi ktoś powiedzieć co mam nie tak w tym programie??
program ma liczyć A*B macierzowo i w wyniku otrzymać macierz C=B

Kod: Zaznacz cały

#include<stdio.h>
main()
    {
    double a[2][2], b[2][2], c[2][2];
    int i,j,k,p;
    for (i=0;i<2;i++)
        for (j=0;j<2;j++)
        {
                printf("Podaj element %d,%d 
" , i, j);
                scanf("%lf", &a[i][j]);
        }    
        for(i=0;i<2;i++)
        {
                for(i=0;i<p;i++)
                {
                c=b*a;
                b=c;
                }
           for(j=0;j<2;j++)
           {
           b[i][j]=0;
               for(k=0;k<2;k++)   
               b[i][j]=b[i][j]+a[i][k]*b[k][j];
               printf("%lf ", b[i][j]);
           }
           printf("
");
        }
           getchar();
           getchar();                                               
    }

Kod programu umieszczaj w klamrach

Kod: Zaznacz cały

Szemek[/color]
Ostatnio zmieniony 1 mar 2008, o 12:20 przez refuss, łącznie zmieniany 1 raz.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

[C]program na mnożenie macierzy

Post autor: kadiii »

Chcesz pomnożyć dwie macierze A*B, czy ja źle rozumiem? Bo tej macierzy b jakoś nie ma, ani jej nie pobierasz (coś tam zerujesz w pewnym momencie ale chyba nie oto ci chodzi)

Kod: Zaznacz cały

#include<stdio.h>
main()
    {
    double a[2][2], b[2][2], c[2][2];
    int i,j,k,p;
    for (i=0;i<2;i++)    
        for (j=0;j<2;j++)
        {
                printf("Podaj element %d,%d 
" , i, j);
                scanf("%lf", &a[i][j]);
        }   
        for(i=0;i<2;i++)
        {
                for(i=0;i<p;i++)  // pętla zagnieżdżona z tą samą zmienną iteracyjną?
                {
                c=b*a;  // skąd zmienne c, b i a - czyżbyś mnożył tablice
                b=c;
                }
           for(j=0;j<2;j++)
           {
           b[i][j]=0; // tu coś zerujesz?
               for(k=0;k<2;k++)   
               b[i][j]=b[i][j]+a[i][k]*b[k][j]; // to nie dokońca algorytm mnożenia macierzy
               printf("%lf ", b[i][j]);
           }
           printf("
");
        }
           getchar();
           getchar();                                               
    }
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[C]program na mnożenie macierzy

Post autor: soku11 »

Moja funkcja by wygladala tak:

Kod: Zaznacz cały

const unsigned n=2;
(...)

void mnozenie(double a[n][n],double b[n][n])
{
  int i,j,k;
  double tmp;
  double c[n][n];

  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
      tmp=0;
      for(k=0;k<n-1;k++)
        tmp+=(a[i][k]*b[k][j]);
      c[i][j]=tmp;
    }

  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      b[i][j]=c[i][j];

}

Jesli mi sie zdaje, to ta funkcja powinna dzialac POZDRO
Awatar użytkownika
refuss
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 19 sty 2008, o 17:11
Płeć: Mężczyzna
Lokalizacja: knurów
Podziękował: 41 razy
Pomógł: 4 razy

[C]program na mnożenie macierzy

Post autor: refuss »

kadiii pisze:Chcesz pomnożyć dwie macierze A*B, czy ja źle rozumiem? Bo tej macierzy b jakoś nie ma, ani jej nie pobierasz (coś tam zerujesz w pewnym momencie ale chyba nie oto ci chodzi)
mój ćwiczeniowec z infy kazał mi napisać że na początku macierz b lepiej wyzerować wiec wyzerowałem ją no nie??
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[C]program na mnożenie macierzy

Post autor: soku11 »

Jak chcesz mnozyc macierz, skoro ja wyzerujesz?? To jest bez sensu... Pewnie go zle zrozumiales POZDRO
Awatar użytkownika
refuss
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 19 sty 2008, o 17:11
Płeć: Mężczyzna
Lokalizacja: knurów
Podziękował: 41 razy
Pomógł: 4 razy

[C]program na mnożenie macierzy

Post autor: refuss »

soku11 pisze:Moja funkcja by wygladala tak:

Kod: Zaznacz cały

const unsigned n=2;
(...)

void mnozenie(double a[n][n],double b[n][n])
{
  int i,j,k;
  double tmp;
  double c[n][n];

  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
      tmp=0;
      for(k=0;k<n-1;k++)
        tmp+=(a[i][k]*b[k][j]);
      c[i][j]=tmp;
    }

  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      b[i][j]=c[i][j];

}

Jesli mi sie zdaje, to ta funkcja powinna dzialac POZDRO
czemu to nie chce działać?
tę wartosć const unsigned gdzie to umieścić?? za main czy przed nim?? bo cały czas wyskakują mi błędy ;/
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[C]program na mnożenie macierzy

Post autor: soku11 »

Nie wiem jak ty chcesz programowac, jak nie znasz podstaw... Wez lepiej jakas ksiazke w reke albo chociaz internetowy jakis kurs i przeczytaj. Wyrazenie stale umieszczasz po dyrektywach preprocesora tak, by bylo dostepne globalnie. Pozniej wklejasz prototyp mojej funkcji, pozniej main i na koncu dopiero kod tej mojej funkcji. POZDRO
Awatar użytkownika
refuss
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 19 sty 2008, o 17:11
Płeć: Mężczyzna
Lokalizacja: knurów
Podziękował: 41 razy
Pomógł: 4 razy

[C]program na mnożenie macierzy

Post autor: refuss »

soku11 pisze:Nie wiem jak ty chcesz programowac, jak nie znasz podstaw... Wez lepiej jakas ksiazke w reke albo chociaz internetowy jakis kurs i przeczytaj. Wyrazenie stale umieszczasz po dyrektywach preprocesora tak, by bylo dostepne globalnie. Pozniej wklejasz prototyp mojej funkcji, pozniej main i na koncu dopiero kod tej mojej funkcji. POZDRO
to trzeba było powiedzieć że to wartość globalna :P niestety ja się uczę na mocnych podstawach bo jestem na matematyce a nie na infie żeby się uczyć programowania >.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[C]program na mnożenie macierzy

Post autor: soku11 »

A ja jestem na infie a musze zakuwac cala matme BTW. Programowanie zawsze ci sie przyda ;P POZDRO
Awatar użytkownika
refuss
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 19 sty 2008, o 17:11
Płeć: Mężczyzna
Lokalizacja: knurów
Podziękował: 41 razy
Pomógł: 4 razy

[C]program na mnożenie macierzy

Post autor: refuss »

ty chyba nie wiesz co to cała matma wy się tam podstaw uczycie i nie zaglądacie w dowody wszystkich twierdzeń jakie tam macie hehe ^^

EDIT:
ten program nadal jest źle napisany... wskazuje on na brak zdefiniowanego a i b....
ODPOWIEDZ