BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- C if schleifen werden übersprungen (http://www.black-board.net/thread.php?threadid=20698)
Geschrieben von 0cool am 29.06.2005 um 12:43:
if schleifen werden übersprungen
Hey Leute,
erst mal ich hab vor zwei tagen mit C-Programmieren angefangen also noch ein völliger Newbie.
Mein Problem ist das in meinem Programm beide if schleifen übersprungen werden und ich weis nicht woran das liegt.
hier erstmal mein quellecode:
/* bspl0012.c */
#include <stdio.h>
main () {
int zahl;
float betrag;
printf ("\n\tE u r o r e c h n e r\n");
printf ("\n1 DM --> Euro\n2 Euro --> DM\n");
printf ("Ihre Wahl: ");
scanf ("%f", &zahl);
if (zahl == 1) {
printf ("Bitte DM Betrag eingeben: ");
scanf ("%f", &betrag);
printf ("%.2f DM sind %.2f Euro\n\n", betrag, betrag*0.51129);
}
if (zahl == 2) {
printf ("Bitte EURO Betrag eingeben: ");
scanf ("%f", &betrag);
printf ("%.2f EURO sind %.2f DM\n\n", betrag, betrag*1.95583);
}
system("PAUSE");
return 0;
}
Danke für eure Hilfe
0cool
Geschrieben von LX am 29.06.2005 um 12:46:
Du liest die Zahl als float ein (%f bei scanf()), vergleichst sie aber mit Integern (== 1 oder 2). Solche Vergleiche funktionieren nicht. Wenn du also Integer mit Integern vergleichen willst, dann lese auch nur Integer ein, das müsste das Kürzel %d bei scanf() gewesen sein.
Geschrieben von deklarmart am 29.06.2005 um 13:33:
ich kenne nur java, aber trotz der ähnlichkeit habe ich noch NIE eine IF-Schleife gesehen!
gibts sowas in C endlich???
Geschrieben von 0cool am 29.06.2005 um 15:01:
if schleifen werden übersprungen
@LX: es lag an der zeile die du gemeint hast
scanf ("%f", &zahl);
mit dem %d statt %f hat es nicht funktioniert, aber das kürzel für interger bei C ist auch %i und damit hat es dann auch geklappt
Danke für deine hilfe
0cool
Geschrieben von Misel am 29.06.2005 um 18:27:
RE: if schleifen werden übersprungen
Zitat: |
Original von 0cool
mit dem %d statt %f hat es nicht funktioniert, aber das kürzel für interger bei C ist auch %i und damit hat es dann auch geklappt
|
jain,
%i und %d stehen beide für einen Integerplatzhalter. printf und scanf sind reagieren dabei jedoch mitunter unterschiedlich.
Geschrieben von Black Star am 29.06.2005 um 18:39:
Bei der glibc sieht das so aus:
d
Matches an optionally signed decimal integer; the next pointer must be a pointer to int.
i
Matches an optionally signed integer; the next pointer must be a pointer to int. The integer is read in base 16 if it begins with `0x' or `0X', in base 8 if it begins with `0', and in base 10 otherwise. Only characters that correspond to the base are used.
Geschrieben von CDW am 30.06.2005 um 00:22:
hm, also in lcc32 funktioniert es mit beidem: %i und %d. Allerdings steht in der Hilfe dass beides "Signed dezimal integer" sind.
*ist gar nicht so einfach eine ANSI C Referenz zum download zu finden.*
laut
http://www.petra-budde.de/download/ansi-c.pdf
sind i und d dezimal, ganzzahlig. Also zumindest von der Logik her dürften auch beide Varianten funktionieren.
@0cool: könntest Du sagen welchen Compiler Du verwendest?
PS: und noch ein Grund mehr, C nicht zu mögen und beim Müsli zu bleiben
.
Geschrieben von Misel am 04.07.2005 um 22:23:
Zitat: |
Original von CDW
Müsli |
Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH