Hilfe Softwareentwicklung DAA

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???
 
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
 
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.
 
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
 
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
 
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?
 
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
 
AW: Hilfe Softwareentwicklung DAA

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