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??? großes Grinsen



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 Augenzwinkern .



Geschrieben von Misel am 04.07.2005 um 22:23:

 

Zitat:
Original von CDW
Müsli


verwirrt



Geschrieben von CDW am 04.07.2005 um 23:32:

 

@Misel:
http://www.google.de/search?hl=de&ie=ISO-8859-1&q=m%FCsli+programmierer&btnG=Google-Suche&meta=
Zitat:

Echte Programmierer benutzen FORTRAN. Müsli-Fresser benutzen PASCAL.


ja, ich bin ein Müslifresser Zunge raus


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH