C++ Script Aufgaben

  • Moin Community,

    hab ma ein paar Fragen zu meinem C++ Script ;)

    Undzwar die Aufgabe ist:


    1. Ein Programm, das die Monatsnamen "Januar" bis "Dezember" ausgibt, wenn man eine der Zahlen von 1 bis 12 eingibt. -> GELÖST!

    Ausgabe soll so aussehen:

    "Ausgabe des Monatnamens"
    "Nummer des Monats (1..12): 4
    "Der 4. Monat heisst April."
    "Programmende."

    ------------------------------------
    "Ausgabe des Monatnamens"
    "Nummer des Monats (1..12): 12
    "Es gibt nur 12 Monate!"
    "Programmende."


    2. Briefe sollen frankiert werden, es gelten folgende Portobeträge: -> UNGELÖST!

    bis(g) 20 50 100 250 500 1000
    Talente 1 1,70 2,40 3,20 4,00 4,80

    Sendungen schwerer als 1kg werden als Päckchen oder Paket verschickt.

    Ausgabe soll so aussehen:

    "Portoberechnung"
    "Gewicht des Briefes in g: 75.6"
    "Kosten: 2.40 Talente"
    "Programmende."
    -------------------------------
    "Portoberechnung"
    "Gewicht des Briefes in g: 1000"
    "Das wird ein Paket!"
    "Programmende."


    Die Frage nun vorerstmal zur 1.:

    Ich kann natürlich immer mit "if-else-Verschachtelungen" abbeiten, was natürlich keine "schöne" Lösung ist.
    ->

    Code
    int eingabe;
    
    
    if (eingabe == 1){
    cout << "Der" << eingabe << "Monat heisst Januar." }
    else {
    cout << "Der" << eingabe << "Monat heisst Februar." }

    Deshalb dachte ich mir, mache ich es so (weiß nur nicht ob das in c++ geht...):

    Code
    string monat[12];
    monat[1] = Januar;
    monat[2] = Februar;
    ...
    ...
    monat[12] =Dezember;
    int i;
    
    
    cout << "Der " << i << " Monat ist " << monat[i] << "." << endl;

    Vielleicht könnt ihr mir da helfen, thx auf jedenfall jetzt nochmal ;)

    Einmal editiert, zuletzt von AudoEit (31. Oktober 2008 um 14:21)

  • Hab zu wenig mit C++ gemacht um dir konkret darin etwas darzustellen aber der Aufgabentyp den du beschreibst schreit ja förmlich nach einer Enumeration.
    Klar kannst du mit einem Array arbeiten aber ich denke mit einer Enumeration kommst du besser.
    Müsste glaube ich bei C++ der Datentyp "enum" sein wenn ich mich richtig erinnere.
    Belies dich am besten mal dazu.

    Edit: Wobei - jetzt fällt mir auf das du es ja andersherum haben willst.
    In dem Sinne ist ja also die Zahl der Index für den Monatsnamen.
    Könnte sein das man das auch so herum mit enum bei C++ machen kann aber da bin ich mir nicht sicher.
    Ansonsten wär dann wohl dein Ansatz mit dem Array wohl das einfachste.
    Musst halt nur beachten das ein Array beim Index 0 statt 1 beginnt - brauchst also ein Array mit 13 Elementen.

  • Hej,

    vielen Dank für eure Antworten, ich hab mir mal das Tut. angeschaut ^^. Also ich glaub das Programm verarscht mich irgendwie -.- es funktioniert nämlich doch so wie ich es oben beschrieben hatte. Nur als ich es das erstemal gestestet hatte hats leider nicht gefunzt.

    Also Frage1.: Gelöst!

    Wenns interessiert hab hier mal den Code.

    Spoiler anzeigen

    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <stdlib.h>

    using namespace std;

    int main()
    {
    int i;
    string monatg;
    string monat[12];
    monat[0] = "error_1";
    monat[1] = "Januar";
    monat[2] = "Februar";
    monat[3] = "Maerz";
    monat[4] = "April";
    monat[5] = "Mai";
    monat[6] = "Juni";
    monat[7] = "Juli";
    monat[8] = "August";
    monat[9] = "September";
    monat[10] = "Oktober";
    monat[11] = "November";
    monat[12] = "Dezember";

    cout << "Ausgabe des Monatnamens\n" << "Nummer des Monats (1..12): ";
    cin >> i;

    if (i <= 0){cout << "Es gibt nicht weniger als 0 Monate!\n" << "Programmende.\n";}
    else{if (i > 12){cout << "Es gibt nur 12 Monate!\n" << "Programmende.\n";}
    else{cout << "Der " << i << " Monat heisst " << monat << ".\n"; }}

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    Nun zur 2ten Frage .. da hab ich ehrlich gesagt wenig ahnung wie ich das machen soll, weil die eingabe der "gramm" müssen ja immer aufgerundet werden, aber nicht voll sondern auf zahlen die vorher definiert wurden....

  • Wie wäre es, einfach if elseif zu verwenden ?
    if gramm >= 1000 Then
    elseif gramm >= 500
    elseif gramm >= 250
    elseif gramm >= ...
    endif

  • So wie dus hast klappt schonmal nicht, aber if elseif ok.

    Soll ja immer, bis "gramm" sein also <=

  • Ja, das war kein c++, ich weiß :)
    und entweder fängst du mit dem kleinsten Wert be der Bfrage an, dann <=
    oder mit dem größten, dann >=. Kann jetzt zwar nicht richtig c++, aber das müsste stimmen

    Spoiler anzeigen


    (musst ja nicht reinschauen, wenn dus auch so schaffst :)