myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 13.12.12, 13:26   #1
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard C Hilfe bei Getränkeautomat

Guten Tag,

ich bin gerade an einer Aufgabe einen Getränkeautomaten in C zu schreiben. Dabei habe ich jetzt aber mal eine Frage bezüglich der Umsetzung.
Ich möchte gerne, dass er immer das größtmögliche Geldstück/schein ausgibt. Heißt wenn die Cola 1,50 kostet und wir 10€ ihm geben, sollten 4x2€ und ein 0,50€ als Wechselgeld rauskommen. Die Berechnung ist ja kein Problem aber mir fehlt der Ansatz zur Ausgabe mit den Geldstücken. Erstmal sollen nur Einwürfe mit größe als 10€ möglich sein. Das einzige was mir so in den Sinn käme wäre ein switchcase mit jedem erdenklichen Betrag zu machen =D

PHP-Code:
// Getränkeautomat

#include <stdio.h>
#include <stdlib.h>

int main() {

        
//Getränkeliste
        
printf("\n        Our drinks:");
        
printf("\n--------------------------");
        
printf("\n1) Coca Cola         1.85$");
        
printf("\n2) Ice Tea           1.45$");
        
printf("\n3) Water             1.20$");

        
//Getränkeauswahl
        
int choice;
        
float drink1drink2drink3;

        
printf("\n\n\nPlease choose your drink: ");
        
scanf("%d", &choice);

        switch(
choice) {

            case 
1: do{
                        
printf("\nYou choose Coca Cola. Please insert 1.85$: ");        //Kann man das $ Zeichen hinter die Eingabe bekommen?
                        
scanf("%f", &drink1);

                            
//Einwurf >= 10
                            
if(drink1 >= 10){
                                
printf("\nYou insert %2.2f."drink1);
                            }
                            
//Wiederholung bei Einwurf < 10
                            
else{
                                
printf("\nPlease insert more money.");
                            }

                    } while(
drink1 10); break;

            case 
2: do{
                        
printf("\nYou choose Ice Tea. Please insert 1.45$: ");
                        
scanf("%f", &drink2);
                            
                            
//Einwurf >= 10
                            
if(drink2 >= 10){
                                
printf("\nYou insert %2.2f."drink2);
                            }
                            
//Wiederholung bei Einwurf < 10
                            
else{
                                
printf("\nPlease insert more money.");
                            }

                    } while(
drink2 10); break;

            case 
3: do{
                        
printf("\nYou choose Water. Please insert 1.20$: ");
                        
scanf("%f", &drink3);
                            
                            
//Einwurf >= 10
                            
if(drink3 >= 10){
                                
printf("\nYou insert %2.2f."drink3);
                            }
                            
//Wiederholung bei Einwurf < 10
                            
else{
                                
printf("\nPlease insert more money.");
                            }

                    } while(
drink3 10); break;

            default: 
printf("\nYou choose nothing. See you!"); break;

        }

    return 
0;

P.S: Kann man das € Zeichen auch anzeigen lassen?

Schonmal danke im vorraus!
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 13:46   #2
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

int x = auszugebenesGeld / 10:
Danach steht in x die Anzahl der auszugebenen 10€-Scheine.
So kann man es auch mit den übrigen Geldbeträgen machen.
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 15:36   #3
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Ich glaube du verstehst da was falsch oder? Ich möchte ja keine 10€ nur ausgeben sondern eben 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 10,00 20,00 50,00... Stücke und Scheine ausgeben, wobei er immer das höchstmögliche ausgeben soll. Also wenn die Cola 1€ kostet und man 2€ einschmeißt sollen nicht 2x0,50€ kommen sondern 1€
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 15:51   #4
ITWurm
Anfänger
 
Registriert seit: Oct 2012
Beiträge: 16
Bedankt: 7
ITWurm ist noch neu hier! | 0 Respekt Punkte
Standard

Du musst mit dem Modulo-Operator arbeiten und vom größten Geldstück/-schein bis zum kleinsten runtergehen und das ausgegebene subtrahieren.
10€ gegeben und 1,50€ kostet die Coke.
erg = 10 - 1,50 // erg = 8,50
e1 = 8,50 / 2 // e1 = 4 --> da der Rest einfach verworfen wird vom System
rest = erg % 2 // e1 = 0,50 --> das ist der Betrag mit dem du weiter rechnen musst kannst ja als nächstes zuerst prüfen ob rest >= nächstKleinereMünze (in diesem Fall 1€) erspart eventuell Rechenleistung
ITWurm ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 15:51   #5
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Genau das wird passieren wenn du die Idee von Your_Conscience nimmst.

Du hast, um bei deinem Beispiel zu bleiben, 1.50€ für eine Cola und 10€ reingesteckt.

Also teilst du durch die nächst kleinere Ausgabemöglichkeit (ausgehend vom eingeworfenen Betrag), da ja keine größere Summe bzw die gleiche Summe ausgegeben willst als eingworfen wurde.


1.
int rueckgeld=8.5/2
int rueckgeld=4 =>4x 2€ werden ausgegeben.

2.
int rueckgeld = 0.5/1
int rueckgeld = 0 =>0x 1€ werden ausgegeben

3.
int rueckgeld = 0.5/0.5
int rueckgeld =1 => 1x 50 Cent werden ausgegeben.

Macht genau: 4x 2€ und 1x 50 Cent

EDIT: Der Wurm war schneller
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 15:54   #6
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

Am besten du speicherst dir die Werte vorher in ein Array ab.
Hier mal eine flüchtige Lösung von mir, ich habe dein Programm aus praktischen Gründen mal etwas umstrukturiert.
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 16:00   #7
nettermann64
Ist öfter hier
 
Registriert seit: Jan 2010
Beiträge: 229
Bedankt: 102
nettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punktenettermann64 putzt sich die Zähne mit Knoblauch. | 1323 Respekt Punkte
Standard

ich würdes es anders machen
rückgeld - 2= ergebnis größer null --> ausgabe und zurück
rückgeld- 1= ergebnis größer null
nettermann64 ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 16:04   #8
ITWurm
Anfänger
 
Registriert seit: Oct 2012
Beiträge: 16
Bedankt: 7
ITWurm ist noch neu hier! | 0 Respekt Punkte
Standard

Viele Wege führen nach Rom...^^

Um zu wissen, bei welcher Münze/Schein du anfangen sollst, kannst du dem ganzen voran eine if-else-Anweisung geben, die überprüft ob Restgeld >= 500€ wenn nicht, dann überprüfe ob Restgeld >= 200€, ...
ITWurm ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 17:08   #9
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Your_Conscience Beitrag anzeigen
Am besten du speicherst dir die Werte vorher in ein Array ab.
Hier mal eine flüchtige Lösung von mir, ich habe dein Programm aus praktischen Gründen mal etwas umstrukturiert.
line 41 payed += payed2;

sagt das aus, das der payed und payed2 zusammenlegt?

51 error: 'for' loop initial declarations are only allowed in C99 mode|
51 note: use option -std=c99 or -std=gnu99 to compile your code|
53 error: expected expression before 'int'|
54 error: expected expression before 'int'|

Der möchte das Programm nicht starten. Letzteres versteh ich auch nicht ganz. Das ist doch eine for-Schleife? Was genau passiert dann?
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 17:26   #10
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

line 41 bedeutet einfach das payed = payed + payed2 ist.

Der "Fehler" in Zeile 51 ist, dass in der Schleife int i deklariert wird, was ab dem C99 Standard erlaubt ist.
Dein Compiler ist auf C89 eingestellt. Die Lösung für das "Problem" findest du hier: use option -std=c99 or -std=gnu99 to compile your code|
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 17:27   #11
ITWurm
Anfänger
 
Registriert seit: Oct 2012
Beiträge: 16
Bedankt: 7
ITWurm ist noch neu hier! | 0 Respekt Punkte
Standard

Bezieht sich die Frage auf grundlegendes Wissen über Schleifen oder auf ein spezielles Bsp.?
ITWurm ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 18:15   #12
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Die Bedingungen in der Klammer versteh ich nicht so ganz.
Code:
(int i = 11; i >= 0; i--)
heißt 11 durchläufe? Warum? Das i wird als int gespeichert und das wird abgerufen wenn i größer gleich 0 ist?

Code:
int i;
(i = 11; i >= 0; i--)
wäre das selbe?

und die Verbindung zwischen dollars und Zahlen ist mir irgendwie unerklärlich. Woher weiß jetzt das Programm, dass es 2€ nehmen muss statt 0,50€?
if (payed >= dollars[i]) {
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 19:12   #13
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Metal_Rex Beitrag anzeigen
Die Bedingungen in der Klammer versteh ich nicht so ganz.
Code:
(int i = 11; i >= 0; i--)
"int i = 11;" bedeutet, dass die Variable i als int deklariert und mit 11 initialisiert wird
"i >= 0;" die Schleife läuft so lange, wie i größer oder gleich 0 ist, erst wenn i < 0 bricht sie ab
"i--" ist das Gleiche wie "i = i - 1", dadurch wird vom i bei jeden Schleifendurchlauf 1 subtrahiert, i bekommt also die Werte 11, 10, 9, ...


Zitat:
Zitat von Metal_Rex Beitrag anzeigen
Code:
int i;
(i = 11; i >= 0; i--)
wäre das selbe?
Nicht ganz.
Wird die Variable vor der Schleife deklariert, ist sie dem Programm auch noch nach dieser bekannt. Beim obigen Beispiel ist sie nur in der Schleife bekannt.
In diesem Programm macht es von der Funktion her aber keinen Unterschied.


Zitat:
Zitat von Metal_Rex Beitrag anzeigen
die Verbindung zwischen dollars und Zahlen ist mir irgendwie unerklärlich. Woher weiß jetzt das Programm, dass es 2€ nehmen muss statt 0,50€?
Schau mal ganz oben im Code, da habe ich ein Array deklariert.
Code:
double dollars[12] = {0.01, 0.05, 0.10, 0.25, 0.50, 1,		//Münzen
			2, 5, 10, 20, 50, 100} ;		//Scheine, keine 1$ Note
Das erstellt 12 Variablen mit dem Namen dollars, die über einen Index [] angesprochen werden.
Also: dollars[0], dollars[1], ..., dollars[11]
Diese Variablen erhalten die Werte in den Klammer dahinter in der angegebenen Reihenfolge.
Das ergibt:
dollars[0] = 0.01
dollars[1] = 0.05
...
dollars[11] = 100

Wäre i z.B. 5 und man würde auf dollars[i] zugreifen, würde man das 6. dollars ansprechen, also den Wert 1. Das "erste" Element ist das "nullte".

Da i am Anfang 11 ist, wird in der Schleife zuerst überprüft, ob played >= 100 ist.
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 20:11   #14
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von spartan-b292 Beitrag anzeigen
Der "Fehler" in Zeile 51 ist, dass in der Schleife int i deklariert wird, was ab dem C99 Standard erlaubt ist.
Dein Compiler ist auf C89 eingestellt. Die Lösung für das "Problem" findest du hier: use option -std=c99 or -std=gnu99 to compile your code|
Kann man das komplett für immer im Compiler änder oder woran liegt es das es kein C99 standard ist? Ich nutze CodeBlocks
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 20:16   #15
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Es müsste in Codeblocks einen Menüpunkt geben in dem du das einstellen kannst. Wo dieser genau zu finden ist kann ich dir nicht sagen, da ich CB selber nicht benutze.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 21:16   #16
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Okay.

Ist C99 das aktuellste? Ist es unüblich diese zu mischen?

Zudem verstehe ich jetzt diese beiden Fehler nicht:
31 warning: zero-length ms_printf format string
32 error: expected ';' before '}' token
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 21:32   #17
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Zitat:
Ist C99 das aktuellste? Ist es unüblich diese zu mischen?
Der aktuellste C-Standard ist soweit ich weiß C11.

"Mischen", ist nicht das richtige Wort. Es geht darum, einen Standard auszuwählen, entsprechend der Funktionalitäten die man braucht und sich dann daran zu halten.

Für die anderen Punkte wäre der Code in den Zeilen nützlich.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 21:42   #18
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Ist der Code von Your_Conscience aber der hat keine Zeilen also der Teil:

Code:
    switch(choice) {
        case 1: costs = 1.85;
                printf("\nYou choose Coca Cola. Please insert 1.85$: "); break;

        case 2: costs = 1.45;
                printf("\nYou choose Ice Tea. Please insert 1.45$: "); break;

        case 3: costs = 1.20;
                printf("\nYou choose Water. Please insert 1.20$: "); break;

        default: printf("\nYou choose nothing. See you!"); break;
    }
Zeile 31/32:
Code:
case 3: costs = 1.20;
                printf("\nYou choose Water. Please insert 1.20$: "); break;
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 21:56   #19
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Das mit dem Fehler kann so nicht sein. Ich habe den Code gerade aus seinem Post kopiert und eingefügt. Bei mir funktioniert der Code.
Ich habe nur in den Zeilen:
printf("%d x %10.02lf$\n", (int)(payed / dollars[i]), dollars[i]);
payed -= (int)(payed / dollars[i]) * dollars[i];

Klammern um int gesetzt.

Da hast du vermutlich etwas falsch abgetippt oder kopiert.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 13.12.12, 22:04   #20
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Also das mit -std=c99 scheint nur zu funktionieren wenn ich es im Projekt unter den Optionen festlege. Wenn ich es aber so in den Text reinschreibe funktioniert es nicht. Also ich werd aus den Dingern nicht schlau xD

Nungut, es lag an den () für int nun aber wieder weitere Fehler :

In function 'main':
32 error: expected ';' before '}' token
=== Build finished: 1 errors, 0 warnings ===

aber da ist doch alles richtig O.o



PHP-Code:
// Getränkeautomat

#include <stdio.h>
#include <stdlib.h>

int main() {

    
//Getränkeliste
    
printf("\n        Our drinks:");
    
printf("\n--------------------------");
    
printf("\n1) Coca Cola         1.85$");
    
printf("\n2) Ice Tea           1.45$");
    
printf("\n3) Water             1.20$");

    
//Getränkeauswahl
    
int choice;
    
double costspayedpayed2;
    
double dollars[12] = {0.010.050.100.250.501,        //Münzen
                          
25102050100} ;                //Scheine, keine 1$ Note

    
printf("\n\n\nPlease choose your drink: ");
    
scanf("%d", &choice);

    switch (
choice) {
        case 
1:
            
costs 1.85;
            
printf("\nYou choose Coca Cola. Please insert 1.85$: ");
            break;

        case 
2:
            
costs 1.45;
LINE 32             printf("\nYou choose Ice Tea. Please insert 1.45$: ");
            break;

        case 
3:
            
costs 1.20;
            
printf("\nYou choose Water. Please insert 1.20$: ");
            break;

        default:
            
printf("\nYou choose nothing. See you!");
            exit(
0);
    }

    
scanf("%lf", &payed);

    while (
payed costs) {
        
printf("Please insert more money (%2.2lf$ left): "costs payed);
        
scanf("%lf", &payed2);
        
payed += payed2;
    }

    
printf("\nYou insert: %2.2lf\nYour change: %.2lf\n"payedpayed costs);

    if (
payed costs) {
        
printf("Take: \n");
        
payed -= costs;        //in payed steht ab jetzt nur noch das verbleibende Wechselgeld

        
for (int i 11>= 0i--) {
            if (
payed >= dollars[i]) {
                
printf("%d x %10.02lf$\n", (int)(payed dollars[i]), dollars[i]);
                
payed -= (int)(payed dollars[i]) * dollars[i];
            }
        }
    }

    return 
0;

Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 14.12.12, 13:44   #21
ITWurm
Anfänger
 
Registriert seit: Oct 2012
Beiträge: 16
Bedankt: 7
ITWurm ist noch neu hier! | 0 Respekt Punkte
Standard

Ich kann leider auch nichts finden. Die Fehlermeldung erscheint aber meistens, wenn ein fehlendes schließendes Segment, wie ein Semikolon oder eine KlammerZu oder ein schließendes Anführungszeichen fehlt.
Hast du es vor dem kompilieren gespeichert und dann neu ausgeführt oder verwendest du vllt noch den alten Code (bei Visual Studio möglich)?
ITWurm ist offline   Mit Zitat antworten
Ungelesen 14.12.12, 15:20   #22
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Ja habe gespeichert. Inwiefern den alten Code?

Wie kann man die Datei nochmal mit der Console kompilieren, vieleicht liegts ja daran?
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 14.12.12, 17:35   #23
derbender123
Anfänger
 
Registriert seit: Jan 2012
Beiträge: 6
Bedankt: 0
derbender123 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Metal_Rex Beitrag anzeigen
Ja habe gespeichert. Inwiefern den alten Code?

Wie kann man die Datei nochmal mit der Console kompilieren, vieleicht liegts ja daran?
man kann auch IDEs wie visual studio oä verwenden...
derbender123 ist offline   Mit Zitat antworten
Ungelesen 14.12.12, 23:10   #24
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard

Wow ich habs geschafft Es läuft! ^^

Das war die Hilfe: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Er hat nachdem ich -std=c99 in den optionen hinzugefügt hatte es nicht mehr als Fehler erkannt in wirklichkeit war es abe nicht richtig und ich habe es umgeschrieben nach:
PHP-Code:
int i;
 for (
0i<10i++) 
 {
   
printf("i is %d\n"i);
 } 
Metal_Rex ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 Uhr.


Sitemap

().