Benötige Hilfe beim Zahlendreieck
-
Hallo liebe Community,
ich studiere derzeit IT und möchte vor den Prüfungen üben.
Dabei trat ich auf folgende Aufgabe :Erzeugen Sie in einem Programm zu einer Folge von maximal 20 Zahlen, die vom Benutzer einzugeben sind, das Zahlendreieck, in dem sich ab der zweiten Zeile jede Zahl als Summe der darüberliegenden Zahl und deren rechter Nachbarzahl ergibt.
Beispiel mit 4 Zahlen:
3 8 12 6
11 20 18
31 38
69Den Ansatz mit 4 Zahlen habe ich bereits geschafft.
Hier mein Quellcode :#include <stdio.h> #include <stdlib.h> int main(){ int feld[3]; int zeile1[2]; int zeile2[1]; int zeile3[0]; for(int n=0;n <=3;n++){ printf("Bitte Zahl %d eingeben: \n",n+1); scanf("%d",&feld[n]); } printf("\n\n---------------------\n\n"); for(int j=0;j<=3;j++){ printf("%d\t",feld[j]); } printf("\n"); for(int m=0;m<=2;m++){ zeile1[m]=(feld[m]+feld[m+1]); printf("%d\t",zeile1[m]); } printf("\n"); for(int k=0;k<=1;k++){ zeile2[k]=zeile1[k]+(feld[k+1]+feld[k+2]); printf("%d\t",zeile2[k]); //printf("%d\t",((feld[k]+feld[k+1])+(feld[k+1]+feld[k+2]))); } printf("\n"); for(int l=0;l<=0;l++){ zeile3[l]=zeile2[l]+feld[l+1]+feld[l+2]+feld[l+2]+feld[l+3]; printf("%d\t",zeile3[l]); //printf("%d\t",(feld[l]+feld[l+1]+feld[l+1]+feld[l+2]+feld[l+1]+feld[l+2]+feld[l+2]+feld[l+3])); } printf("\n\n\n"); system("PAUSE"); return 0; }
Ich könnte es natürlich auch weiterhin für 20 Zahlen fortführen ,dennoch wird der Code zu lang und unübersichtlich. Ich weiss, dass ich eine Verschachtelung der For-Schleifen benutzen muss, aber auf die endgültige Lösung komme ich nicht. Für jeden Tipp wäre ich dankbar.
-
Ungetestet:
for(int j=3-1;j>0;j++){ for(i=0;i<j;i++) { feld[i] = feld[i]+feld[i+1]; printf("%d\t",feld[i]); } }
-
Hallo und danke für deinen Beitrag.
Kann es sein , dass die erste Zeile eine unendlich Schleife ist?
for(int j=3-1;j>0;j++){
Die Zählung beginnt ab 2 und ist immer größter als Null.
Mit for(int j=3-1;j>0;j--){
klappt die erste Zeile schonmal
-
Das ungetestet stet da nicht einfach so.
Die Schleife soll runterzählen. Also muss da ein j--- hin.Du fängst ja mit der langen ZEile an und wirst dann immer kleiner.
Die genauen Werte für Start und Endpunkt (bzw die Bedingung) musst du aber selber rausfinden.
-
Danke ich habe jetzt schon eine Ahnung wie ich das machen könnte.