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

Porównanie dwóch zmiennych string.

Ostatnio zmodyfikowano 2011-02-09 01:43
Autor Wiadomość
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 :)
P-27983
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
P-27984
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
 
P-27985
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 ;/
C/C++
while( strcmp( poprawna.c_str(), odwrotna.c_str() ) == false )
{
    std::cout << "Byłem tu" << std::endl;
    zadanie4 << odwrotna;
    break;
};
 w ten też nie:
C/C++
while( poprawna == odwrotna )
{
    std::cout << "Byłem tu" << std::endl;
    zadanie4 << odwrotna;
    break;
};
P-27987
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?))
P-27990
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 ^^
P-27992
malan
» 2011-02-07 23:33:28
Ja nie wiem, gdzie Ty masz problem.
C/C++
#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
P-27997
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"
P-28038
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona