Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 18:36:43 winę możesz jedynie zwalić na system (o ile jesteś pewien, że pliki które wczytujesz istnieją) na Windowsie Twój pierwszy program działa - poprawnie wczytuje, sprawdza, wypisuje na ekran i zapisuje do pliku :) nie mam pojęcia czemu Linux ma jakieś problemy
|
Dziękuję za cierpliwość. Mam nadzieję, że nie będę miał kolejnych problemów z moim Pingwinem :) |
|
ison |
» 2011-02-07 18:43:15 Nie wiem jak na Linuksie odbywa się wczytywanie pliku z określonej ścieżki. Program wygląda ok. Nie mam pojęcia jaka może być przyczyna tego problemu. W Twoim programie najpierw wypisujesz zmienną 'poprawna' a potem 'odwrotna' - mówisz, że gdy wczytujesz z pliku to mimo tego, że obie te wypisane zmienne są takie same to warunek nie jest spełniony i nie jest wypisywany na ekran tekst "tu byłem", tak? Dziwne |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 19:20:04 Powinno działać tak:
Dopóki plik dane.txt się nie skończy, wykonuj: 1. Czytaj z pliku dane.txt linijkę zawierającą słowo (jedna linijka, jedno słowo - przyp. Vercevales) i przekaż je do zmiennej poprawna (typu string), 2. Przypisz do zmiennej odwrocona (typ string) wartość zmiennej poprawna, 3. Odwróć zmienną odwrocona, 4. jeżeli słowo w zmiennej poprawna jest takiej samo jak w zmiennej odwrocona to: 4.1. zapisz słowo ze zmiennej odwrocona do pliku zadanie4.txt |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 19:30:58 Mam 99.9% pewności, że coś jest z warunkami. Nie chcą się spełniać warunki;/ w ten sposób też nie działa ;/ while( strcmp( poprawna.c_str(), odwrotna.c_str() ) == false ) { std::cout << "Byłem tu" << std::endl; zadanie4 << odwrotna; break; };
w ten też nie: while( poprawna == odwrotna ) { std::cout << "Byłem tu" << std::endl; zadanie4 << odwrotna; break; };
|
|
ison |
» 2011-02-07 20:00:06 działa, warunek jest dobry ja za to jestem w 99% pewien, że błąd leży po Twojej stronie i coś przeoczyłeś albo kompilujesz nie ten plik ;) (masz niepotrzebny średnik na końcu while'a (po co while skoro można użyć if?)) |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 20:08:33 Tonący brzytwy się chwyta. Nie działało z if to próbowałem z while ^^ |
|
malan |
» 2011-02-07 23:33:28 Ja nie wiem, gdzie Ty masz problem.
#include <algorithm> #include <fstream> #include <iostream> #include <string>
bool isPalindrome( const std::string & str ) { std::string buffer = str; reverse( buffer.begin(), buffer.end() ); return buffer == str; }
int main() { std::ifstream in( "data.txt" ); std::ofstream out( "palindromes.txt" ); std::string str; if( !in.good() || !out.good() ) return false; while( in.good() ) { getline( in, str ); if( isPalindrome( str ) ) out << str << '\n'; } }
Input:
mama
tata
wtf
nie
tak
ble
iksDe
kajak
kura
oko
cham
szynka
Output:
kajak
oko |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-08 18:48:16 To co podałeś nie chce się nawet skompilować:
/usr/include/c++/4.4/bits/stl_algobase.h|138|instantiated from ‘void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _ForwardIterator2 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’| /usr/include/c++/4.4/bits/stl_algo.h|1431|instantiated from ‘void std::__reverse(_RandomAccessIterator, _RandomAccessIterator, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’| /usr/include/c++/4.4/bits/stl_algo.h|1457|instantiated from ‘void std::reverse(_BIter, _BIter) [with _BIter = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]’| /home/karol/C++/Untitled1.cpp|9|instantiated from here| /usr/include/c++/4.4/bits/stl_algobase.h|89|error: assignment of read-only location ‘__a.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = const char*, _Container = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]()’| /usr/include/c++/4.4/bits/stl_algobase.h|90|error: assignment of read-only location ‘__b.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = const char*, _Container = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]()’| ||=== Build finished: 2 errors, 0 warnings ===|
i dodatkowo w nowej karcie w kompilatorze otwarło mi się "stl_algobase.h" |
|
1 2 « 3 » 4 |