Forum: Compiler & IDEs Eingabe funktioniert nicht


von Simon N. (ardi)


Lesenswert?

Hi,
ich habe ein Problem welches eigentlich auf Anfänger Basis ist aber ich 
bekommen aber nicht raus was da schief ist:

Ich habe zwei Eingaben und diese Eingaben sind ganz normale Zahlen (int)
Diese Zahlen sollen dann in for Schleifen. Wenn ich statisch Zahlen den 
Variablen gebe dann funktionieren die for Schleifen ganz normal wie sie 
sollten und wenn ich die per Eingabe mache dann kommt eine 
Endlosschleife:
1
.
2
.
3
.
4
printf("Leange des Breadboards (Anzahl der Stiftkeastchen): ");
5
scanf("%d", &leange);
6
printf("Breite des Breadboards (Anzahl der Stiftkeastchen): ");
7
scanf("%d", &breite);
8
.
9
.
10
.

Gruß und Danke

von Karl H. (kbuchegg)


Lesenswert?

Ich seh in deinem Code keine Schleife.

Bitte poste den kompletten Code. Das Problem ist wahrscheinlich nicht 
das was du denkst. Ich hab zwar eine Vermutung aber ohne kompletten Code 
kann man nichts genaueres sagen.

von Simon N. (ardi)


Lesenswert?

1
#include <stdio.h>
2
3
int main(){
4
int i;
5
int j;
6
int leange;
7
int breite;
8
int k;
9
int l;
10
int m;
11
int n;
12
int abschnitt1u2=breite/2;
13
14
/*-----------------Start-----------------------------*/
15
printf("-----------------Breadboardeditor Version 0.1--------------------");
16
printf("\n\n");
17
printf("Willkommen zu dem Breadboardeditor V0.1\n");
18
printf("Um es Entwicklern leichter zu machen mit Breadboards zu arbeiten, habe\n");
19
printf("ich ein kleines Programm geschrieben, welches Entwicklern helfen soll ein Breadboard\n");
20
printf("auf Papier zu bringen, um dort etwas zu skizzieren.\n");
21
printf("\nAnleitung:\n");
22
printf("1. Masse eingeben\n");
23
printf("2. Ergebniss kopieren (Rechtsklick >> Markieren dann Rechtklick >> Kopieren)\n");
24
printf("3. In Texteditor (Standart MS Notepad empfohlen, wegen Zeilenabstand)\n");
25
printf("\n\n");
26
27
    /*-----------------Programm mit klein o-----------------------*/
28
printf("Leange des Breadboards (Anzahl der Stiftkeastchen): ");
29
scanf("%d", &leange);
30
printf("Breite des Breadboards (Anzahl der Stiftkeastchen): ");
31
scanf("%d", &breite);
32
for(i=0; i<=abschnitt1u2; i++){
33
        for(j=0; j<=leange; j++){
34
            printf("o");
35
        }
36
            printf("\n");
37
       }
38
39
       for(n=0; n<=abschnitt1u2; n++){
40
        printf("_-");
41
       }
42
       printf("\n");
43
44
for(k=0; k<=abschnitt1u2; k++){
45
        for(m=0; m<=leange; m++){
46
            printf("o");
47
    }
48
    printf("\n");
49
}
50
return 0;
51
}
52
53
/* Alle Rechte vorbehalten*/

von Karl H. (kbuchegg)


Lesenswert?

Ähm
1
...
2
int breite;
3
...
4
int abschnitt1u2=breite/2;
5
...

C ist nicht Excel, dass sich selber zusammen sucht, in welcher 
Reihenfolge welche Berechnungen gemacht werden müssen, damit am Ende ein 
sinnvolles Resultat rauskommt.

Funktionen werden von oben nach unten abgearbeitet, es sei denn durch 
Schleifen oder Abfragen ergibt sich etwas anderes. Du kannst nicht den 
Wert von abschnitt1u2 berechnen, solange du den Wert von breite noch 
nicht hast.

1
 ....
2
int breite;
3
...
4
int abschnitt1u2;
5
....
6
7
  printf("Breite des Breadboards (Anzahl der Stiftkeastchen): ");
8
  scanf("%d", &breite);
9
10
/* jetzt kennst du den Wert für 'breite'. Und erst jetzt kannst du den Wert
11
** für abschnitt1u2 berechnen
12
*/
13
14
  abschnitt1u2 = breite / 2;
15
16
/*
17
*/
18
  for(i=0; i<=abschnitt1u2; i++){
19
    ...

von Karl H. (kbuchegg)


Lesenswert?

PS:
1
printf("3. In Texteditor (Standart MS Notepad empfohlen, wegen Zeilenabstand)\n");
Standard schreibt sich hinten mit einem 'd'.
Dieser Satz kein Verb.

von Simon N. (ardi)


Lesenswert?

Ok vielen Dank hat sich damit erledigt. Kann geschlossen werden. Und das 
mit dem Standard war tut mir leid :)

von Karl H. (kbuchegg)


Lesenswert?

Nicht so schnell.

Wenn du wieder mal so ein Problem hast:
Schleifen laufen nicht von alleine endlos. In deinem Fall gibt es eine 
Abbruchbedingung. DIe ist offenbar nie erfüllt worden (bzw. du warst zu 
ungeduldig).
Aber: du hast ein funktionierendes printf.
Wenn man nicht weiß, welche Werte diverse Variablen haben, zum Beispiel 
die Variablen in Abbruchbedingungen, dann ist es durchaus erlaubt, sich 
die Werte ausgeben zu lassen. Selbst dann, wenn das momentan dein 
angedachtes Schirmbild durcheinander bringt.
1
printf("Leange des Breadboards (Anzahl der Stiftkeastchen): ");
2
scanf("%d", &leange);
3
printf("Breite des Breadboards (Anzahl der Stiftkeastchen): ");
4
scanf("%d", &breite);
5
6
printf( "L:%d, B:%d, abschnitt1u2 %d\n, laenge, breite, abschnitt1u2 );
7
8
for(i=0; i<=abschnitt1u2; i++){

damit hättest du gesehen, dass mit dem Wert, der zur Schleifensteuerung 
benutzt wird, etwas nicht stimmt.

von Simon N. (ardi)


Lesenswert?

Ok ich werde drauf achten.
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.