Schleifen & Arrays



  • Hallo,

    hab mal wieder folgendes Problem. Ich soll ne Liste programmieren die als "Gesamt Punkte" folgende Ergebnisse hat:

    Klasse 8a: 151
    Klasse 8b: 156
    Klasse 8c: 149
    Klasse 8d: 155

    Das ganze soll mit einer Schleife berechnet werden. Wie ihr unten im Quelltext sieht habe ich dies getan, jedoch stimmem die Ergebnisse beim start des Programms nicht mit den obigen überein. Was ist an den Schleifen falsch?

    Hier der Quelltext:

    //////////////////////////////////////////////////////////////////////////
    
    #include <stdio.h>
    
    void main(void)
    {
      int matrix_a [2][5] = {{ 1, 2, 3, 4, 5},
              { 3, 2, 1, 2, 3}};
    
      int matrix_b [4][5] = {{ 3, 15, 10, 30, 14},
              {16, 12, 12, 24,  8},
              { 8,  5, 15, 20, 20},
              {10,  8, 14, 10, 25}};
    
      int ges_pkte [5] = { 0, 0, 0, 0, 0 };
    
    /* ------------------S C H L E I F E---------------------------/*
    
      int k,
          a;
    
      for(k=0; k<5; k=k+1)
        for(a=0; a<5; a=a+1)
          ges_pkte[a] = matrix_a[1][k] * matrix_b[a][k];
    
    /*-------------------------------------------------------------/* 
    
      printf("\n\n Die Punktverteilung fuer alle 4 Klassen:");
      printf("\n\n Nr der Aufg.");
      printf(" %6d %6d %6d %6d %6d   Gesamt Pkt.\n", matrix_a[0][0], matrix_a[0][1], matrix_a[0][2], matrix_a[0][3], matrix_a[0][4]);
      printf("\n Klasse 8a:     %4d  I%4d  I%4d  I%4d  I%4d  I%6d\n", matrix_b[0][0], matrix_b[0][1], matrix_b[0][2], matrix_b[0][3], matrix_b[0][4], ges_pkte[0]);
    
      printf("\n Klasse 8b:     %4d  I%4d  I%4d  I%4d  I%4d  I%6d\n", matrix_b[1][0], matrix_b[1][1], matrix_b[1][2], matrix_b[1][3], matrix_b[1][4], ges_pkte[1]);
    
      printf("\n Klasse 8c:     %4d  I%4d  I%4d  I%4d  I%4d  I%6d\n", matrix_b[2][0], matrix_b[2][1], matrix_b[2][2], matrix_b[2][3], matrix_b[2][4], ges_pkte[2]);
    
      printf("\n Klasse 8d:     %4d  I%4d  I%4d  I%4d  I%4d  I%6d\n", matrix_b[3][0], matrix_b[3][1], matrix_b[3][2], matrix_b[3][3], matrix_b[3][4], ges_pkte[3]);
      printf("\n Pkt/Aufg.:     %4d  I%4d  I%4d  I%4d  I%4d  I", matrix_a[1][0], matrix_a[1][1], matrix_a[1][2], matrix_a[1][3], matrix_a[1][4]);
      printf("\n\n");
    }
    
    /////////////////////////////////////////////////////////////////////////////
    

    Bitte um HILFE !

    M f g

    Robb.

    [edit Shade]
    Biite Code-Tags verwenden. Wir stehen hier auf buntes 🙂
    [/edit]

    [ Dieser Beitrag wurde am 12.02.2003 um 11:30 Uhr von Shade Of Mine editiert. ]



  • Hi,

    [cpp]
    for(k=0; k<5; k=k+1)
    for(a=0; a<5; a=a+1)
    ges_pkte[a] = matrix_a[1][k] * matrix_b[a][k];[/cpp]

    es sollte glaub ich

    matrix_a[a][k] * ...
    

    heissen. Achso und es sollte

    int main ()
    

    nicht

    void main ()
    

    heissen und dann natuerlich nicht 'return 0' vergessen.

    mfg
    v R

    [ Dieser Beitrag wurde am 12.02.2003 um 12:53 Uhr von virtuell Realisticer editiert. ]



  • 😃 Ich habe das ganze ein bischen umgeschrieben. der code für die ausgabe der matrix ist "ein wenig" kryptischer, aber es funktioniert. (ich hab mich gefragt warum ich soviel für die parameterangabe schreiben sollte.)

    #include<stdio.h>
    
    int main()
    {
      int x,y,matrix[6][6] = {{ 1,  2,  3,  4,  5, 0},
                  { 3, 15, 10, 30, 14, 0},
                  {16, 12, 12, 24,  8, 0},
                  { 8,  5, 15, 20, 20, 0},
                  {10,  8, 14, 10, 25, 0},
                  { 3,  2,  1,  2,  3, 0}};
      for(x=1; x<5; x++)
        for(y=0; y<5; y++)
          matrix[x][5] += (matrix[x][y] * matrix[5][y]);
    
      printf("\n\n Die Punktverteilung fuer alle 4 Klassen:\n");
      printf("\n Nr der Aufg:   ");
      for(x=0;x<5;x++)
        printf("%6d ",matrix[0][x]);
      printf("   Gesamt Pkt.\n");
      for(x=0;x<4;x++) {
        printf("\n\n Klasse 8%c:        ",'a'+ x);
        for(y=0;y<6;y++)
          printf("%3d  I ",matrix[x+1][y]); }
      printf("\n\n Pkt/Aufg:         ");
      for(y=0;y<5;y++)
        printf("%3d  I ",matrix[5][y]);
      printf("\n\n");
    
      return 0;
    
    }
    


  • Klappt einwandfrei !!! Vielen Dank, hast mir sehr geholfen !

    Cu, Robb.


Anmelden zum Antworten