Hilfe Softwareentwicklung DAA

Dieses Thema im Forum "Elektrotechnik" wurde erstellt von GrauerSchlumpf, 6 Okt. 2007.

  1. Hallo,
    ich bereite mich gerade auf meine Prüfung vor, und hänge nun bei Aufgabe 5 Seite 110 LM1 Softwareentwicklung.
    Kurze Beschreibung der Aufgabe:
    Es wurde ein zweidimensionales Feld[5][4] mit Werten initialisiert.
    Nun sollen als erstes die Inhalte der Spalten summiert werden.
    Dann sollen die Inhalte der Zeilen summiert werden.
    Danach die Summe des ganzen Feldes.
    Die einzelnen Summierungen werden mit Hilfe von zwei for Schleifen gelöst.
    Aber wie das funktioniert verstehe ich nicht!!:(:(

    Kann mir bitte jemand helfen???
     
  2. AW: Hilfe Softwareentwicklung DAA

    HI!

    wo hakt es denn genau?

    Manchmal hilft es, in die Schleife eine Ausgabe reinzubauen, um zu sehen, was da passiert.

    cu
    Volker
     
  3. AW: Hilfe Softwareentwicklung DAA

    Hier ist das Programm dazu (teilweise Musterlösung:

    wie funktionieren nun die Schleifen darin?
    Zuerst wird z.B die erste Spalte summiert wird dann die zweite usw.
    Aber wie dbei die SChleifen arbeiten vertehe ich nicht!!

    #include <stdio.h>
    #include <conio.h>

    main()
    {
    int feld[4][5]={{48,40,73,120,100},
    {76,130,90,41,108},
    {49,72,140,124,105},
    {109,74,93,152,91}};
    int z,s,t;

    for(s=0;s<=4;s++)
    {
    t=0;
    for(z=0;z<=3;z++)
    t+=feld[z];
    printf("\nTageserl”s= %i",t,z+1);
    }
    printf("\n");


    for(z=0;z<=3;z++)
    {
    t=0;
    for(s=0;s>=4;s++)
    {
    t+=feld[z];
    printf("\nErl”s Verk„ufer %i = %i",s+1,t);
    }
    }


    for(z=0;z<=3;z++)
    {
    for(s=0;s<=4;s++)
    {
    t+=feld[z];
    printf("Erl”s der Woche= %i",t);
    }
    }
    printf("\n");
    getch();
    getch();
    }
    Mit der einen Schleife werden doch die Zeilen ausgelesen mit der anderen Schleife die Spalten.
     
  4. AW: Hilfe Softwareentwicklung DAA

    HI!

    bau doch wirklich mal in die Schleifen nen paar printf ein, wo Du die Zeile und Spalte und evtl. auch die Summe ausgibst, die an der Stelle gerade erreicht ist.

    Vielleicht hilft es auch, die Schlöeifen um die ein oder andere {} zu ergänzen, auch wenn das für eine Anweisung nicht nötig wäre...

    Und dann schau vielleicht erstmal nur auf eine der 3 Teilaufgaben.

    cu
    Volker
     
  5. AW: Hilfe Softwareentwicklung DAA

    Hallo GrauerSchlumpf,
    Code:
    int feld[4][5]={{ 48,  40, 73,120,100},
                        {  76,130, 90,  41,108},
                        {  49, 72,140,124,105},
                        {109, 74,  93,152,  91}};
    

    Fünf Spalten und vier Zeilen!

    Um zuerst die Spalten zu summieren könntest du eine Schleife schreiben die:
    Code:
    1. for (s=0;s<5;s++)               // Die fünf Spalten abarbeitet
        {
    2.     for (z=0;z<4;z++)            //  In jeder Spalte 4 Zeilen abarbeitet
           {
    3.       summe+=array[z][s]         // In jeder Spalte 4 Werte addiert
           }
    4.   printf("Spalten = %i\n",summe) // Und die Summe ausgibt
    5.   summe=0;                       // Summe für die nächsten additionen auf 0
        }
    
    
    Die äußere Schleife wählt also eine Spalte aus.
    Die Innere summiert alle Werte in dieser Spalte.

    Man kann so eine Konstruktion leicht überschaubar machen indem man die einzelnen Schritte nachvollzieht und die Werte der Variablen dazu notiert.

    Z.B.:
    Code:
                         s                  z                summe             ausgabe
    1.                  0                  ?                   ?
    2.                  0                  0                   ?
    3.                  0                  0                   48
    3.                  0                  1                   124
    3.                  0                  2                   173
    3.                  0                  3                   282
    4.                  0                  3                   282               282 
    5.                  0                  3                     0                
    1.                  1                  3                     0
    2.                  1                  0                     0         usw.   
    

    Das ist zugegeben viel arbeit, aber im Wörterbuch steht das Wort Arbeit nun einmal vor dem Wort Erfolg.

    Mit der Summe der Zeilen kann man es fast genauso machen, jetzt werden nur die Äußere und Innere getauscht.

    Die äußere Schleife wählt also eine Zeile aus.
    Die Innere summiert alle Werte in dieser Zeile.

    Und um die Summe des gesamten arrays zu ermitteln kannst du einfach die
    Zeile 5. summe=0; weglassen. Welche Schleifenreihenfolge du benutzt spielt dann keine Rolle. Es werden alle Elemente des arrays addiert, die Reihenfolge ist ja nicht wichtig.
    Die Ausgabe muss dann natürlich nach der äußeren Schleife erfolgen, also wenn alle Werte summiert wurden.

    Es währe außerdem sinnvoll dein Ziel genau zu beschreiben.
    Summieren der Spalten:
    - alle in eine Summe oder jede Spalte extra?
    - jede Spalte extra ausgeben, wenn ja soll ersichtlich sein welcher Wert
    dargestellt wird? Z.B. Spalte 1 = xxx, Spalte 2 = xxx



    kohle43
     
  6. AW: Hilfe Softwareentwicklung DAA

    Erstmal Danke für deine Hilfe.

    Es soll jede Spalte einzeln summiert werden!

    Inzwischen ist mir wieder eingefallen wie das mit den Schleifen funktioniert.


    Mit der ersten Schleife wird beim ersten Durchgang s[0] "ausgewählt". Dann kommt die zweite Schleife hier wird z[0] "ausgewählt. Diese läuft 4 Durchgänge (bis z[3]).
    Dann kommt folgende Anweisung:
    t+=feld[z];
    Das könnte ich ja auch so schreiben t=t+feld[z]
    und ab hier habe ich den Faden verloren. Wie werden nun die Spalten addiert und ausgegeben?
     
  7. AW: Hilfe Softwareentwicklung DAA

    HI!

    Schau Dir doch mal den Unterschied der beiden Blöcke an:

    for(s=0;s<=4;s++)
    {
    t=0;
    for(z=0;z<=3;z++)
    t+=feld[z];
    printf("\nTageserl”s= %i",t,z+1);
    }
    printf("\n");


    for(z=0;z<=3;z++)
    {
    t=0;
    for(s=0;s>=4;s++)
    {
    t+=feld[z];
    printf("\nErl”s Verk„ufer %i = %i",s+1,t);
    }
    }


    es ist einfach die Reihenfolge, wie das Array durchlaufen wird.

    cu
    Volker
     
  8. AW: Hilfe Softwareentwicklung DAA

    Danke habe es endlich kapiert :rolleyes:
     
  9. AW: Hilfe Softwareentwicklung DAA

    Hi!
    Wird die Prüfung ähnlich Musterklausur? Was war das letzte Mal dran?
    Weiß jemand mehr.....
     
Schlagworte:

Diese Seite empfehlen