BlackBoard » Design, Programmierung & Entwicklung » Programmieren » C Programm funktioniert nicht, wie es soll » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Programm funktioniert nicht, wie es soll
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Watchme Watchme ist männlich
Neuling

images/avatars/avatar-902.jpg

Dabei seit: 23.03.2003
Beiträge: 7
Herkunft: Black Mesa

Achtung Programm funktioniert nicht, wie es soll       Zum Anfang der Seite springen

Hi Leute,

ich habe ein kleines "Programm" geschrieben, da der Quelltext zuviel Platz raubt, wollte ich ihn in 'ner *.txt anhängen, es gab aber immer Fehler beim Hochladen, so war ich gezwungen sie hier rein zu quetschen, sorry!

Meine Probleme!
1. Ich will das bild "löschen", also hab ich 'ne for-Schleife geschrieben, die 25 mal "\n" machen soll, die macht aber nur einen Zeilenumbruch?
2. Ja ich weiß das ich die if von 1-4 in 'ne for bringen kann!
3. Warum funzt die 5te if nicht richtig?
4. Wie muss ich das Programm umschreiben, wenn ich mich z.B. von 1-3 "durcharbeite" und dann wieder in die 1 oder 2 springen will?
(Bitte Header + Funktion + Syntax erklären)

Ich bedanke mich schon jetzt für eure Antworten!

Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
#include<stdio.h>

void loesche_bild(void){
int x;
for(x = 1; x <= 25; x++);
printf("\n");
}

int main(){
int iEingabe, x;
int iGanz1, iGanz2, iGanz3;
float fGanz1, fGanz2, fGanz3;
char cZeichen1, cZeichen2, cZeichen3, cBeenden;
char cStrings1[20], cStrings2[20], cStrings3[20];

printf("\n\t\t\tEinlesen von Varb\n");
printf("\nFuer Ganz-Zahl-Eingabe(1), Float-Zahl-Eingabe(2), Charakter-Zeichen-Eingabe(3),\n\t\t String-Zeichenfolge-Eingabe(4) und Beenden(5)\n\n> ");
scanf("%i", &iEingabe);
getchar();

if(iEingabe==1){
  printf("\nBitte Ganz-Zahl eingen\n> ");
  scanf("%i", &iGanz1);

  printf("\nBitte Ganz-Zahl eingen\n> ");
  scanf("%i", &iGanz2);

  printf("\nBitte Ganz-Zahl eingen\n> ");
  scanf("%i", &iGanz3);

  printf("\nDie Ganz-Zahlen wahren\n> %i %i %i", iGanz1,iGanz2,iGanz3);
  
  getch();//weil, wenn es funzen würde, keine Möglichkeit besteht die Ergebnisse zu sehen!
  loesche_bild();

  printf("\n\nGanz-Zahl(1), Float-Zahl(2), Char(3), String(4) und Beenden(5)\n> ");
  scanf("%i", &iEingabe);
}

if(iEingabe==2){
   printf("\nBitte Float-Zahl eingen\n> ");
   scanf("%f", &fGanz1);

   printf("\nBitte Float-Zahl eingen\n> ");
   scanf("%f", &fGanz2);

   printf("\nBitte Float-Zahl eingen\n> ");
   scanf("%f", &fGanz3);

   printf("\nDie Float-Zahlen wahren\n> %f %f %f", fGanz1,fGanz2,fGanz3);

   printf("\n\nGanz-Zahl(1), Float-Zahl(2), Char(3), String(4) und Beenden(5)\n> ");
   scanf("%i", &iEingabe);
}

if(iEingabe==3){
   getchar();//muss gesetz werden sonst treten Fehler auf?
   printf("\nBitte Char eingen\n> ");
   scanf("%c", &cZeichen1);
   getchar();//muss gesetz werden sonst treten Fehler auf

   printf("\nBitte Char eingen\n> ");
   scanf("%c", &cZeichen2);
   getchar();//muss gesetz werden sonst treten Fehler auf

   printf("\nBitte Char eingen\n> ");
   scanf("%c", &cZeichen3);
   getchar();//muss gesetz werden sonst treten Fehler auf

   printf("\nDie Char wahren\n> %c %c %c", cZeichen1, cZeichen2, cZeichen3);

   printf("\n\nGanz-Zahl(1), Float-Zahl(2), Char(3), String(4) und Beenden(5)\n> ");
   scanf("%i", &iEingabe);
}

if(iEingabe==4){
   getchar();//muss gesetz werden sonst treten Fehler auf?
   printf("\nEinlesen von Strings"[20]"\n"); 
   printf("\nBitte String eingen\n> ");
   gets(cStrings1);

   printf("\nBitte String eingen\n> ");
   gets(cStrings2);

   printf("\nBitte String eingen\n> ");
   gets(cStrings3);

   printf("\nDie Strings wahren\n> %s %s %s", cStrings1, cStrings2, cStrings3);

   printf("\n\nGanz-Zahl(1), Float-Zahl(2), Char(3), String(4) und Beenden(5)\n> ");
   scanf("%i", &iEingabe);
}

if (iEingabe==5){
   printf("\nMoechten sie wirklich beenden? (J/N)\n> ");
   scanf("%c",&cBeenden);
   getchar();
   
   if(cBeenden == 'j' || 'J'){
      printf("\n\n\tmade by Shark85\n\n");
      getch();
      }

   else if(cBeenden == 'n' || 'N'){
      printf("\n\nGanz-Zahl(1), Float-Zahl(2), Char(3), String(4) und Beenden(5)\n> ");
      scanf("%i", &iEingabe);
      getchar();
      }

   else{
      printf("\n\nFalsche Eingabe\a");
      getch();
      }

}

return 0;
}
31.03.2003 18:55 Watchme ist offline E-Mail an Watchme senden Beiträge von Watchme suchen
Brain15 Brain15 ist männlich
Aufsteiger


Dabei seit: 01.03.2003
Beiträge: 61
Herkunft: Alle fragen sich wieso , aber ICH war das Spermium das sich durchsetzte :-)

      Zum Anfang der Seite springen

Ich würde das komplette Progamm ab der Zeile 16 in eine while-Schleife packen. Wenn Du Anfangs statt einem Buchstaben eine Zahl eingibst, folgt ein Laufzeitfehler. Mit einer while-Schleife könntest Du bestimmen, daß das Programm bei einer falschen Eingabe wieder an den Schleifenanfang springen soll.

Genauso würde ich das bei der "Option" Beenden machen.

Statt in den If-Bedingungen Buchstaben zu verwenden, beschränke Dich dabei besser auf ASCII-code (z.B. verwende statt dem j die 106, statt dem J die 74, statt dem n die 110 und statt dem N die 7 8)

Ich hab Dir hier mal ein Beispielprogramm geschrieben:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
#include <stdio.h>

loesche_bild();  // Funktionsprototyp
beenden();

void main()
{
char menue;


while (1)    // Endlosschleife
{
loesche_bild();

printf("Programmanfang\n\n");
printf("(1) Option1\n");
printf("(2) Option2\n");
printf("(3) Option3\n");
printf("(Q) Quit\n");

printf("\n\nIhre Eingabe: ");
scanf("\n%c",&menue);    // beachte den Zeilenumbruch vor %c


if(menue == 81 || menue == 113)    // Quit
        {
        beenden();    // Hier rufst Du die Funktion Beenden auf
        }

        if(menue == 49)   // Option 1
        {
        printf("Option 1\n");
        getch();
        // Hier steht der Code für Option 1 ... kannst Du auch in Funktionen packen
        }

        if(menue == 50)    // Option 2
        {
        printf("Option 2\n");
     getch();
        // Hier steht der Code für Option 2 ... kannst Du auch in Funktionen packen
        }

        if(menue == 51)    //  Option 3
        {
        printf("Option 3\n");
        getch();
        // Hier steht der Code für Option 3 ... kannst Du auch in Funktionen packen
        }

}    // Ende der While-Schleife


}    // Ende von Main




loesche_bild()
{
int x;
for(x=1; x<=30; x++)
printf("\n");
return 0;
}


beenden()
{
char x;

while (1)    // Endlosschleife
{
printf("Möchten Sie das Programm wirklich verlassen (J/N > ");
scanf("\n%c",&x);

if (x == 106 || x == 74)
{
exit(1);
}

if (x == 110 || x == 78)
{
break;
}

}    // Ende der While-Schleife

}    // Ende der Funktion


__________________
[GLOW=#FF0001]Wer noch nie einen Fehler gemacht hat, hat sich noch nie an etwas Neuem versucht[/GLOW]
31.03.2003 19:15 Brain15 ist offline E-Mail an Brain15 senden Beiträge von Brain15 suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Hm, der Quelltext zeigt mir das du wohl noch nicht lange
mit C arbeitest.

Eine Funktion 'löschebild' brauchst du nicht, rufe einfach
system("cls"); auf.

Statt den ganzen If blöcken könntest du sie
mit einem Switch-case Block ersetzen, das würde
den Code auch übersichtlicher machen.

Dann warum zeigst du das Menü noch mal zum schluss der Ifblöcke ein ?
Macht eigentlich keinen Sinn.

Devil

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
31.03.2003 20:03 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » C Programm funktioniert nicht, wie es soll

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH