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 ;) 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 ) { }
|
|
malan |
» 2010-04-10 23:19:07 Na to wygląda :). |
|
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. |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-04-16 14:21:31 Napisalem cos takiego:
#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 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 ;/ |
|
« 1 » |