Pomoc program sie wysypuje -do oddania jutro
Ostatnio zmodyfikowano 2013-01-15 03:42
cryuff Temat założony przez niniejszego użytkownika |
Pomoc program sie wysypuje -do oddania jutro » 2013-01-14 21:18:24
#include "stdafx.h" #include <iostream> #include <fstream> #include <string> #include <stdlib.h>
using namespace std;
int zliczenie( string ); void menu(); int wybor; string sort1az( int k, string tabs[] ); string sort1za( int k, string tabs[] ); string sort2az( int k, string tabs[] ); string sort2za( int k, string tabs[] ); string najdluzszy( int k, string tabs[] ); string najkrotszy( int k, string tabs[] ); int main() { int i = 0; int a; int wybor; string sciezka; cout << "Podaj sciezke do pliku .txt (pamietaj o uzyciu podwojnych backshlash'y)" << endl; cin >> sciezka; cout << endl; string * tab; tab = new string[ zliczenie( sciezka ) ]; a = zliczenie( sciezka ); ifstream plik; plik.open( sciezka.c_str(), ios::in | ios::out ); if( plik ) { string linia; while( !plik.eof() ) { plik >> linia; { tab[ i ] = linia; i++; } } } else { cout << "Blad. Nie mozna odczytac pliku." << endl; } menu(); cin >> wybor; switch( wybor ) { case 0: { for( int i = 0; i < a; i++ ) cout << tab[ i ] << endl; break; } case 1: { tab[ a ] = sort1az( a, tab ); for( int i = 0; i < a; i++ ) cout << tab[ i ] << endl; break; } case 2: { tab[ a ] = sort2az( a, tab ); for( int i = 0; i < a; i++ ) cout << tab[ i ] << endl; break; } case 3: { tab[ a ] = sort1za( a, tab ); for( int i = 0; i < a; i++ ) cout << tab[ i ] << endl; break; } case 4: { tab[ a ] = sort2za( a, tab ); for( int i = 0; i < a; i++ ) cout << tab[ i ] << endl; break; } case 5: { cout << "Najdluzszy wyraz to: " << najdluzszy( a, tab ); break; } case 6: { cout << "Najkrotszy wyraz to: " << najkrotszy( a, tab ); break; } } system( "PAUSE" ); return 0; }
void menu() { cout << "Wybierz jedna z funkcji programu:" << endl; cout << "Wpisz 0, aby wypisac dotychczasowo otrzymany slownik" << endl; cout << "Wpisz 1, aby pogrupowac wyrazy od A do Z przy pomocy pierwszego algorytmu" << endl; cout << "Wpisz 2, aby pogrupowac wyrazy od A do Z przy pomocy drugiego algorymty" << endl; cout << "Wpisz 3, aby pogrupowac wyrazy od Z do A przy pomocy pierwszego algorytmu" << endl; cout << "Wpisz 4, aby pogrupowac wyrazy od Z do A przy pomocy drugiego algorytmu" << endl; cout << "Wpisz 5, aby odnalezc najdluzszy wyraz" << endl; cout << "Wpisz 6, aby odnalezc najkrotszy wyraz" << endl; cout << "Wpisz 7, aby dopisac wyraz" << endl; cout << "Wpisz 8, aby wykasowac wyraz" << endl; cout << "Wpisz 9, aby zapisac wyniki do pliku" << endl; }
int zliczenie( string link ) { int licznik = 0; string slowo; ifstream pliczek; pliczek.open( link.c_str() ); while( pliczek >> slowo ) licznik++; return licznik; pliczek.close(); }
string sort1az( int k, string tabs[] ) { string temp; int dopoki = 1; while( dopoki ) { dopoki = 0; for( int i = 0; i < k; i++ ) { if( *( tabs + i ) >*( tabs + i + 1 ) ) { temp =*( tabs + i ); *( tabs + i ) =*( tabs + i + 1 ); *( tabs + i + 1 ) = temp; dopoki = 1; } } } system( "cls" ); return( * tabs ); }
string sort1za( int k, string tabs[] ) { string temp; int dopoki = 1; while( dopoki ) { dopoki = 0; for( int i = 0; i < k; i++ ) { if( *( tabs + i ) <*( tabs + i + 1 ) ) { temp =*( tabs + i ); *( tabs + i ) =*( tabs + i + 1 ); *( tabs + i + 1 ) = temp; dopoki = 1; } } } system( "cls" ); return( * tabs ); }
string sort2az( int k, string tabs[] ) { int i, j; string temp; for( j = k - 2; j >= 0; j-- ) { temp = tabs[ j ]; i = j + 1; while(( i <= k - 1 ) &&( temp > tabs[ i ] ) ) { tabs[ i - 1 ] = tabs[ i ]; i++; } tabs[ i - 1 ] = temp; } system( "cls" ); return( * tabs ); }
string sort2za( int k, string tabs[] )
{ return( * tabs ); } string najdluzszy( int k, string tabs[] ) { string naj; naj = tabs[ 0 ]; for( int i = 0; i < k; i++ ) { if( tabs[ i ].length() > tabs[ i + 1 ].length() ) naj = tabs[ i ]; else naj = tabs[ i + 1 ]; } return naj; }
string najkrotszy( int k, string tabs[] ) { string najk; najk = tabs[ 0 ]; for( int i = 0; i < k; i++ ) { if( tabs[ i ].length() < tabs[ i + 1 ].length() ) najk = tabs[ i ]; else najk = tabs[ i + 1 ]; } return najk; }
to jest kod mojego programu, wysypuje się on jeśli wczytam pliki txt z dluzsza iloscia wyrazow, co zrobic? |
|
DejaVu |
» 2013-01-14 21:29:05 |
|
cryuff Temat założony przez niniejszego użytkownika |
» 2013-01-14 21:34:45 Temat poprawiony program dalej się w czasie debugowania wysypuje. Działa przy case 0, ale przy case 1 czy 4 już nie |
|
DejaVu |
» 2013-01-15 03:42:55 Pierwsze co się rzuca w oczy to pisanie poza zakresem tablicy w linijkach analogicznych do tej: tab[ a ] = sort1az( a, tab );
|
|
« 1 » |