Längenumrechner

  • Hey...


    Also, ich möchte in C++ einen Längenumrechner programmieren. Dabei sollen bestimmte Einheiten wie Km oder Meilen verwendet werden. Das Programm sollte so aufgebaut sein, dass man am Anfang wählt, welche Einheit man hat und man eine bestimmte Menge dieser Einheit eintippt. Danach wählt man die Einheit aus, in die die zuvor eingegebene Einheit umgerechnet wird. Man gibt z.B 1 km ein, und das Programm rechnet es dann in Meilen um.. Versteht ihr was ich meine? :)
    Das Problem dabei ist, dass ich keinen Schimmer habe, wie ich das Programm genau schreibe, bzw das Grundgerüst. Ich bräuchte also eure Hilfe bei meinem kleinen Projekt :P


    Mfg

  • Vorneweg, ich habe keinerlei C++ Kenntnisse, ich hoffe ich kann dir dennoch ein bisschen weiterhelfen. Ich bin dabei Java zu erlernen und habe keine Ahnung inwieweit man das in C++ umsetzen kann.
    Also ich würde es so machen:
    |SelectBox1| |TextField| |SelectBox2| |Label|
    |Button|


    SelectBox1 = Auswahl der ursprünglichen Einheit
    TextField = Eingabe des Wertes
    SelectBox2 = Auswahl der gewünschten Einheit
    Label = Ausgabe des umgerechneten Wertes
    Button = Einfach nen Berechnen-Button


    Joah, dann würde ich halt einfach eine Reihe von If-Anweisungen machen. Sprich als erstes überprüfen was SelectBox1 ist und dann jenachdem was SB2 ist umrechnen.
    Beispiel:


    Das wäre für mich als Anfänger der leichteste Weg...

  • Auf die Schnelle eine kleine Konsolenanwendung geschrieben und nein der Code soll kein Schönheitswettbewerb gewinnen. :)


    [cs]#include "stdafx.h"
    using namespace std;
    #include <iostream>
    #include <windows.h>


    using namespace System;


    int main(array<System::String ^> ^args)
    {
    // Werte einlesen
    int Ausgangseinheit;
    cout << "Geben Sie ihre Ausgangseinheit an" << endl;
    cout << "0=km und 1=Meilen" << endl;
    cin >> Ausgangseinheit;
    int Wunscheinheit;
    cout << "Bitte Sie ihre Wunscheinheit an" << endl;
    cout << "0=km und 1=Meilen" << endl;
    cin >> Wunscheinheit;
    double Wert;
    cout << "Umzurechnenden Wert eingeben:" << endl;
    cin >> Wert;
    double Ausgabe;
    // if-Anweisung, um zu überprüfen welche Umrechnung stattfinden soll
    if(Ausgangseinheit<Wunscheinheit)
    // Ist ohne weitere Überprüfung (Zahlen ungleich 1 bzw 0 für beide Variablen) unschön.
    // Aber um das Prinizip zu zeigen denke ich mal ok
    {
    Ausgabe = Wert * 0.621;
    cout << Ausgabe;
    Sleep(5000);
    }
    else
    {
    if(Wunscheinheit<Ausgangseinheit)
    {
    Ausgabe = Wert * 1.61;
    cout << Ausgabe;
    Sleep(5000);
    }
    }


    return 0;
    }[/cs]
    Man kann aber noch einiges dran verbessern.
    - Weitere Einheiten
    - Spezielle Ausgabe bei gleicher Ausgangs- und Wunscheinheit
    - Fehlermeldung bei Zahlen, die nicht für eine Einheit definiert wurden
    - Konsolen-Ausgabe mit Einheiten versehen
    - etc.




    MfG AOL

  • Vielen Dank für deine Antwort!


    Ja, so habe ich mir das vorgestellt. Jedoch habe ich das selbe Problem wie du, bin dabei C++ zu lernen, deswegen weiß ich nicht genau wie ich dort die variablen bestimmen muss, bzw welche Schleife ich setzten muss und wie lang die wird. Mit Objektboxen fang ich erst garnicht an :D


    EDIT: AOL, dein Code ist genau das Grundgerüst, das ich brauche :) Vielen Dank für die schnelle Hilfe. Falls ich noch ein paar fragen habe, melde ich mich hier im Thread, ich versuchs erstmal alleine :)
    Danke


    EDIT2:


    @ AOL -> habe ein paar Fragen. Welches Programm benutzt du zum schreiben? ich habe immer das Problem, dass ich auf meinem Home rechner probleme mit den Compilern habe. Und was bedeutet das "
    (array<System::String ^> ^args)" ? habe ich noch nie gesehen

  • Nochmal zum Längenumrechner


    Ich habe jetzt was eigenes geschrieben, da ich mit deinem Beispiel nicht ganz klar gekommen bin AOL^^


    Hier der quellcode


    [cs]#include <cstdlib>
    #include <iostream>


    using namespace std;


    int main()
    {


    double Zahl=0.0;
    cout << "Wählen sie ihre Wunscheinheit\n";
    cout << "1 = Kilometer\n2 = Meilen\n";
    cin >> Zahl;

    if (Zahl == 1 ) {

    int Wert;
    cout << "\nSie haben Kilometer gewählt!";
    cout << "\nDer folgende Wert wird nun in Meilen umgerechnet";
    cout << "\nBitte geben sie einen Wert ein\n";
    cin >> Wert;
    cout << "Das Ergebnis lautet: " << Wert * 0,621;
    }


    if (Zahl == 2 ) {

    int Wert;
    cout << "\nSie haben Meilen gewählt!" ;
    cout << "\nDer folgende Wert wird nun in Kilometer umgerechnet";
    cout << "\nBitte geben sie einen Wert ein\n";
    cin >> Wert;
    cout << "Das Ergebnis lautet: " << Wert * 1,609;
    }


    else {
    cout << "\nFalsche Eingabe, bitte wählen Sie erneut!";
    return 0;
    }

    } [/cs]


    Ich komme aber nicht weiter, meine Kenntnisse reichen nicht aus. Zuerst einmal schließt sich die Konsolenanwendung irgendwie automatisch, sobald das Ergebnis angezeigt wird. Auch falls der else fall eintritt, kommt nur die cout Meldung und die Konsole schließt sich, sie springt also nicht wieder nach oben wie eigentlich geplant. Desweiteren wird das Ergebnis irgendwie nicht richtig ermittelt. Je nachdem ob ich am Anfang 1 oder 2 wähle ist die Wahl auch das Ergebnis. Falls ich diese Probleme behoben habe möchte ich auch noch andere EInheiten einbauen, nur mit mehr als zwei ist das zu kompliziert für mich, ich weiß nich wie ich diese ganzen Kombinationen an Einheiten unterbringen soll... Gibt es vll sowas wie if-schleifen in if-schleifen?


    need help :/

  • Willst du es so haben?
    Ist auch eine kleine Abfragesicherung drin und die switch-case Anweisung kannst du ja nach dem Muster in dem Code erweitern.
    Natürlich musst du dann die do-while Schleifen anpassen, für die Zahlen.


    [cs]#include <iostream>
    #include <cstdlib>


    using namespace std;


    int main()
    {
    // Variablen
    //
    int iAuswahl = 0;
    double dbWert = 0.0;
    double dbZahl = 0.0;


    // do-while Schleife, um das Programm so lange auszuführen
    // bis der Benutzer es beenden will
    //
    do
    {
    // Benutzer darf keine Zahl kleiner 1 oder größer 3 eingeben
    do
    {
    cout << "Wählen sie ihre Wunscheinheit\n";
    cout << "=============================\n\n";
    cout << "1 = Kilometer\n"
    << "2 = Meilen\n"
    << "3 = Ende\n\n";

    cout << "Auswahl: ";
    cin >> iAuswahl;

    // Fehlertext ausgeben
    if (iAuswahl < 1 || iAuswahl > 3)
    {
    cout << "\n\nBitte geben Sie '1', '2' oder '3' ein!\n";
    }

    } while (iAuswahl < 1 && iAuswahl > 3);

    // switch-case Abfrage (Fallunterscheidung)
    switch (iAuswahl)
    {
    // Fall 1 => Kilometer in Meilen
    case (1):
    {
    cout << "\nSie haben Kilometer gewaehlt!";
    cout << "\nDer folgende Wert wird nun in Meilen umgerechnet\n";
    cout << "\nBitte geben sie einen Wert ein: ";
    cin >> dbWert;

    // "dbWert" mit 0.621 multiplizieren
    dbWert *= 0.621;

    // Auf 2 Stellen nach dem Komma runden
    printf("\nDas Ergebnis lautet: %0.2f Meilen", dbWert);
    } break;

    // Fall 2 => Meilen in Kilometer
    case (2):
    {
    cout << "\nSie haben Meilen gewählt!" ;
    cout << "\nDer folgende Wert wird nun in Kilometer umgerechnet\n";
    cout << "\nBitte geben sie einen Wert ein: ";
    cin >> dbWert;

    // "dbWert" mit 1.609 multiplizieren
    dbWert *= 1.609;

    // Auf 2 Stellen nach dem Komma runden
    printf("\nDas Ergebnis lautet: %0.2f Kilometer", dbWert);
    } break;
    }

    // Eine Leerzeile
    cout << endl << endl;

    } while (iAuswahl != 3);

    return 0;
    }[/cs]