![]() |
Brauche Hilfe in C
ich bräucht wieder mal eure hilfe in c
unser 1. programm in der schule rechnet das idealgewicht abhängig vom geschlecht aus mann gibt m oder w ein (fürs geschlecht) und die größe - ausgegeben wird dann das idealgewicht für den fall, dass etwas anderes als m oder w eingegeben wird, soll sofort nach der eingabe des geschlechts eine meldung kommen, die auf den fehler aufmerksam macht aber die meldung kommt erst nach eingabe der körpergröße :( hier is der code: Code:
#include <stdio.h>danke, schon mal |
soweit ich mich erinnere, sollte das so gehen ...
Code:
#include <stdio.h> |
laut unserem lehrer sollte das mit switch/case zu lösen sein - ohne schleife
|
hab jetzt deinen code probiert
wenn ich etwas anderes als m oder w eingeb, hupft der cursor in die nächste zeile und es tut sich nix |
Du solltest die Tastatureingabe ohne Bildschirmecho machen und vor dem scanf mit gotoxy(x,y); den Cursor positionieren. Die Bedingung der while Schleife ist jedenfalls gut gelöst.
Für x und y musst Du selbstverständlich eigene Werte als Literale (=Direktwerte) verwenden, also zum Beispiel gotoxy(2,10); Spalte 2 Zeile 10 mfg Kikakater |
Zitat:
|
Code:
while(!kbhit()); /* solange keine Taste gedrückt wird kommt bei kbhit() 0 (=false) zurück */ |
das wird unserem lehrer mit sicherheit zu kompliziert sein
die befehle/funktionen, die du verwendest, haben wir noch nicht mal besprochen |
Jedenfalls funktioniert es (Borland C), sonst halt nur key= getch(); verwenden und bei der switch Anweisung:
Code:
case 'm': |
@kikakater hab zwar schon lang kein c mehr gesehn, aber fehlt bei deinem case nicht ein default wert (sorry falls ich mich irre)
|
Ein default Zweig ist nicht zwingend notwendig, es geht ja nur um das Ausrechnen eines Wertes. Außerdem ist die switch Anweisung im else Zweig einer if(Bedingung==true) Konstruktion eingebettet. Insofern ist dort der default Zweig realisiert ...
|
habs jetzt mit einer if-abfrage probiert
für mich wärs logisch, aber es geht nicht - sobald ich was anderes als m oder w eingeb, wird aus dem programm ausgestiegen Code:
#include <stdio.h> |
Ohne erneute Möglichkeit zur - dann korrekten - Eingabe wird das Programm eben weiter ausgeführt. In diesem Fall gibt es eben keine weiteren Befehle nach dem if-Befehl und deswegen wird das Programm beendet.
Verwende eine Schleife um die if() else Konstruktion und ein break; im else Zweig. Code:
for( ; ; ) |
ah, es geht schon
der fehler war, dass das getch(); im else-zweig war ;) |
eine frage hab ich noch
wie bring kann ich das programm dazu bringen, nach der ausgabe ("ihr idealgewicht ist ...") nicht zu schliessen, sondern durch einen tastendruck nochmal von vorn anzufangen (eingabe von geschlecht usw.)? |
Lösung steht oben, eine for Schleife verwenden.
|
Zitat:
Code:
printf...; |
hm, hab noch eine frage :rolleyes:
ich will eine aktion ausführen, wenn die eingegebene zahl im bestimmten zahlenbereich ist beispiel: wenn die eingegebene zahl im zahlenbereich 10-20 ist, dann den text "blablabla" ausgeben geht das nur mit if oder auch mit switch/case? habs mit switch/case probiert, aber leider dürften da < und > nicht gehen :( |
bei switch/case kannst du nur exakte werte abfragen ... wertebereich gehen nur mit if ...
|
ok, thx
|
Na geht eh mit switch/case:
Code:
category= (kg < 10) ? 1 : (kg < 20) ? 2 : (kg < 30) ? 3 : 4; |
hm, mein programm hat einige fehler - und zwar in den zeilen 22, 26, 32, 32, 38, 38, 44, 55
das programm hab ich an diesen post angehängt ich weiß leider nicht, was ich falsch gemacht hab - trotz dem text, den turbo c ausgibt :( |
@kikakater
boah, elegant ... auf die idee hätt ich eigentlich auch schon mal kommen können :rolleyes: |
Cooles Programm :D
numerische_variable < 22 und nicht numerische_variable '<22' die Apostroph Zeichen werden nur für einzelne ASCII also char (=Character) Zeichen verwendet um eben die gerade genannten (ASCII bzw. char) Zeichen zu umschliessen. Also entweder: char_variable < 'A' oder (gleichbedeutend): char_variable < 65 |
@pc.net: Ja ... Hi Fans, Victory Zeichen, *Herum geh 360°* :D
|
Code:
#include <stdio.h> |
@ kikakater
soweit simma noch gar ned hab jetzt nochmal das programm angehängt, hab noch immer 6 fehler drin :( |
Code:
printf("%d",&bmi); |
variable => 1 ist falsch, es muss variable >= 1 heißen
Als letzte Zeile musst Du noch eine "geschweifte Klammer geschlossen" anfügen >>> } <<< Du hast eine Klammerebene übersehen ... Ich wollte Dich zuerst selber die Fehler finden lassen. Du musst die Fehlerhinweise der Integrierten Entwicklungsumgebung von Turbo C bzw. wahlweise die Compilerfehlermeldungen im Konsolenfenster (DOS) kennenlernen und Bescheid wissen, was sie bedeuten. |
hm, jetzt bleiben noch 2 fehler:
zeile 22: undefined symbol 'bmi' zeile 55: compound statement missing } |
Du musst bmi am Programmanfang nach void main() { mit int bmi; definieren
Was für eine Bedeutung hat gr ?, diese Variable muß initialisiert werden. Irgendein Wert dividiert durch 0 ist undefiniert gr wird höchstwahrscheinlich 0 sein ... :rolleyes:, wenn Du die Variable in Formeln verwendest, sollte auch ein korrekter Wert darin abgespeichert vorliegen, wie gesagt mit 0 gibt es einen "division by zero" Laufzeitfehler durch das EXE DOS Programm über eine CPU Ausnahmebehandlung. |
*grml*
ich programmier php, also sollt ich das eigentlich wissen :rolleyes: jetzt kommt noch ein error - und zwar bei der klammer nach getch();: compound statement missing } was heißt das? |
} am Programmende anfügen
Gute Nacht ... und versorge gr mit einem korrekten Wert ;) |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 02:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag