Multi-Rechner v1.4

      Multi-Rechner v1.4

      Hallo.
      Da ich gerade das Programmieren in C lerne, wollte ich euch einfach mal zeigen, was ich bis jetzt so programmiert habe. Es ist noch noch nicht sehr aufwendig gestaltet, aber ich finde, für den Anfang gar nicht mal sooo schlecht. Es ist ein Rechner für Windows, der Addition, Subtraktion, Multiplikation, Division, Fläche, Volumen und Kreisfläche ausrechnen kann. Wenn man jetzt aber eine Rechnung fertig gerechnet hat, wird das Programm beendet, was ich nicht will. Deshalb möchte ich wissen, welchen Befehl ich da noch einfügen muss, dass man wieder zur Rechenart-Auswahl kommt. Rechner ist im Anhang, wenn ihn jemand Testen will.

      Quellcode entfernt. Den braucht man für meine Frage nicht.


      Kann mir jemand sagen, was ich machen muss, damit man nach einer Rechnung nicht das Programm beenden muss?
      Da gibts doch bestimmt so einen Befehl
      Dateien
      • Multi-Rechner.zip

        (6,88 kB, 46 mal heruntergeladen, zuletzt: )

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Knato ()

      Das einfachste wird für dich erstmal sein, einfach eine "goto" Anweisung abzugeben. Da dein Programm ja eine "beenden" Funktion bereits enthällt kannst du einfach mit dem goto Befehl wieder an den Anfang springen. :)

      Gewöhne dir aber diesen Stiel nicht an, für dein Programm ist goto ausreichend, wenn du aber später komplexere Programme schreibst solltest du davon abkommen und eher schleifen wie, switch case, if else & do while nutzen.

      C-Programmierung: Kontrollstrukturen goto

      Guter Artikel zum reinkommen.
      Also ich muss dann diesen Code einfügen:
      goto LabelName;
      Aber was muss ich statt dem "LabelName" einfügen, dass das Programm weiß, wo es weitermachen soll?

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Goto? Hast Du ihm gerade goto empfohlen? Geh in die Ecke und schäm Dich.
      Durch Goto zerstört man jegliche Programmstruktur. Das hab ich direkt als erstes gelernt.

      Lies Dir lieber etwas zu do-while durch. So kann man das Programm wenigstens noch beenden.
      NameWertWert
      ModellNintendo 3DS XL weißNintendo Switch Grau
      SystemmenüLuma3DS 11.5.5-35EOriginal 4.0.2
      Aktuelles SpielMonster Hunter StoriesSuper Mario Odyssey
      Also das hier wäre die Do-While-Schleife.
      Do-While-Schleife
      Aber wie und an welche Stelle füge ich die in mein Programm ein?

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Das Beispiel im Link zeigt eigentlich, was Du wissen musst, aber noch mal für Dich von mir:
      Do-While ist eine fußgesteuerte Schleife. Anderes als bei der einfachen While Schleife, durchläuft die Do-While Schleife mindestens einmal durch und prüft dann, ob sie abgebrochen werden soll.

      Quellcode

      1. // Vorher die Variablen deklarieren.
      2. float zahl;
      3. float ergebnis = 0; // Wichtig ist, dass Ergebnis schon einen Wert hat, sonst wird diese Variable einen Programmabsturz verursachen oder einen relativ zufälligen Wert annehmen.
      4. // Do leitet die Schleife ein. Eine Do-While-Schleife muss am Ende ein While mit einer Abbruchbedingung stehen haben.
      5. do
      6. {
      7. printf ("Bitte Zahl zum Addieren eingeben (0 zum Beenden):"); // User eine Anweisung geben und Abbruchmöglichkeit bekannt machen
      8. scanf("%f",&zahl); // Zahl einlesen
      9. ergebnis += zahl; // Zahl auf das Ergebnis addieren
      10. }
      11. while (zahl != 0); // Hier ist die Magie: Solange die Zahl nicht 0 ist, wird solange wieder printf aufgerufen, bis die Zahl 0 ist oder der Welt der Strom ausgeht.
      Alles anzeigen


      Du kannst auch ein Menü einbauen, dass solange durchläuft und Funktionen aufruft, bis man z.B. "x" eingibt.
      Ansonsten sind auch noch verschachtelte Schleifen möglich, aber da wirst Du später noch hinkommen.

      Noch Fragen? Bevor Du auf goto ausweichst, frag lieber.
      NameWertWert
      ModellNintendo 3DS XL weißNintendo Switch Grau
      SystemmenüLuma3DS 11.5.5-35EOriginal 4.0.2
      Aktuelles SpielMonster Hunter StoriesSuper Mario Odyssey
      Ich würde dir übrigens empfehlen, die Rechenfunktion in einen Header auszulagern. Das ist recht einfach, allerdings hat man einen wesentlich schöneren Code.
      • CPU: AMD Phenon II X4 965 BE
      • Mainboard: Gigabyte GA-890GPA-UD3H
      • Grafikkarte: nVidia GeForce GTX 470
      • RAM: 16 GB Kingston 1600
      • Festplatten: ca. 2 TB

      Baujahr 2008
      Gemoddet mit ModMii
      BootMii im Boot2
      Priiloader
      Black Theme

      Penman schrieb:

      Das Beispiel im Link zeigt eigentlich, was Du wissen musst, aber noch mal für Dich von mir:
      Do-While ist eine fußgesteuerte Schleife. Anderes als bei der einfachen While Schleife, durchläuft die Do-While Schleife mindestens einmal durch und prüft dann, ob sie abgebrochen werden soll.

      Quellcode

      1. // Vorher die Variablen deklarieren.
      2. float zahl;
      3. float ergebnis = 0; // Wichtig ist, dass Ergebnis schon einen Wert hat, sonst wird diese Variable einen Programmabsturz verursachen oder einen relativ zufälligen Wert annehmen.
      4. // Do leitet die Schleife ein. Eine Do-While-Schleife muss am Ende ein While mit einer Abbruchbedingung stehen haben.
      5. do
      6. {
      7. printf ("Bitte Zahl zum Addieren eingeben (0 zum Beenden):"); // User eine Anweisung geben und Abbruchmöglichkeit bekannt machen
      8. scanf("%f",&zahl); // Zahl einlesen
      9. ergebnis += zahl; // Zahl auf das Ergebnis addieren
      10. }
      11. while (zahl != 0); // Hier ist die Magie: Solange die Zahl nicht 0 ist, wird solange wieder printf aufgerufen, bis die Zahl 0 ist oder der Welt der Strom ausgeht.
      Alles anzeigen


      Du kannst auch ein Menü einbauen, dass solange durchläuft und Funktionen aufruft, bis man z.B. "x" eingibt.
      Ansonsten sind auch noch verschachtelte Schleifen möglich, aber da wirst Du später noch hinkommen.

      Noch Fragen? Bevor Du auf goto ausweichst, frag lieber.


      Muss ich das do an den Anfang und das while an das Ende des Programms setzen? Und muss ich dann meinen kompletten Programm-Code in die do-while-Schleife setzen?
      Bei mir funktioniert das alles nicht. Beim Compallieren (oder wie das heißt) bekomm ich dann immer einen Fehler am Ende des Programms, wo diese Klammer steht:
      }

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Du kannst Do-While überall verwenden.

      Als Beispiel nehm ich mal eine Zählerschleife (Achtung, der folgende Quellcode ist eigentlich ein for-Schleife)

      C-Quellcode

      1. #include <stdio.h>
      2. #include <conio.h>
      3. int main(void)
      4. {
      5. int i = 0;
      6. do
      7. {
      8. i++;
      9. printf("Zaehlerstand: %i", i);
      10. }while(i < 10);
      11. _getch();
      12. printf("Fertig durchlaufen.");
      13. return 0;
      14. }
      Alles anzeigen


      Wenn meine C-Kenntnisse nicht allzu verrostet sind, sollte das Programm funktionieren. Kannst ja mal mit herumspielen.
      NameWertWert
      ModellNintendo 3DS XL weißNintendo Switch Grau
      SystemmenüLuma3DS 11.5.5-35EOriginal 4.0.2
      Aktuelles SpielMonster Hunter StoriesSuper Mario Odyssey
      Ja, das Programm funktioniert. Jetzt weiß ich aber immer noch nicht, ob ich das komplette Programm in die do-while-schleife packen soll und wie und wo ich diese schleife einfüge?
      Kann ich es nicht einfach doch mit goto machen?

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Meine Güte... Les dich doch einfach ein. Wenn du schon Programme schreiben, allerdings noch keine Schleifen nutzen kannst, solltest du dir ein anderes Buch holen. Denn sowas ist elementar.

      Wenn du willst, kannst du mir den Programmcode per PN schicken (hier reinzustellen wäre aber auch gut). Dann bau ich das an der benötigten Stelle ein. Evtl. kann ich ja auch noch kleine Verbesserungen allgemein vornehmen.

      Warum eigentlich C und nicht C++?
      • CPU: AMD Phenon II X4 965 BE
      • Mainboard: Gigabyte GA-890GPA-UD3H
      • Grafikkarte: nVidia GeForce GTX 470
      • RAM: 16 GB Kingston 1600
      • Festplatten: ca. 2 TB

      Baujahr 2008
      Gemoddet mit ModMii
      BootMii im Boot2
      Priiloader
      Black Theme

      Ich wollte einfach eine Programmiersprache lernen und habe mich dann für C entschieden. Und ich habe kein Buch, sondern hab mir Videos angeschaut.
      Ich schicke dir den Programmcode per PN.

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Es kommt ganz darauf an, was Du vor hast.
      Wenn es ein einfacher Konsolentaschenrechner ist, würde ich das ganze Programm (ohne Deklarationen) in die Schleife packen, deren Abbruchbedingung eine bestimmte Eingabe des Users ist.

      Wie hier aber schon gesagt wurde, sind Schleifen elementar, deswegen musst Du Dich früher oder später damit auseinandersetzen, vor allem, wenn es um Automatismen geht.

      Bei der Entscheidung C zu lernen, würde ich mir gar nichts sagen lassen. C ist eine klasse Anfängersprache, man muss sich nicht gleich auf C++ stürzen. Dafür gibt es für einen Anfänger keine Gründe.

      Warum als Fahranfänger gleich 400 PS haben, wenn man erst mal 100 PS sicher fahren muss.
      NameWertWert
      ModellNintendo 3DS XL weißNintendo Switch Grau
      SystemmenüLuma3DS 11.5.5-35EOriginal 4.0.2
      Aktuelles SpielMonster Hunter StoriesSuper Mario Odyssey
      Natürlich, C ist auch ohne Probleme verwendbar. Einzig hat man in C++ mehr Möglichkeiten, allerdings wird man diese auch erst später nutzen - und dann sollte man C++ lernen.

      Es ist generell empfehlenswert, sich ein Buch zu kaufen. Denn Videos... naja, man lernt dabei bestimmt nicht so viel.
      • CPU: AMD Phenon II X4 965 BE
      • Mainboard: Gigabyte GA-890GPA-UD3H
      • Grafikkarte: nVidia GeForce GTX 470
      • RAM: 16 GB Kingston 1600
      • Festplatten: ca. 2 TB

      Baujahr 2008
      Gemoddet mit ModMii
      BootMii im Boot2
      Priiloader
      Black Theme

      Ich hab durch die Videos schon was gelernt.

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Penman schrieb:

      Goto? Hast Du ihm gerade goto empfohlen? Geh in die Ecke und schäm Dich.
      Durch Goto zerstört man jegliche Programmstruktur. Das hab ich direkt als erstes gelernt.

      Lies Dir lieber etwas zu do-while durch. So kann man das Programm wenigstens noch beenden.

      Hey mal ganz Locker, lesen, denken, posten.

      Ich habe auch gesagt das er sich das nicht angewöhnen soll. Da ich selbst sehr gut weiß wie es richtig gemacht wird. Auch den Artikel den ich gepostet habe, steht es noch einmal drinne. Desweiteren schrieb ich genauso wie du das es noch andere Schleifen Funktionen gibt die man sich angewöhnen sollte.

      Es ging hierbei nur darum das sein Programm noch nicht wirklich groß ist und es für seine Zwecke ausgereicht hätte und auch jemand der erst angefangen hat zu lernen sollte wissen wie man eine goto schleife nutzt auch wenn sie nicht wirklich für übersichtlichkeit dient.
      Ich stimme da GameChamp99 vollkommen zu.

      Als ich mit dem bash scripten und mit ein bisschen perl angefangen habe, hatte ich auch die Hoffnung das es durch Videos zu lernen ist.

      Du wirst jedoch merken, das wenn du mal schnell was nachgucken willst, ein Video völlig ungeeignet ist.

      Ein Buch oder zumindest ein E-book, oder vielleicht auch eine Wiki, werden dir helfen.

      Und ansonsten kann ich dir nur sagen "learning by doing" :) Das hat bei mir am besten und funktioniert auch immer noch am besten


      Viel Erfolg beim lernen von C :)

      lg
      MarcMarin
      Nintendo Wii Bootmii/Boot2 FW 4.1e + Wiikey2 :thumbsup:
      Nintendo WiiU FW 2.0.0E :thumbup:
      Ich hab ab morgen sowas wie ein Buch. Mein Vater hat eine 130 Seiten Anleitung gefunden, die er mir morgen ausdruckt. Dann werd ich mir das mal genau ansehen.

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Knato ()

      Danke! Sehr gute (und lange) Anleitung!
      Übrigens hab ich das Programm verbessert. Hab jetzt noch Message-Boxen eingefügt (Manche sind zwar völlig nutzlos wie z.B. am Start: Willst du wirklich starten?)

      ...genaue Rechtschreibung und auf eine saubere äußere Form! :success: