Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie z pliku

Ostatnio zmodyfikowano 2010-04-16 14:21
Autor Wiadomość
bartek483
Temat założony przez niniejszego użytkownika
Wczytywanie z pliku
» 2010-04-10 16:56:58
Witamm

Poraz kolejny mam problem z wczytaniem z pliku i jak zwykle nie mam pojecia gdzie .. przeanalizowalem pare razy kod i nie widze wg mnie bledu, jakby ktos by mogl zerknac w moj kod bylbym bardzo wdzieczny, z gory dziekuje ;)

C/C++
int menu()
{
    int opcja = 6;
   
    while( opcja > 5 || opcja < 1 ) {
        cout << "\n1. Bez sortowania.\n" << "2. Wg nazwiska (rosnaco).\n"
        << "3. Wg gatunku (rosnaco).\n" << "4. Wg dlugosci (malejaco).\n"
        << "5. Wg wagi (rosnaco).\n";
        cin >> opcja;
        cout << "\n";
    }
    return opcja;
}
//------------------------------------
void wyswietl( vector < ZlowionaRyba > & kontener )
{
    for( int i = 0; i < kontener.size(); ++i ) {
        cout << kontener[ i ].imie << " " << kontener[ i ].nazw << " " << kontener[ i ].gatunek
        << kontener[ i ].dlugosc << " " << kontener[ i ].waga << "\n";
    }
}
//------------------------------------
void qsort( vector < ZlowionaRyba > & kontener, int l, int r, int p )
{
}
P-15992
malan
» 2010-04-10 23:19:07
Na to wygląda :).
P-15998
DejaVu
» 2010-04-11 17:39:37
1. Napisz program, który wykorzystuje istniejącego qsort'a.
2. Jeśli będzie działał ptk 1. napisz własnego qsorta i podmień jego wywołanie w programie z ptk 1.
P-16017
bartek483
Temat założony przez niniejszego użytkownika
» 2010-04-16 14:21:31
Napisalem cos takiego:

C/C++
/* Quick
       Sort */

#include <iostream>
#include <conio.h>
#include <fstream>
#include <vector>
#include <string>

using namespace std;
//------------------------------------
struct ZlowionaRyba
{
    ZlowionaRyba( const char * im, const char * naz, const char * gat, double dl, double wag );
   
    char imie[ 32 ];
    char nazw[ 32 ];
    char gatunek[ 32 ];
    double dlugosc;
    double waga;
};
//------------------------------------
ZlowionaRyba::ZlowionaRyba( const char * im, const char * naz, const char * gat, double dl, double wag )
    : dlugosc( dl )
    , waga( wag )
{
    strcpy( imie, im );
    strcpy( nazw, naz );
    strcpy( gatunek, gat );
};
//------------------------------------
void load( vector < ZlowionaRyba > & kontener )
{
    char name[ 32 ];
    char surname[ 32 ];
    char grade[ 32 ];
    double _long;
    double weight;
   
    ifstream plik( "Ryby.txt", ios::out );
   
    if( plik.good() ) {
        while( plik >> name >> surname >> grade >> _long >> weight ) {
            ZlowionaRyba add( name, surname, grade, _long, weight );
            kontener.push_back( add );
        }
    }
    else cout << "Error ..\n\n";
   
    plik.close();
}
//------------------------------------
int menu()
{
    int opcja = 6;
   
    while( opcja > 5 || opcja < 1 ) {
        cout << "\n1. Bez sortowania.\n" << "2. Wg nazwiska (rosnaco).\n"
        << "3. Wg gatunku (rosnaco).\n" << "4. Wg dlugosci (malejaco).\n"
        << "5. Wg wagi (rosnaco).\n";
        cin >> opcja;
        cout << "\n";
    }
    return opcja;
}
//------------------------------------
void wyswietl( vector < ZlowionaRyba > & kontener )
{
    for( int i = 0; i < kontener.size(); ++i ) {
        cout << kontener[ i ].imie << " " << kontener[ i ].nazw << " " << kontener[ i ].gatunek
        << kontener[ i ].dlugosc << " " << kontener[ i ].waga << "\n";
    }
}
//------------------------------------
void qsort( vector < ZlowionaRyba > & kontener, int l, int r, int p )
{
    int i = l;
    int j = r;
    int piwot =( l + r ) / 2;
   
    switch( p )
    {
        /*case 1:
        wyswietl(kontener); return ;*/
    case 2: {
            do
            {
                while( strcmp( kontener[ i ].nazw, kontener[ piwot ].nazw ) < 0 ) ++i;
               
                while( strcmp( kontener[ j ].nazw, kontener[ piwot ].nazw ) > 0 ) --j;
               
                if( i <= j )
                {
                    swap( kontener[ i ], kontener[ j ] );
                    ++i;
                    --j;
                }
            }
            while( i < j ); }
        //---------------------------------------------------------------------
    case 3: {
            do
            {
                while( strcmp( kontener[ i ].gatunek, kontener[ piwot ].gatunek ) < 0 ) ++i;
               
                while( strcmp( kontener[ j ].gatunek, kontener[ piwot ].gatunek ) > 0 ) --j;
               
                if( i <= j )
                {
                    swap( kontener[ i ], kontener[ j ] );
                    ++i;
                    --j;
                }
            }
            while( i < j ); }
        //---------------------------------------------------------------------
    case 4: {
            do
            {
                while( kontener[ i ].dlugosc > kontener[ piwot ].dlugosc ) ++i;
               
                while( kontener[ j ].dlugosc < kontener[ piwot ].dlugosc ) --j;
               
                if( i <= j )
                {
                    swap( kontener[ i ], kontener[ j ] );
                    ++i;
                    --j;
                }
            }
            while( i < j ); }
        //---------------------------------------------------------------------
    case 5: {
            do
            {
                while( kontener[ i ].waga < kontener[ piwot ].waga ) ++i;
               
                while( kontener[ j ].waga > kontener[ piwot ].waga ) --j;
               
                if( i <= j )
                {
                    swap( kontener[ i ], kontener[ j ] );
                    ++i;
                    --j;
                }
            }
            while( i < j ); }
        //---------------------------------------------------------------------
        if( l < j ) qsort( kontener, l, j, p );
       
        if( r > i ) qsort( kontener, i, r, p );
       
    }
}
//------------------------------------
int main( int argc, char * argv[] )
{
    vector < ZlowionaRyba > kontener;
    int p;
   
    load( kontener );
   
    int r = kontener.size() - 1;
   
    while( true ) {
        p = menu();
        if( p == 1 )
             wyswietl( kontener );
        else {
            qsort( kontener, 0, r, p );
            wyswietl( kontener );
        }
    }
   
    _getch();
    return 0;
}

Tko ze jak wybiore opcje 2 to czasami wywala mi jakis blad i zamyka sie konsola, nie wiem czemu ;/
P-16189
« 1 »
  Strona 1 z 1