[ Linux_FreeBSD @ 04.02.2008. 18:58 ] @
Pozdrav kolege, kako biste rjesili ovaj zadatak ....

Unijeti proizvoljnu kvadratnu matricu realnih brojeva maksimalnih dimenzija 10 i vektor ( a to ga dodje jednodimenz. matrica .. samo jedan red ) .. izvrsiti mnozenje matrice i vektora pri cemu se rezultat smjesta u novu matricu .... i ispisati rezultat
[ X Files @ 04.02.2008. 19:01 ] @
Molim Vas da postavite kod koji ste do sada uradili.
Po pravilima [ES] foruma brišu se sve teme u kojima autor traži da mu se uradi domaći zadatak, a da prethodno ništa sam nije pokušao. Domaći zadaci su predviđeni za samostalan rad, a članovi C/C++ foruma će svakako pokušati da *pomognu* kada autor i sam pokaže svoje angažovanje i inicijativu.

Hvala na razumevanju i srećan rad.
[ xeron @ 07.02.2008. 13:18 ] @
Da bi uopšte mogao množiti matrice prvo moraju biti ispunjeni neki uslovi.
Kada množimo dvije matrice (a i b) broj kolona matrice a mora biti jednak broju redova matrice b.
Rezultujuća matrica je formata broj redova matrice a, broj kolona matrice b.

U našem slućaju je u pitanju množenje matrice a i vektora v. To znači da broj kolona matrice a mora biti jednak
broju redova vektora v. Evo jedan primjer množenja kvadratne matrice i vektora.
Code:

                                     
 a11 a12 a13      v11        r11 
 a21 a22 a23  x  v21   =   r21 
 a31 a32 a33      v31        r31 


Ispunjeni su uslovi množenja broj kolona matrice je jednak broju redova vektora. Rezultat će biti matrica formata
3 x 1 (3 reda 1 kolona).

Primjer mnozenja matrice 3x3 sa vektorom 3x1, treba dodati još uslov da li se množenje uopšte može izvršiti i izmijeniti
funkcije taka da rade i za opšte slućajeve, a ne samo za 3x3 i 3x1. Nije velik posao ali meni je zbog testiranja bilo lakše
uraditi ovaj slućaj.

Code:

#include <stdio.h>

void pomnoziMatrice (int a[3][3], int vektor [3][1], int rezultat[3][1]){
    for(int i = 0; i < 3; i++){ //ide do broja redova matrice a
        for(int j = 0; j < 1; j++){ //ide do broja kolona matrice b (vektora)
            int pomocna = 0;
            for(int k = 0; k < 3; k++) //ide do broja redova matrice b (vektora)
                pomocna = pomocna + (a[i][k] * vektor[k][j]);
            rezultat[i][j] = pomocna;
        }
   }
}

void unesiMatricu(int a [3][3]){
    printf("Unesite matricu a: \n");
    for(int i=0; i<3; i++){
        for(int j=0; j<3; j++){
            printf("[%d, %d]: ", i+1, j+1);
            scanf("%d", &a[i][j]);
        }
    }
    printf("\n");
}

void unesiVektor(int v[3][1]){
    printf("Unesite vektor: \n");
    for(int i=0; i<3; i++){
        for(int j=0; j<1; j++){
            printf("[%d, %d]: ", i+1, j+1);
            scanf("%d", &v[i][j]);
        }
    }
    printf("\n");
}

int main(void){
    int a[3][3];
    int vektor[3][1];
    int rezultat[3][1];

    unesiMatricu(a);
    unesiVektor(vektor);
    pomnoziMatrice(a, vektor, rezultat);

    printf("\nMatrica a: \n");
    for(int i=0; i<3; i++){
        for(int j=0; j<3; j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }

    printf("\nVektor: \n");
    for(int i=0; i<3; i++){
        for(int j=0; j<1; j++)
            printf("%d ", vektor[i][j]);
        printf("\n");
    }

    printf("\nRezultat je: \n");
    for(int i=0; i<3; i++){
        for(int j=0; j<1; j++)
            printf("%d ", rezultat[i][j]);
        printf("\n");
    }
    return 0;
}



Citat:

evo kako izgleda rezultat:

Matrica a:
1 1 1
1 1 1
1 1 1

Vektor:
1
1
1

Rezultat je:
3
3
3



[ Linux_FreeBSD @ 21.02.2008. 13:00 ] @
okej ovo druze, sve valja, al de mi reci kako zaustavit prozor kad se treba ispisat rezultat , koristio sam system("pause") ovdje ne moze, pokusam sa cin.get() ne moze, i na kraju ono sto ide u C-u getche() ili getch() i to ne moze :S kako zaustaviti .... P.S. testiram ga pod windows-om! Pozzdrav i hvala !
[ X Files @ 21.02.2008. 13:09 ] @
Gde si stavio system("PAUSE") i ostale varijante? Treba ispred return 0.
[ xeron @ 21.02.2008. 14:19 ] @
Pozdrav,
za system("pause") trebaš uključiti windows.h ili stdlib.h, a za getch() potrebna je conio.h koja je nestandardna biblioteka
pa ces je morati instalirati. Kao što ti je X Files rekao jednu od ove dvije staviš ispred return-a i trebalo bi raditi.
[ Linux_FreeBSD @ 21.02.2008. 15:03 ] @
e da da, stavljao sam ispred RETURN-a, ali izgleda nisu bile ukljucene biblioteke te, a nisam znao tacno koja ide za sta .... sad sam preko CONIO.H komandom GETCHE(); odradio sve - super ! ;) hvala, ugodan dan¨!
[ xeron @ 21.02.2008. 20:06 ] @
super ... Bolje je koristiti #include <windows.h> i system("pause"). Razlog je što vecina ljudi koriste system("pause") u tu svrhu, a i zbog kompatibilnosti jer kako sam rekao conio.h nije standardna biblioteka.