Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.01.2007, 21:00 Uhr
VirusX



Hallo.

Ich habe eine Frage bezüglich Klassen. Folgende Aufgabe wurde gestellt:



Zitat von Verfasser:

Implementieren Sie eine Klasse mit folgenden Eigenschaften:
 Speichert eines Textstrings
 Einlesen eines Textstrings
 Ausgabe des Textstrings in umgekehrter Reihenfolge
Beispiel:
Eingabe: Heute ist ein schoener Tag
Ausgabe: Tag schoener ein ist Heute
Implementieren Sie die Klassen und ein dazugehöriges Testprogramm.



Meine Version, jedoch ohne Klassen und Testprogramm, ist:



C++:
int main()

{
    // Nach dem Textstring fragen und einlesen
    cout << "Bitte geben Sie den String ein: \n";
    vector<string> satz;
    string x;
    while (cin >> x)
    {
        satz.push_back(x);
    }

    
    typedef vector<string, allocator<string> > StrVector ;

    typedef StrVector::iterator StrVectorIt ;

    StrVectorIt start, end, it ;
    
    start = satz.begin() ;  

    end = satz.end() ;
    
    

    
    cout << "\nIhr eingegebener Satz war: \t" ;
    for(it = start; it != end; it++)
        cout << *it << " " ;
    cout << "\n\n\n" ;

    
     reverse(start, end) ;

    cout << "Das Ganze umgedreht gibt: \t" ;
    for(it = start; it != end; it++)
        cout << *it << " " ;
    cout << "\n\n" ;

    return 0;

}



Da ich aber noch ziemlicher Anfänger in C++ bin, weiß ich nicht weiter, wie ich diesen Quellcode auch mit Klassen umsetzen kann bzw. wie eine Testfunktion einzubauen ist.
Wenn mir jemand helfen kann, wäre ich darüber sehr froh
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.01.2007, 21:56 Uhr
Suba Esel



Moin!
Zum Thema Klassen kann ich nichts sagen, weil ich selber noch Anfänger bin.

Was genau verstehst du unter einer Testfunktion?

Ich denke mal, dass du in dem kompletten Quellcode noch #include <iostream>, #include <vector> und using namespace std; drinhast, ansonsten kann das Programm nicht funktionieren

while(cin >> x) sorgt für eine Endlosschleife

ich vermute mal, dass reverse(start, end); start und end vertauscht
dann wäre es imho aber leichter, einfach die for - schleife bei end zu starten und rückwärts laufen zu lassen
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.01.2007, 22:30 Uhr
xXx
Devil


Ok hab gerade kein VC++ aufm PC installiert. d.h. jetzt mal alles ausser Hand

C++:
// task.h
#if !defined(_TASK_H__INCLUDED)
#define _TASK_H__INCLUDED

#if (_MSC_VER >= 1000)
    #pragma once
#endif

#include <iostream>
#include <string>

class CTask
{
public:
    CTask(void);
    CTask(std::string sString);
    ~CTask(void);

public:
    void set_string(std::string sString) { m_sString = sString; }
    void print_string(void);
    void print_string_reverse(void);
    bool save(std::string sFileName);
    bool load(std::string sFileName);

private:
    std::string m_sString;
};

#endif // _TASK_H__INCLUDED




C++:
// Task.cpp
#include "./task.h"

CTask::CTask(void)
{
    m_sString = "";
}

CTask::CTask(std::string sString)
{
    m_sString = sString;
}

CTask::~CTask(void)
{
}

void CTask::print_string(void)
{
    std::cout << m_sString << std::endl;
}

void CTask::print_string_reverse(void)
{
    // DAS IST DEINE AUFGABE!
}

bool CTask::save(std::string sFileName)
{
    // AUCH DEINE AUFGABE
    // TODO: Benutz ofstream ...

    return true;
}

bool CTask::load(std::string sFileName)
{
    // AUCH DEINE AUFGABE
    // TODO: Benutz ifstream ...

    return true;
}


So ... dann ist dein Testprogramm bsw.:

C++:
#include <iostream>
#include "./Task.h"

int main(void)
{
    CTask task("Das ist ein Test");
    std::cout << "CTask Objekt erzeugt!" << std::endl;
    std::cout << "Momentaner String:" << task.print_string();
    if (task.save("C:\\test.txt") != true)
    {
        std::cout << "Speichern in C:\\test.txt fehlgeschlagen!" << std::endl;
        return -1;
    }
    std::cout << "String wurde in C:\\test.txt gespeichert!" << std::endl;
    task.set_string("Nochmal was anderes ;)");
    std::cout << "Der Membervariable m_sString des Task Objektes wurde folgendes zugewiesen: " << task.print_string() << std::endl;
    std::cout << "Umgedreht ergibt sich folgende Zeichenkette: " << task.print_string_reverse();
    if (task.load("C:\\test.txt") != true)
    {
        std::cout << "C:\\test.txt konnte nicht geöffnet werden!" << std:.endl;
        return -1;
    }
    std::cout << "Aus C:\\test.txt wurde der String wieder ausgelesen." << std::endl;
    std::cout << task.print_string();
    
    return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: