Kleines C Programm
-
Hi,
ich möchte ein kleines Programm machen wo ich eine Zahl eingebe und dann das Programm mir * (Sterne) ausgibt. Also wenn ich die Zahl 4 eingebe sollte es mir **** anzeigen.
Hier der Code, was habe ich falsch gemacht?
#include <stdio.h> int read_data() { int i; scanf("%d", &i); return i; } int main() { int i = read_data(); for(i=0; i<int i; ++i)){ printf("*"); } }
-
@jasmin89 Die for-Schleife passt nicht.
Du liest i ein und setzt es als erstes in der for-Schleife auf 0
Eine zweite Variable zum zählen nehmen oder rückwärts zählen.
-
Wie kann ich dies denn implementieren? Ich komme leider nicht recht weiter
-
@jasmin89
Naja, überlege mal, Du hast in Zeile 3 bis 7 eine Funktion, welche Dir die eingegebene Zahl der Konsoleneingabe als Rückgabewert zurückgibt.Dann holst Du dir in Zeile 11 durch den Funktionsaufruf diesen Wert und speicherst diesen in Deiner Variable "i". Nun sagst Du aber in Zeile 13, dass i null ist (löscht also den zuvorigen Wert) und vergleichst null mit null (mal ganz abgesehen von der erneuten Deklaration von i in dieser Zeile).
Nun musst Du überlegen, wie es besser ginge. Stichwort im Vorpost wäre das Rückwärtszählen.
-
Vorbemerkung: Rückgabewerte immer prüfen. Hier den von scanf. (gut, ist für deine Frage erstmal egal)
Dein Fehler: du verwendest ein
i
für die eingelesene Zahl und dann eini
in der Schleife. Nimm bessere Namen! Die Schleifenvariable kanni
heißen (Konvention), aber nimm für die mitread_data
eingelesene Variable einen besseren Namen. Ein besserer Name wäre zum BeispielnSterne
.Damit wäre deine for-Loop:
for (int i = 0; i < nSterne; ++i) ...
-
Erstmal Danke für die Antworten.
Ich habe nun etwas rumprobiert und dies so geschrieben:
#include <stdio.h> int read_data() { int i; scanf("%d", &i); return i; } int main() { int i = read_data(), nSterne=i; for (int i = 0; i < nSterne; ++i){ printf("*"); } }
Ich glaube jetzt müsste es funktionieren. Ich finde programmieren ist echt knifflig....
-
@jasmin89 sagte in Kleines C Programm:
Erstmal Danke für die Antworten.
Ich habe nun etwas rumprobiert und dies so geschrieben:
#include <stdio.h> int read_data() { int i; scanf("%d", &i); return i; } int main() { int i = read_data(), nSterne=i; for (int i = 0; i < nSterne; ++i){ printf("*"); } }
Ich glaube jetzt müsste es funktionieren. Ich finde programmieren ist echt knifflig....
Trotzdem ist die Zeile
int i = read_data(), nSterne=i;
alles andere als optimal. Du willst
nSterne
den Rückgabewert vonread_data
zuweisen. Warum machst Du das nicht direkt?int nSterne = read_data();
-
@jasmin89 Vielleicht geht Dir ein Knoten im Hirn auf wenn Du beantwortest wie viele verschiedene
i
s Du in Deinem Programm hast.Tip:
int i = /* ... */; for (int i = /* ... */;;) { // ... }
das sind schon ZWEI verschiedene
i
s.