Forum: Compiler & IDEs Programm von vorne starten


von Simon N. (ardi)


Lesenswert?

Hi,
ich habe ein Art Flaschenautomatprogramm geschrieben und wenn der Käufer 
erfolgreich seine Flasche bekommen hat soll das Programm von vorne 
starten. Kann man das Programm mit irgendwie "return" von vorne starten?
Danke und Gruß

von SkyperHH (Gast)


Lesenswert?

while(1)
{
  Dein Programm
}

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Simon Name schrieb:
> Kann man das Programm mit irgendwie "return" von vorne starten?

Ja, das wäre möglich.

von Simon N. (ardi)


Lesenswert?

@Silvan
und wie?

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Beispielsweise so, wie SkyperHH es beschrieben hat.
Welche Sprache nutzt du?

von Karl (Gast)


Lesenswert?

Hmm, wenn Du ein Programm / Ablauf geschrieben hast, hast Du sehr 
wahrscheinlich auch Schleifen verwendet.
Und die dürfen selbstverständlich auch endlos, also immer wieder von von 
laufen:

main()
{
  while (true)
  {
    FlaschenAutomatProgramm();
  }
}

von Simon N. (ardi)


Lesenswert?

Ups sicherlich zu erwähnen: C
 Kannst du mal ein Beispiel machen?

von SkyperHH (Gast)


Lesenswert?

Die Beispiele sind in C...

Simon Name schrieb:
> Ups sicherlich zu erwähnen: C
>  Kannst du mal ein Beispiel machen?

von Karl (Gast)


Lesenswert?

Simon Name schrieb:
> Kannst du mal ein Beispiel machen?

Hab ich gerade :-)

von Simon N. (ardi)


Lesenswert?

Ein konkreteres

von Amateur (Gast)


Lesenswert?

>ich habe ein Art Flaschenautomatprogramm geschrieben

glaube ich nicht ...

von Manni (Gast)


Lesenswert?

main:
  ' dein Programm
  ...
  ...
GOTO main

von Karl H. (kbuchegg)


Lesenswert?

Simon Name schrieb:
> Ein konkreteres

Was bitte ist an
1
....
2
3
4
  while( 1 ) {
5
6
    mach deine Automatenlogik
7
8
  }

unkonrekt.

Sobald der Teil 'Mach deine Automatenlogik' fertig ist, geht durch die 
Schleife alles wieder von vorne los.


Abgesehen davon: Bei einem Flaschenautomat als Zustandsmaschine 
ausgeführt, stellt sich diese Frage überhaupt nicht, denn da ist der 
Grundzustand der 'Maschine' ein Zustand wie jeder andere, in den die 
Maschine wechseln kann. Insbesonders, wenn sie ihre Transaktion 
durchgeführt hat, wechselt sie halt wieder in diesen zustand.

Statemachine

von Simon N. (ardi)


Lesenswert?

Ja jetzt habe ich es verstanden danke

von Simon N. (ardi)


Lesenswert?

ok habe es jetzt ausprobiert: geht aber nicht.
Ich habe while (1) und dann in geschweiften Klammern meinen Code 
geschrieben.
Das Programm läuft schon nur es startet nicht von vorne

von Karl H. (kbuchegg)


Lesenswert?

Simon Name schrieb:
> ok habe es jetzt ausprobiert: geht aber nicht.

Dann hast du irgendwo einen Fehler gemacht

> Ich habe while (1) und dann in geschweiften Klammern meinen Code
> geschrieben.

DIe Frage ist, ob dein Code auch so gebaut ist, dass das funktioniert.

Aber: wir können noch tagelang dahin raten. Solange du deinen Code nicht 
zeigst, kann dir auch keiner konkret helfen

von Simon N. (ardi)


Lesenswert?

1
#include <stdio.h>
2
3
int main(){
4
    while(1){
5
int summe=0;
6
int anzahl;
7
int wahl;
8
int kosten_wasser;
9
int kosten_bier;
10
int kosten_fanta;
11
12
printf("Getreankeautomat /\  Version 0.1");
13
printf("Sorten:\nWasser:1Euro\nBier:2Euro\nFante:1.50Euro\n");
14
scanf("%d", &wahl);
15
16
if(wahl==1){
17
    printf("Bitte geben sie 1 Euro ein:");
18
    scanf("%d", &summe);
19
    while(summe!=1){
20
        printf("Bitte geben sie den vollen Betrag ein:");
21
        scanf("%d", &summe);
22
    }
23
        if(summe==1){
24
            printf("Bitte entnehmen Sie Ihr Getreank");
25
        }
26
return 0;
27
}
28
if(wahl==2){
29
    printf("Bitte geben sie 2 Euro ein:");
30
    scanf("%d", &summe);
31
    while(summe!=2){
32
        printf("Bitte geben sie den vollen Betrag ein:");
33
        scanf("%d", &summe);
34
    }
35
        if(summe==2){
36
            printf("Bitte entnehmen Sie Ihr Getreank");
37
        }
38
return 0;
39
}
40
if(wahl==3){
41
    printf("Bitte geben sie 1 Euro ein:");
42
    scanf("%d", &summe);
43
    while(summe!=1){
44
        printf("Bitte geben sie den vollen Betrag ein:");
45
        scanf("%d", &summe);
46
    }
47
        if(summe==1){
48
            printf("Bitte entnehmen Sie Ihr Getreank");
49
        }
50
return 0;
51
}
52
    }
53
}

von Karl H. (kbuchegg)


Lesenswert?

wenn du hier
1
if(wahl==1){
2
    printf("Bitte geben sie 1 Euro ein:");
3
    scanf("%d", &summe);
4
    while(summe!=1){
5
        printf("Bitte geben sie den vollen Betrag ein:");
6
        scanf("%d", &summe);
7
    }
8
        if(summe==1){
9
            printf("Bitte entnehmen Sie Ihr Getreank");
10
        }
11
return 0;

einen return machst, dann gehts aus main raus. Unabhängig davon, ob da 
noch eine while Schleife drüber liegt oder nicht.

von Simon N. (ardi)


Lesenswert?

Alles Klar Danke :)

von Amateur (Gast)


Lesenswert?

Das Ganze mag ja eine ganze Menge an Text produzieren, aber 
funktionieren wird's mit Sicherheit nicht.
Da fängt schon damit an, dass ein Automat am Anfang einen Selbsttest 
macht.
Das sind z.B. so einfache Sachen wie:
- "Seid Ihr auch alle da"? - Ich wäre z. B. sauer, wenn ich Geld für
  etwas einwerfe, was schon lange leer ist. Möglichweise bin ich aber
  auch die Ausnahme.
- "Was passiert, wenn ich mein Geld vergessen habe, aber schon gewählt
  wurde"?
- "Wechselgeld vorhanden"?
- Übrigens. Wenn die Geldkassette voll ist geht auch nichts mehr.
- Hat mein Vorgänger seine Flasche nicht entnommen, so bekomme ich 2 X
  klebrige Scherben.
- Ist die Flasche erst gar nicht unten angekommen, so ist ein weiterer
  Verkauf auch nicht das Gelbe vom Ei.

Ein Automat sieht von außen nach nichts aus, ist aber eine relativ 
komplexe und überwachungsbedürftige Anlage. Die oben angeführten Punkte 
kratzen noch nicht mal an der Oberfläche.
Ich habe die Erfahrung gemacht, dass der eigentliche Ablauf Pipifax ist, 
die Sonderfälle aber sehr viel Programmierzeit erfordern.
Du kannst natürlich auch die telefonische Referenz entfernen, damit die 
Hotline nicht doch noch ihrem Namen alle Ehre macht.

von Karl H. (kbuchegg)


Lesenswert?

Amateur schrieb:
> Das Ganze mag ja eine ganze Menge an Text produzieren, aber
> funktionieren wird's mit Sicherheit nicht.

Es sei ihm als Anfänger als Erfolgserlebnis gegönnt.

Du hast natürlich in allen Punkten recht, dass er von einem ordentlichen 
Programm noch Lichtjahre entfernt ist.
Womit wir wieder beim Zustandsautomaten und einer ordentlichen 
Programmplanung sind, die vor der ersten geschriebenen Zeile Code zu 
erfolgen hat.

von Simon N. (ardi)


Lesenswert?

Ganz Ruhig Amateur :)
Ich habe seit langen wieder C programmiert und wollte es einfach jetzt 
noch mal testen, aber gleich auf höherem Niveau :)
Das ist sozusagen jetzt ne Basis auf das was du geschrieben hast. Danke 
für die Vorschläge ;)

von LassWonadersDefinen (Gast)


Lesenswert?

Simon Name schrieb:
> ich habe ein Art Flaschenautomatprogramm geschrieben ...

Tut mir Leid, wenn du noch nicht einmal das Konzept der Schleifen 
kennst, hast du dich noch nie ernsthaft auch nur mit irgendeiner 
Programmiersprache beschäftigt. Daher kann ich mir beim besten Willen 
nicht vorstellen, dass das Programm von dir sein soll.

... und entgegen allen Ratschlägen: Hier Troll, hast n Keks.

von Karl H. (kbuchegg)


Lesenswert?

LassWonadersDefinen schrieb:
> Simon Name schrieb:
>> ich habe ein Art Flaschenautomatprogramm geschrieben ...
>
> Tut mir Leid, wenn du noch nicht einmal das Konzept der Schleifen
> kennst, hast du dich noch nie ernsthaft auch nur mit irgendeiner
> Programmiersprache beschäftigt.

Ist ja gut.

> Daher kann ich mir beim besten Willen
> nicht vorstellen, dass das Programm von dir sein soll.

genausogut könnte ich sagen, dass ich mir beim besten Willen nicht 
vorstellen kann, dass du jemals einen Schüler gehabt hast, den du von 0 
weg betreut hast.
Irgendwo muss man als Schüler anfangen und alles gleichzeitig lernen 
geht nicht. Deswegen darf man trotzdem auf seine ersten Machwerke stolz 
sein, selbst wenn die im Grund nur aus "BItte geben sie eine Zahl ein" 
und "Sie haben xy eingegeben" bestehen. Auch da gibt es schon 
Stolpersteine genug.

von Kindergärtner (Gast)


Lesenswert?

LassWonadersDefinen schrieb:
> ... und entgegen allen Ratschlägen: Hier Troll, hast n Keks.
Cool, einen alten Thread ausgegraben nur um den TO zu trollen. Da ist 
jemand wirklich bemüht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.