Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Kleine Sortieraufgabe

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 < [ 2 ]
000
09.08.2003, 11:09 Uhr
~Markus
Gast


Hallo,
ich habe mir mal folgende Aufgabe für euch überlegt.

Schreibt ein Programm das Wörter oder Zahlen aus einer Datei liest und diese aufsteigend sortiert in eine neue Datei schreibt.

Bitte nur Ansi C++ verwenden.

Also dann viel Spaß dabei
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.08.2003, 14:25 Uhr
Pablo
Supertux
(Operator)


Schöne Aufgabe, aber ich finde dass sie keine Herausforderung ist. Du kannst entweder die verschiedenen Algorithmen (mergesort, heapsort, quicksort usw.) anwenden oder die Sortierfunktionen von der STL.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 09.08.2003 um 14:25 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.08.2003, 14:34 Uhr
~Markus
Gast


Wenn keine herausforderung ist dann zeigs mir. Ich bezweifel nicht das du das nicht hinbekommst aber reden kann ich auch viel .
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.08.2003, 14:39 Uhr
Pablo
Supertux
(Operator)


Ich wollte doch niemanden angreifen! Wenn dir mein Komentar nicht gefallen hat, dann tut es mir echt leid, ich wollte nicht, dass es so klingt. Da ich es mein Thread nochmal lese, dann merke ich, das es nicht so schön ausshieht, gebe ich zu.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.08.2003, 15:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Markus
Ich vermute mal das Pablo kein Bock drauf hatte, weil solche Fragen wie das geht schon öfter gestellt und beantwortet wurden. (Von mindestens einem weiss ich, da ich den mit beantwortet habe)
musst mal nach alten Threads suchen dann wirst du sehen das dein Rätsel schon mehr oder weniger gelöst ist.

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.08.2003, 16:52 Uhr
virtual
Sexiest Bit alive
(Operator)


Was solls, langweile mich grade.

C++:
#include <iostream>
#include <iterator>
#include <list>
#include <string>

int main()
{
    std::list<std::string> content;

    // Einlesen:
    // In dieser Zeile kann std::cin auch durch einen fstream erstetzt werden
    std::copy(std::istream_iterator<std::string>(std::cin),
              std::istream_iterator<std::string>(),
              std::back_inserter(content));

    // Sortieren
    content.sort();

    // Ausgeben
    std::copy(content.begin(),
              content.end(),
              std::ostream_iterator<std::string>(std::cout, "\n"));

}


Solltest Deinem Lehrer nur sagen, daß die Lösung nicht von Dir ist
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 09.08.2003 um 16:53 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.08.2003, 17:05 Uhr
~Markus
Gast


@ virtual soll das funktionieren?

ich hab dein prog mal ausgeführt und da tu sich garnichts
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.08.2003, 17:10 Uhr
~Markus
Gast


Also zugegeben ich bekomm das nicht so einfach hin denn, wenn ich mal angenommen zahlen (mehrstellig) aus einer datei lese, werden diese ja in einem Array gespeichert also kann ich nicht jede stelle eines Array vergleichen. Und was das mit den Wörtern angeht hab ich gar kein plan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.08.2003, 17:14 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@markus
wennn du ne zahl hast brauchst du nicht jede stelle einzeln zu vergleichen.
das kannst du mit < > direkt machen. Wenns vorher ein char* kannst dus mit atoi und atof in eine Zahl konvertieren

bei wörtern vergleichst du so lange bis sich der erste buchstabe unterscheidet.
nach dem sortierst du dann


Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.08.2003, 17:36 Uhr
~Markus
Gast


Also um Zahlen aus einer Datei zulesen und aufsteigend zu sortieren habe ich mir folgendes Programm geschrieben.


C++:
#include <iostream>
#include <fstream>

using namespace std;

class CZahl
{
    public:
        char m_Zahl[20];
};

int main()
{
    CZahl    Zahl[20];
    CZahl    Temp;
    int        iZahl1        = 0;
    int        iZahl2        = 0;
    int        iCounter    = 0;
    bool    blnCheck    = true;

    // Datei zum lesen oeffnen
    ifstream rFile("unsort.dat");

    // Wenn Fehler beim oeffnen der Datei Fehlernachricht ausgeben und Programm abbrechen
    if(!rFile)
    {
        cerr << "Error to open file (unsort.dat)!";
        return 1;
    }

    for(int i = 0; i < 50; i++)
    {
        if(rFile.getline(Zahl[i].m_Zahl, 20))
        {
            iCounter++;
        }

        // Ueberpruefen ob Dateiende erreicht
        if(rFile.eof())
        {
            // Wenn Dateiende erreicht for Schleife abbrechen
            break;
        }
    }

    while(blnCheck)
    {
        blnCheck    = false;

        for(int i = 0; i < (iCounter-1); i++)
        {
            iZahl1    = atoi(Zahl[i].m_Zahl);
            iZahl2    = atoi(Zahl[i+1].m_Zahl);

            if(iZahl1 > iZahl2)
            {
                for(int c = 0; c < 20; c++)
                {
                    Temp.m_Zahl[c]        = Zahl[i].m_Zahl[c];
                    Zahl[i].m_Zahl[c]    = Zahl[i+1].m_Zahl[c];
                    Zahl[i+1].m_Zahl[c]    = Temp.m_Zahl[c];
                }

                blnCheck    = true;
            }
        }
    }
    
    // Datei erstellen und zum schreiben oeffnen
    ofstream wFile("sort.dat");

    for(int iZeile = 0; iZeile < 50; iZeile++)
    {
        for(int iSpalte = 0; iSpalte < 20; iSpalte++)
        {
            wFile << Zahl[iZeile].m_Zahl[iSpalte];

            if(iSpalte == (20-1))
            {
                wFile << endl;
            }
        }
    }

    return 0;
}



edit mike: cpp Tags

Dieser Post wurde am 09.08.2003 um 18:44 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


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: