Ergebnis 1 bis 4 von 4

Thema: grundlegende übergangspriobleme von c nach c++

  1. #1
    HTML Newbie
    Registriert seit
    18.09.2008
    Beiträge
    2
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard grundlegende übergangspriobleme von c nach c++

    hallo erstmal!
    also mal kurz zur erläuterung^^ ich studiere elektrotechnik und in unserem studium behandeln wir natürlich auch die programmiersprachen c und c++. angefangen haben wir mit der c- programmierung, wo ich bisher nichts sooooo große probleme mit hatte bzw. selbst auf antworten gekommen bin. nun mein problem: wir haben die erste übung für den übergang von c nach c++ bekommen. hier mal der quellcode:

    #include<stdio.h>
    #include<stdlib.h>



    void main()
    {
    int emil_day,emil_month,emil_year;
    int hugo_day,hugo_month,hugo_year;
    int emil_is_aelter;
    long int emil_tage,hugo_tage;
    char datstr[10];
    int i;
    char monstr[12][4]={"Jan","Feb","Mar","Apr","Mai","Jun","Jul",
    "Aug","Sep","Okt","Nov","Dez"};

    //geburtsdatum, emil eingeben
    printf("Eingabe des Geburtsddatums von Emil im Format dd-mm-yy\n");
    scanf("%s",datstr);
    for(i=0;i<9;i++) if(datstr[i]=='-') datstr[i]=' ';
    sscanf(datstr,"%d %d %d",&emil_day,&emil_month,&emil_year);
    emil_month=emil_month-1;

    //geburtsdatum, hugo eingeben
    printf("Eingabe des Geburtsddatums von Hugo im Format dd-mm-yy\n");
    scanf("%s",datstr);
    for(i=0;i<9;i++) if(datstr[i]=='-') datstr[i]=' ';
    sscanf(datstr,"%d %d %d",&hugo_day,&hugo_month,&hugo_year);
    hugo_month=hugo_month-1;

    // Geburtsdatum, emil ausgeben
    printf(" Det Jeburtsdatum von Emil is %dter - %s - %d \n",
    emil_day,monstr[emil_month],emil_year);

    // Geburtsdatum, hugo ausgeben
    printf(" Det Jeburtsdatum von Hugo is %dter - %s - %d \n",
    hugo_day,monstr[hugo_month],hugo_year);


    //Zwei Geburtsdaten vergleichen
    emil_tage=emil_day+31L*emil_month+373L*emil_year;
    hugo_tage=hugo_day+31L*hugo_month+373L*hugo_year;
    if(emil_tage<hugo_tage) {
    emil_is_aelter=1;
    } else {
    emil_is_aelter=0;
    };
    if(emil_is_aelter) {
    printf(" Emil ist aelter \n");
    } else {
    printf(" Emil ist vielleicht doch nicht aelter \n");
    };


    }

    soweit so gut. unsere aufgaben dazu wären:
    1.Identifizieren Sie ein Objekt "Datum" mit Daten und Funktionen
    2.Definieren Sie die Daten einer Klasse CDatum mit Standardtypen. Die Daten sind als “private” zu deklarieren.
    3.Definieren Sie die Operationen einer Klasse CDatum als Funktionsprototypen
    4.Realisieren Sie diese FunktionenErstellen die einen Default Konstruktor, einen Konstruktor, der eine Initialisierung mit einem bestimmten Datums-Wert erlaubt und einen leeren Destruktor
    5.Schreiben Sie ein Testprogramm, welches sämtliche Funktionen aufruft und in der Funktionalität in etwa dem Beispielprogramm Date1.cpp entspricht. Vpon einer exakten Nachbildung der Funktionalität des ausgangsprogrammes kann im Sinne eines objektorientierten Programmaufbaues abgewichen werden.
    6.Zeigen Sie im Testprogramm, daß das aufrufende Programm keinen Zugriff auf die privaten Daten der Klasse CDatum hat


    so, habe mich natürlich versucht nen bissl zu belesen. aba ich glaube bei mir haperts momentan an der logik. ich find da einfach kein objekt in dem quellcode, zumindest bin ich mir net wirklich sicher. genauso, wüsste ich jetzt net wenn cih eine klasse erstelle, was och dort als daten bzw. funktionen nehmen sollte. und aufgabe 4 bereitet mir ein regelrechtes kopfzerbrechen und überall steht das gleiche zu konstruktoren und destruktoren. alles schön udn gut aba je mehr ich lese desto verwirrter erscheint die ganze angelegenheit^^




    also, wie ihr seht, ich brauch echt hilfe.^^ (wer hätte das geahnt^^) vllt macht sich auch wer die mühe das programm einzeln außereinander zunehmen für mich oder einiges vllt in seinen "einfachen" worten zu erklären^^.....vllt hilfts ja schon.
    danke schonmal im voraus.


    grüße musik
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Also ersmal:
    main hat den Rückgabetyp int, in C wie in C++.
    Dass es noch kein Objekt gibt, siehst du richtig.^^ Du musst dich wohl mit objektorientierter Programmierung befassen, klick dich dazu mal durch die Links auf dieser Seite. Dort solltest du genug Online-Einführungen finden. Wenn du weißt, wie man eine Klasse erstellst, kannst du erst damit fortfahren. Kleiner Hinweis: Es heißt ja, dass du die Daten private deklarieren sollst, das heißt du musst Methoden schreiben, die nur dafür da sind, die Daten zurückzugeben.

    Du solltest dich auch ein wenig mit der Standardbibliothek befassen, diese Strings aus C solltest du z. B. nicht mehr verwenden, stattdessen C++-Strings, die Arrays kannst du erstmal weiter benutzen. Ich empfehle auch das Buch C++-Primer, falls du nicht schon genügend Lektüre hast.

    Viele liebe Grüße
    The User

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    18.09.2008
    Beiträge
    2
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    hehe.....also haben professoren doch ihre fehler?
    ich habe da gesucht und geschaut nach den objekten und mich immer mehr gefragt, wo soll ich da objekte finden. naja schon mal gut zu wissen, dass ich doch noch net so positiv durcheinander bin^^

    ok also erstmal danke für die hilfe werd mir die tutorials mal anschauen. als du sagst dass main int ausgibt, dass das void vor main falsch ist? oder versteh ich das grad nur falsch?

    omg .....es gibt unterschiede bei den strings zwischen c und c++? aaaaaaaaaahhhhhhhhhhh........^^

    kannst mir vllt auch ansätze geben, wie ich auf eine lösung bei der aufgabe komme? also gedanken die man sich machen sollte bei klassenprogrammierung oder so? da gibts doch sicherlich nen trick?!^^

    grüße musik

  4. #4
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Also ich fang mal an:
    main hat den Rückgabetyp int, also es muss so aussehen:
    Code:
    int main(int argc, char** argv)
    {
      ...
      return 0;
    }
    Die Parameter brauchst du nicht unbedingt (also argc und argv kannst du weglassen), das sind einfach Kommandozeilenparameter, aber auf jeden Fall im Erfolgsfall 0 und sonst eine andere Zahl zurückgeben, du hast doch bestimmt schonmal erlebt, dass ein Programm abgestürzt ist und irgendwie Fehler -1 oder so zurückgegeben hat.

    Die Strings aus C werden in C++ genauso übernommen, jedoch ist es elganter, die strings aus der Standardbibliothek zu verwenden.
    Sie sind sicherer vor Speicherlecks und mit ihnen kann man mehr Sachen anstellen, noch eine Sache sind cin und cout zur Ein-/Ausgabe, printf und so können aber weiterhin verwendet werden:
    Code:
    #include <iostream> // Die "neue" C++-Ein-/Ausgabe
    #include <cstdio>      // Die alte Ein-/Ausgabe mit einem C davor
    #include <cstdlib>     // Die alte stdlib aus C, oft zu gebrauchen ;)
    #include <string>      // Strings aus C++
    
    using namespace std; // So kann man z. B. statt std::cin nur cin schreiben, bei der Standardbibliothek ist das noch okay, aber um Namenskonflikte zu verhindern, sollte man wenn andere Bibliothek ins Spiele kommen z. B. nur "using sf::Image;" machen, sodass nur der eine Name importiert wird (Image ist durchaus ein häufiger Name ;))
    
    int main(int argc, char** argv)
    {
      cout << "Der erste Parameter der Kommandozeile ist: ";
      if(argc < 1)
        cout << "nicht vorhanden" << endl;
      else
        cout << argv[0] << endl;
      string str1, str2 = "blabla";
      char* cstring = "haesslicher C-String :(";
      cout << "Einen String eingeben: ";
      cin >> str1;
      int pos, length;
      cout << "Startposition und Laenge eingeben: ";
      cin >> pos >> length;
      string str3 ( str1, pos, length );
      cout << str3 << endl;
      cout << "Ein C-String als C++-String: " << string(cstring) << endl;
      cout << "Zwei verkettete C++-Strings: " << (str2 + str3) << endl;
      cout << "Ein C++-String als C-String: " << str1.c_str() << endl;
      printf("Das geht auch noch!\n");
      return EXIT_SUCCESS; // wie return 0;
    }
    Ich hoffe das hilft bei den Anfängen.
    Zur OOP musst du wirklich mal ein Tutorial lesen, das geht nicht so eben, aber wenn du das getan hast, wirst du diese Tips umzusetzen wissen:
    Durch private kann man auf ein Element nicht zugreifen, z. B.:
    Code:
    private:
      int date;
    Du brauchst dann einen Getter:
    Code:
    public:
      int GetDate(void)
      {
        return this->date;
      }
    Aber du musst das wirklich ausführlich lernen.

    Auf jeden Fall kamen in dem Code oben keinerlei Objekte oder Klassen vor, nonimma ein struct aus C.

    Viele liebe Grüße
    The User

Ähnliche Themen

  1. php nach mp3
    Von ichundwir im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 23.02.2007, 21:10
  2. Gif nach 30 sec neustarten
    Von fixunfoxi im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 2
    Letzter Beitrag: 22.02.2007, 19:41
  3. Hompage nach up. erst nach Aktualisieren auf dem Laufenden
    Von mad-byte im Forum HTML & CSS Forum
    Antworten: 4
    Letzter Beitrag: 06.01.2007, 12:25
  4. Automatisches Abmelden nach Programmende, bz nach Zeitablauf
    Von der bastler im Forum Computer - Internet Forum
    Antworten: 6
    Letzter Beitrag: 13.11.2006, 15:35
  5. Grundlegende Fragen zu einem Chat
    Von OJMD im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 11
    Letzter Beitrag: 14.09.2006, 16:25

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •