Zebrak Temat założony przez niniejszego użytkownika |
Konwersja na zwykły txt - nie wyświetla wyniku » 2013-11-09 14:05:54 Zmagam się z takim o to problemem. Napisany mam kod, w którym jest tablica stringów. Program powinien z pliku z klawiatury odczytać znak i przekształcić go na zwykły txt. Generalnie nie powinno być problemu jednak ja nie jestem w stanie otrzymać wyniku (litery) ani na ekran ani do pliku. Postanowiłem wczytywać znaki do zmienne i potem w pętli porównywać tego stringa z kolejnymi miejscami w tablicy. W momencie gdy stringi pasują pobieram sobie miejsce w tej tablicy. I tutaj jest w miarę ok, bo program zwraca poprawna wartość (np. dla ..- -> wartość 20 litera U). Próbowałem nawet wyświetlić wtedy samą wartość 20, ale nie jestem w stanie. Mając samą wartość spokojnie mogę przerobić to korzystając z ASCII na literę. I tak, wiem, że w kodzie jest ifstream i ofstream a korzystam z cin i cout, ale to nic nie zmienia, po prostu ani nie zapisuje do pliku ani nie wyrzuca na ekran. Sam odczyt stringa z pliku działa. int main() { ifstream ifs( "111.txt" ); ofstream ofs( "alfabet.txt" ); string c; int i, m = 0, por = 0; while( cin >> c ) { for( i = 0; por = 1; i++ ) { if( c == kody[ i ] ) { por = 1; m = i; } } cout << znak; } ofs.close(); return 0; } EDIT: Fakt, return kończy program, ale nadal nic to nie zmienia :/ |
|
pekfos |
» 2013-11-09 14:07:50 return kończy program. for( i = 0; por = 1; i++ )
To jest pętla nieskończona. PS: Nie odpowiadaj editami. |
|
Zebrak Temat założony przez niniejszego użytkownika |
» 2013-11-09 14:18:35 Ok, dzięki za zwrócenie uwagi, co do returnu.
Ale nadal nie rozumiem dlaczego pętla miałaby być nieskończona. Tym bardziej, że zwraca mi odpowiednią wartość miejsca w tablicy. No i dodatkowo, pomijając samą pętle to nawet jakbym chciał dać na cout jakiś "tekst" a nie zmienną to też nic nie wyświetla. |
|
pekfos |
» 2013-11-09 14:23:16 Warunek jest zawsze prawdziwy. |
|
Zebrak Temat założony przez niniejszego użytkownika |
» 2013-11-09 14:27:47 Niestety, ale nadal tego nie rozumiem, zawsze mogę zmienić pętlę for na for( i = 0; i <= 25; i++ ) skoro znam rozmiar tej tablicy. Nie wiem czy o to chodziło. Nie mniej nadal dostaję dobrą informację zwrotną. dla wprowadzonego z klawiatury: ..- program zwraca 20, czyli jest ok. Nie chce mi tylko niczego wyświetlać. |
|
pekfos |
» 2013-11-09 14:34:00 Podaj kod. |
|
Zebrak Temat założony przez niniejszego użytkownika |
» 2013-11-09 14:40:00 for( i = 0; i = 25; i++ ) { if( c == kody[ i ] ) { m = i; } } Zapewne się mylę, ale ja rozumię tą pętlę w ten sposób: na początku licznik jest ustawiony na i=0, pętla bedzie się powtarzać 26 razy. tylko raz w ciągu tych 26 razy zdarzy się sytuacja, że zmianna string c odpowiada stringowi na któryms tam miejscu w tablicy i wtedy to miejsce w tablicy zostanie przekazane do zmiennej m. Natomiast w przypadku poniżej pętla wykonywac sie będzie tylko do momentu kiedy stringi będą sobie odpowiadały. for( i = 0; por = 1; i++ ) { if( c == kody[ i ] ) { por = 1; m = i; } } Niestety, ale to mnie przerosło. O ile program tłumaczący tekst na alfabet morsea działą wybornie, o tyle w druga stronę mam kłopot. I to kłopo z wyświetleniem, bo miejsce tablicy jest zwracane dobrze. |
|
pekfos |
» 2013-11-09 14:44:42 |
|
« 1 » 2 3 |