Programmieren in C, verschachtelte for-Schleife

emir2525

Newbie
Registriert
Apr. 2022
Beiträge
4
Hallo zusammen,

ich brauche Hilfe und zwar wie kriege ich es in der Programmiersprache C mit Hilfe einer äußeren und einer inneren for-Schleife dies hier ausgegeben:

Zeile 01: a
Zeile 02: a b
Zeile 03: a b c
Zeile 04: a b c d
......

Mein aktueller Code sieht so aus:
#include <stdio.h>
int main() {

int i;
char j;

for(i=1;i<=10;i++) {

printf("Zeile %02d: ", i);

for(j=0;j>=97;j++) {

printf("%c ", j);
}
printf("\n");
}
return 0;
}
 
Einfach Code wirst du nicht bekommen, aber ich gebe nen Tipp: Du hast ne äußer Schleife um die Zeilen zu steuern, und ne innere um die Buchstaben zu drucken. Und die Anzahl der Zeilen ist die Anzahl der Zeichen.
 
  • Gefällt mir
Reaktionen: Powl_0, BeBur und emir2525
Erklär doch mal zu jeder Zeile deine Gedanken (vor allem bei den Schleifen).

Für mich klingt es nach einer Aufgabe (Übungsaufgabe, Hausaufgabe), die werden ungern behandelt hier. Vielleicht merkst du ja selbst was falsch ist, wenn du jede Zeile mal beschreibst in deinen Worten.
 
  • Gefällt mir
Reaktionen: Nore Ply
du hast mehrere "Probleme"...
als erstes solltest du überdenken, wie du Buchstaben "auswählen" und ausgeben möchtest. Das testest du am besten mal ohne Schleife, ganz geradeaus.

wenn das klappt, dann überlegst du dir mal genau, was du in den Zeilen eigentlich ausgeben möchtest...
 
  • Gefällt mir
Reaktionen: playerthreeone
Also die äußere Schleife, für die Zeilenangabe, klappt ohne Probleme, nur leider weiß ich nicht wie ich in der inneren Schleife mit Hilfe des ASCII-Code die entsprechenden Zeichen ausgeben kann(a=97,b=98,...)
 
C:
for(j=0;j>=97;j++)
Diese Schleife wird so nicht funktionieren. Der Startwert des Schleifenzählers soll 0 sein und die Schleife soll so lange laufen, wie der Schleifenzähler größer oder gleich 97 ist!
Und ein kleiner Tipp, die Anzahl der Buchstaben entspricht immer der aktuellen Zeile.
 
Die ASCII Zeichen sind alle alphabetisch geordnet.
Was wie
for(char c = 'a'; c <= 'z'; ++c)
könnte dir helfen.
 
Aufgabe gelöst... endlich

#include<stdio.h>
int main()
{
int i,j;
for( i = 97; i <=106;i++)
{
printf("Zeile %02d:", i-96);
for(j=97 ; j<=i; j++)
printf("%c ",j);
printf("\n");
}
return 0;
}
 
Ist so unnötig schwer zu lesen/verstehen.

Zähl die Zeilen (und Zeichen) lieber mit 0 bis 9 durch und addier die 97 als Zeichenoffset. Das ergibt für den Programmierer mehr Sinn.

Wichtig beim Code ist nicht nur Funktionalität, sondern auch Leserlichkeit für dich sowie potenziell andere. Schwer lesbarer Code führt zu mehr Fehleranfälligkeit, besonders wenn man zu einem späteren Zeitpunkt erst wieder drauf schaut.
 
  • Gefällt mir
Reaktionen: playerthreeone und LorD-AcE
@emir2525
Es gibt übrigens die Möglichkeit

Code:
#include<stdio.h> 
int main()  
{  
 int i,j; 
 for( i = 97; i <=106;i++)
 {
     printf("Zeile %02d:", i-96);
     for(j=97 ; j<=i; j++)
      printf("%c ",j);  
     printf("\n");
 }
 return 0;
}

seinen Quelltext ordentlich formatiert hier zu posten.

code.png
 
  • Gefällt mir
Reaktionen: mental.dIseASe, BAGZZlash und playerthreeone
pseudopseudonym schrieb:
Die ASCII Zeichen sind alle alphabetisch geordnet.
Was wie
for(char c = 'a'; c <= 'z'; ++c)
könnte dir helfen.
scnr :D :
1. Charakter-Literale haben den Typ "int" in C.
2. ASCII ist hier relativ egal. Der C-Standard garantiert, dass 'a'+1 == 'b'
 
  • Gefällt mir
Reaktionen: BAGZZlash
Zurück
Oben