Hirdetés

Új hozzászólás Aktív témák

  • WonderCSabo
    félisten

    De tanultam, csak egy pillanatra megzavart az hogy "balról szorzom", azóta persze rájöttem hogy ez csak annyit tesz, hogyha mondjuk van egy A meg egy B mátrixom azokat úgy írom fel hogy B*A.

    Na de a lényeg, h nem a mátrixok miatt nem tudom megoldani, hanem C beli hiányosságok vannak, ebben a félévben tanultam először programozást, ezelőtt szakközépben sem és nemis infó karos vagyok, úgyhogy várhatóan ezután sem lesz (a mintatanterv szerint legalábbis). MPLAB-ot használunk, PIC programozás lenne elvileg.

    A feladat pedig: "Készítsen függvényt, amely adott változótípuson végez műveletet, valamint a megfelelő változótípussal tér vissza." Az adatok típusa valós az én esetemben.
    Az A mátrixot szoroznám balról a B-vel. Printf-et nem szoktunk írni, van egy watch ablak a programban az jelzi az értékeket ha léptetem soronként.

    Az eddig elkészült programom, ami természetesen nem fut le (:D):

    #include <p24fj128ga010.h>

    float main(){
    float fMatrixA[2][3] = {{1.5,2.5,3.5},{1.2,2.2,3.2}};
    float fMatrixB[3][2] = {{4.5,4.2},{5.5,5.2,},{6.5,6.2}};
    float fMatrixBA[3][3];
    float i, j, k, r1=2, r2=3, c1=3, c2=2;
    if (c1 == r2){
    for (i=0; i<r1; i++){
    for (j=0; j<c2; j++){
    fMatrixBA[j]=0;
    for (k=0; k<r1;k++)
    {
    fMatrixBA(i)[j] += fMatrixA(i)[k]*fMatrixB[k][j];
    }
    }
    }
    }
    return 0;
    }

    És itt megállt a tudomány részemről... pl. azt írja hogy hogy "return type of 'main' is not 'int'" és ezen kívül van még hiba rendesen. De azt se értem, hogy a return-nak integer-nek kellene lennie minden esetben? Mert a feladatkiírás alapján valós értékűként kellene visszatérnie.

    A meg egy B mátrixom azokat úgy írom fel hogy B*A

    Akkor, ha B-t kell balról A-val megszorozni, egyébként fordítva. :) Látom sikerült az első Google találatot lemásolni, és azt is rosszul... Tessék:

    #include <stdio.h>

    int main()
    {
    float fMatrixA[2][3] = {{1.5,2.5,3.5},{1.2,2.2,3.2}};
    float fMatrixB[3][2] = {{4.5,4.2},{5.5,5.2,},{6.5,6.2}};
    float fMatrixBA[2][2];
    int i, j, k, r1=2, r2=3, c1=3, c2=2;

    for(i=0; i<r1; i++)
    {
    for(j=0; j<c2; j++)
    {
    fMatrixBA[i][j]=0;
    for(k=0; k<r1; k++)
    {
    fMatrixBA[i][j]+=fMatrixA[i][k]*fMatrixB[k][j];
    }
    printf("%f\t",fMatrixBA[i][j]);
    }
    printf("\n");
    }

    return 0;
    }

    Ja és egy 2x3 * 3x2 szorzatából 2x2 -es mátrix lesz...

Új hozzászólás Aktív témák