Java in C++ umwandeln?



  • Habe hier ein Programm in Java geschrieben aber kenne mich mit C++ nicht aus aber ich bräuchte das Programm in C++ oder nur C. Kann mir jemand eine Seite nennen, wo die anderen Befehle erklärt werden oder könnte das jemand bitte schnell in C ändern? Wäre super nett.

    import Terminal.*;
    public class folgedat2 {

    public static void main (String args[]) {
    int tag, monat, jahr, letzterTag, folgeTag, folgeMonat, folgeJahr;
    char antw='J';
    System.out.println("Berechnung des Folgedatums");
    do {
    System.out.println( );
    System.out.print("Eingabe des Datums: Tag --> " );
    tag = Terminal.readInt();
    System.out.print(" Monat --> " );
    monat = Terminal.readInt();
    System.out.print(" Jahr --> " );
    jahr = Terminal.readInt();

    switch (monat) {
    case 2 : /* Schaltjahre sind diejenigen Jahre, deren Jahreszahl durch 4 teilbar
    ist mit Ausnahme derjenigen, deren Jahreszahl durch 100,
    aber nicht durch 400 teilbar ist */

    if ((jahr%4==0) && !((jahr%100==0) && !(jahr%400==0)))
    letzterTag = 29;
    else {
    letzterTag = 28;
    } break;
    case 4 :
    case 6 :
    case 9 :
    case 11 : letzterTag = 30; break;
    default : letzterTag = 31; break;
    }
    // Normalfall
    folgeTag = tag + 1;
    folgeMonat = monat;
    folgeJahr = jahr;
    // Monatsende
    if (folgeTag > letzterTag) {
    folgeTag = 1;
    folgeMonat = folgeMonat + 1;
    }
    // Jahresende
    if (folgeMonat==13) {
    folgeMonat = 1;
    folgeJahr = folgeJahr+1;
    }

    System.out.println( );
    System.out.print("Der folgende Tag hat das Datum: " );
    System.out.println(folgeTag+"."+folgeMonat+"."+folgeJahr );
    System.out.println( );
    System.out.print("Nochmal (J/N)? " );
    antw=Terminal.readChar();
    } while (antw=='j' || antw=='J');
    }
    }

    Vielen Dank



  • bist du das?
    *g*
    http://www.fsg-marbach.lb.bw.schule.de/projekte/info2002/uebungen/folgedatum_l.htm

    na ja..
    folgender include:

    #include <iostream>
    using namespace std;
    

    nimm die Klasse weg, mache nur

    int main(){
    
    }
    

    da drin dann deine mainfunktion.

    ersetzt System.out.print durch cout<<
    und readInt durch cin>>
    readChar auch durch cin>>

    die lines können mit "\n" umgebrochen werden.
    verknüpfen tust du nicht mir + sondern so:

    cout<<"hi"<<variable1<<"hi"<<variable2;
    

    dann müsste es genauso gehen, aber fehler sind nicht abgefangen .. bei eingabe von buchstaben gibt es dann eine endlosschleife, da müsstest du noch eine prüfung vorhauen.

    so long.



  • Vielen Dank. Ich bin nicht der Typ von der Website aus deinem Link.



  • Hab es jetzt so. Das mit dem "+" ersetzen hab ich nicht ganz verstanden. Könntest du es bitte mit "C" erklären und nicht mit "C++". Bin mit "C" zur Zeit noch etwas vertrauter.

    #include <iostream> 
    using namespace std;
    
    int main()
    { 
    
    int tag, monat, jahr, letzterTag, folgeTag, folgeMonat, folgeJahr; 
    
    char antw='J'; 
    
    printf("Berechnung des Folgedatums"); 
    do { 
    printf(" "); 
    printf("Eingabe des Datums: Tag --> " ); 
    scanf("tag = ()"); 
    printf(" Monat --> " ); 
    scanf("monat = ()"); 
    printf(" Jahr --> " ); 
    scanf("jahr = ()"); 
    
    switch (monat) { 
    case 2 : /* Schaltjahre sind diejenigen Jahre, deren Jahreszahl durch 4 teilbar 
    ist mit Ausnahme derjenigen, deren Jahreszahl durch 100, 
    aber nicht durch 400 teilbar ist */ 
    
    if ((jahr%4==0) && !((jahr%100==0) && !(jahr%400==0))) 
    letzterTag = 29; 
    else { 
    letzterTag = 28; 
    } break; 
    case 4 : 
    case 6 : 
    case 9 : 
    case 11 : letzterTag = 30; break; 
    default : letzterTag = 31; break; 
    } 
    // Normalfall 
    folgeTag = tag + 1; 
    folgeMonat = monat; 
    folgeJahr = jahr; 
    // Monatsende 
    if (folgeTag > letzterTag) { 
    folgeTag = 1; 
    folgeMonat = folgeMonat + 1; 
    } 
    // Jahresende 
    if (folgeMonat==13) { 
    folgeMonat = 1; 
    folgeJahr = folgeJahr+1; 
    } 
    
    //cout<<"hi"<<variable1<<"hi"<<variable2;
    
    printf(" "); 
    printf("Der folgende Tag hat das Datum: " ); 
    printf("folgeTag"."folgeMonat"."folgeJahr"); 
    printf(" "); 
    printf("Nochmal (J/N)? " ); 
    scanf("antw=()"); 
    } while (antw=='j' || antw=='J'); 
    } 
    
    return 0;
    }
    

    Vielen Dank.

    /edit: bitte Code Tags verwenden, danke



  • was elise meint, ist, dass in java strings mit "+" aneinandergehängt werden.
    in dem fall (bei der ausgabe mit cout) geht das so:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    int tag, monat, jahr, letzterTag, folgeTag, folgeMonat, folgeJahr;
    
    char antw='J';
    
    cout << "Berechnung des Folgedatums";
    do {
    cout << "\nEingabe des Datums: Tag --> ";
    cin >> tag;
    cout << " Monat --> ";
    cin >> monat;
    //etc.
    }
    


  • Aha Danke.

    Jetzt passt alles bis auf diese Zeile:

    printf("folgeTag"."folgeMonat"."folgeJahr");

    Was ist da falsch. Der " Punkt " oder?



  • Naja jetzt kommt zwar kein Fehler mehr aber wirklich funzt das leider noch nicht 😉

    #include <iostream>
    using namespace std;

    int main()
    {

    int tag, monat, jahr, letzterTag, folgeTag, folgeMonat, folgeJahr;

    char antw='J';

    cout << "Berechnung des Folgedatums";
    do {
    cout << "\nEingabe des Datums: Tag --> ";
    cin >> tag;
    cout << " Monat --> ";
    cin >> monat;
    printf(" Jahr --> " );
    scanf("jahr = ()");

    switch (monat)
    {
    case 2 :

    if ((jahr%4==0) && !((jahr%100==0) && !(jahr%400==0)))
    letzterTag = 29;
    else {
    letzterTag = 28;
    } break;
    case 4 :
    case 6 :
    case 9 :
    case 11 : letzterTag = 30; break;
    default : letzterTag = 31; break;
    }

    folgeTag = tag+1;
    folgeMonat = monat;
    folgeJahr = jahr;

    if (folgeTag > letzterTag) {
    folgeTag = 1;
    folgeMonat = folgeMonat + 1;
    }

    if (folgeMonat==13) {
    folgeMonat = 1;
    folgeJahr = folgeJahr+1;
    }

    printf(" ");
    printf("Der folgende Tag hat das Datum: " );
    printf("folgeTag" "folgeMonat" "folgeJahr");
    printf(" ");
    printf("Nochmal (J/N)? " );
    scanf(%c,"antw='J'");
    }
    while (antw=='j' || antw=='J');
    }



  • cout << folgeTag << ' ' << folgeMonat << ' ' << folgeJahr
    

    du solltest alle printf/scanf aufrufe durch deren cout/cin entsprechenung ersetzen.



  • davie schrieb:

    cout << folgeTag << ' ' << folgeMonat << ' ' << folgeJahr
    

    du solltest alle printf/scanf aufrufe durch deren cout/cin entsprechenung ersetzen.

    cout ist doch genau das gleiche wie printf oder?



  • cout gibt deinem code einen touch von c++ 😉



  • LOL. Ein Kollege hat mir gerade mitgeteilt, dass mein Code viel zu kompliziert ist und dass es auch viel leichter gehen würde. Weiß jemand wie das gehen könnte?

    Kontrollstrukturen:

    Erstellen Sie ein Programm tomorrow.cpp, das das Folgedatum zu einem vorgegebenen Kalenderdatum ermittelt. Überprüfungen Sie auch, ob das eingegebene Datum korrekt ist.

    Beispiel für Programmabläufe:

    Geben Sie ein Kalenderdatum ein (tt.mm.jjjj) : 28.2.2000
    Der naechste Tag ist der 29.02.2000

    Geben Sie ein Kalenderdatum ein (tt.mm.jjjj) : 1.13.2000
    01.13.2000 ist kein gueltiges Datum



  • da gäbe es dann viel zu viel zu erfragen..

    mit welcher api programmiert ihr? oder total im standard?

    aber egal, wenn dein kollege es schon hat, brauchen wir hier ja nicht schülercode von einer website (oben) nach c++ "portieren" 😉



  • Wir programmieren ganz normal im Standart in C und C++. Mein Kollege hat leider auch noch einen Fehler drin und findet ihn nicht 😞


Anmelden zum Antworten