Eingabe funktioniert nicht

#3435568
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
#3435584
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*/
#3435591
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
    ...
#3435609
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren