Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Warum "Nikolaus" schließen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.09.2004, 22:52 Uhr
(un)wissender
Niveauwart


@Pablo
Du hättest ihm Zeit geben müssen, seinen Ansatz zu zeigen!

@CGuardian

Das sollte dir helfen, du müßtest es noch ausbauen...

C++:
#include <stdio.h>

int main()
{
    int a,b,c;
    scanf("%d%d%d", &a, &b, &c) ;
    printf("Geld: %.2fDM", a*2 + b + (float)c/2);  
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.09.2004, 15:24 Uhr
CGuardian



Ok hier mal meine Lösung wobei ich jetzt keine Fehler mehr sehe, und auch beim Kompilieren keinen Fehler mehr bekomme aber nach der 1 eingabe eine Speicherfehlermeldung bekomme.


C++:
#include <stdio.h>

int main()
{
  int mark, zweimark, fuffziger;
  float ergebnis;
  printf("Bitte gib die anzahl der Markstucke ein :");
  scanf("%d,&mark");
  printf("Bitte gib die anzahl der Zweimarkstuecke ein :");
  scanf("%d,&zweimark");
  printf("Bitte gib die anzahl der Fuffziger ein :");
  scanf("%d,&fuffziger");
  ergebnis = (float)mark + (2.0 * (float)zweimark) + (0.5 * (float)fuffziger);
  printf("Summe in DM : %d",ergebnis);
  return 0; // Ende der Funktion
}



Und die Typumwandlung unklar ist, zumindet von aufbau..
--
Was für ein mieses Volk müssen wir sein, wenn der Spruch zutrifft, dass ein Volk immer die Politiker hat die es verdient?!

Dieser Post wurde am 24.09.2004 um 20:54 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.09.2004, 15:28 Uhr
Tommix



Hallo,
es muß

C++:
scanf("%d", &mark);


usw. heißen, die Anführungszeichen sind falsch gesetzt.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.09.2004, 15:30 Uhr
ao

(Operator)



Zitat von CGuardian:
Speicherfehlermeldung

C++:
  scanf("%d,&mark"); // Falsch
  scanf("%d",&mark); // Richtig


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.09.2004, 15:35 Uhr
(un)wissender
Niveauwart


Hm, du solltest einfach mal genauer das ansehen was ich geschrieben habe.
printf("Summe in DM : %d",ergebnis); ist falsch, du willst ja keinen Integer ausgeben, sonder einen float.
Also:printf("Summe in DM : %f",ergebnis); besser noch auf zwei Stellen nach dem Komma begrenzen: printf("Summe in DM : %.2f",ergebnis);

[pedantic]
Anzahl schreibt man groß.
[/pedantic]
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.09.2004, 15:39 Uhr
CGuardian



Prima Danke nochmal

Und hier meine Lösung


C++:
#include <stdio.h>

int main()
{
  int mark, zweimark, fuffziger;
  float ergebnis;
  printf("Bitte gib die anzahl der Markstucke ein :");
  scanf("%d",&mark); //Fehler behoben
  printf("Bitte gib die anzahl der Zweimarkstuecke ein :");
  scanf("%d",&zweimark);  //Fehler behoben
  printf("Bitte gib die anzahl der Fuffziger ein :");
  scanf("%d",&fuffziger);  //Fehler behoben

  ergebnis = (float)mark + (2.0 * (float)zweimark) + (0.5 * (float)fuffziger);

  printf("Summe in DM : %f",ergebnis);  //Fehler behoben

  return 0; // Ende der Funktion
}




Jetzt ist nur noch offen zu der Float funktion hat da jemand eine gute Beschreibung oder "link".

Nochmals Danke.
--
Was für ein mieses Volk müssen wir sein, wenn der Spruch zutrifft, dass ein Volk immer die Politiker hat die es verdient?!

Dieser Post wurde am 24.09.2004 um 20:54 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.09.2004, 15:41 Uhr
virtual
Sexiest Bit alive
(Operator)


Das mit der Typumwandlung ist mir auch nicht ganz eingängig:

C++:
ergebnis = mark + 2.0*zweimark + 0.5*fuffziger;


Sollte meiner Meinung nach ausreichend sein.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.09.2004, 15:47 Uhr
(un)wissender
Niveauwart


Ganz korrekt ist da simmer noch nicht, denn 0.5 ist ein double, damit wird alles zu double und dann wieder auf float gecasted, um in ergebnis gespeichert zu werden.

Das wäre korrekt, aber noch zuviel des Guten.

C++:
ergebnis = (float)mark + (2.0 * (float)zweimark) + (0.5f * (float)fuffziger);




So ungefär sieht die Arbeit des Compilers aus (es wird ein Parsebaum aufgebaut):
//1. 0.5f * floatfuffziger = float * int -> float
//2. 2*zweimark = integer * interger -> integer
//3. mark + Resultat von 2= integer + interger -> interger
//4. Resultat von 1 + Resultat von 3 = float + integer -> float

Das reicht also:

C++:
ergebnis = mark + 2*zweimark + 0.5f * floatfuffziger;




Bearbeitung:

@virtual
2.0 ist wieder ein double und muss nicht sein, vor allem da nicht.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 24.09.2004 um 15:49 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.09.2004, 16:10 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich würde das f weg lassen: Dann rechnet er eben bis zum = Zeichen mit double (Höhere Genauigkeit) und wandelt dann bei der Zuweisung um. Finde ich okay so.
Auch das "2.0" würde ich persönlich stehen lassen, aber das ist wohl geschmackssache. (Natürlich gebe ich Dir recht, daß der Compiler auch ohne .0 klar kommt)
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.09.2004, 17:22 Uhr
(un)wissender
Niveauwart


Korrekt ist das natürlich, wollte halt nur versucht zu erklären, wie der Compiler das so macht.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: