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

Matura z maja 2011 zad.4

Ostatnio zmodyfikowano 2013-10-23 12:33
Autor Wiadomość
Lanc
Temat założony przez niniejszego użytkownika
Matura z maja 2011 zad.4
» 2013-10-23 12:07:05
C/C++
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    fstream plik;
    plik.open( "hasla.txt", std::ios::in | std::ios::out );
    string hasla;
    if( plik.good() == true )
    {
        cout << "Uzyskano dostep do pliku!" << endl;
       
    } else cout << "Dostep do pliku zostal zabroniony!" << endl;
   
    int palindrom = 0;
    int dlugosc = 0;
    bool dobrze = 1;
    while( !plik.eof() )
    {
        dobrze = true;
        getline( plik, hasla );
        dlugosc = hasla.length();
       
        for( int i = 0; i < dlugosc / 2; i++ )
        {
            if( hasla[ i ] == hasla[ dlugosc - 1 ] )
                 dlugosc--;
            else
            {
                dobrze = false;
                break;
            }
           
        }
        if( dobrze == true )
             palindrom++;
       
    }
    cout << palindrom;
    return 0;
}
Otrzymuje wynik 15,a powinien wyjść 13.
Oto lista haseł:
adghgd
ajakok
akokos
amkoku
amodda
aokor
aokormn
apraw
asprz
awaspr
bgsbg
bgsbgfs
bgsbgfsj
bimbam
bazar
bkjbg
bkjbgsb
bnsun
balon
bnsunru
cikkaj
damkok
damod
damodd
dasdfg
ddamk
ddamko
dfbkj
dfbkjbg
dfghjh
dghgda
drty
dompmod
eraz
edamo
edamod
erynap
fbkjbgs
fbkjbgsb
fghjhg
gdasdf
ghdfbkjb
ghgdas
ghjhgf
goryl
grafarg
hdfbkjb
hdfbkjbg
hgfds
hilary
iek
isksad
iughd
jbgsbgf
jbgsbgfs
jhgfds
jkaokor
jkaokorm
jkjkaok
jkjkaoko
kadrty
kajak
keryn
kisksa
kjbgsbg
kjbgsbgf
kjkaoko
kjkaokor
kkadrt
kkajak
kkkadr
kkkke
kkompo
klwiek
kokoso
kokuuo
komok
kompiel
kompo
kompoc
kompok
kompoot
kompooto
kompost
kompot
komput
komu
komunikat
kormnbn
ksadgh
kurek
kuuok
matam
mkokuu
mnbns
mnbnsun
mnbnsunr
moddam
mpokk
mpokkk
mpokko
mpokraz
mpoopm
mpoot
mpootoo
mpootoot
mpouiuopm
mputer
napraw
nbnsu
nbnsunr
nruiu
nruiugh
nruiughd
nsunruiu
oddo
okisks
okkkad
okkomp
okormnb
okulary
omnibus
omo
ompioroip
ompoci
ompokk
ompooto
ompootoo
ootoj
ootojkj
ootojkjk
ootooto
ootootoj
ormnb
otojk
otojkjk
otoot
otootoj
pikole
pocikk
pokaz
pokkka
pokop
pokraja
pokrzywa
pole1
ponton
pooto
pootoot
prawas
putery
rawasp
rmnbnsu
rmnbnsun
ruiughd
ruiughdf
rzeda
rzedam
sokisk
sprze
sprzed
sunruiu
sunruiug
teryna
tojkj
tojkjka
tojkjkao
tooto
tootojk
ughdf
ughdfbk
uiughdf
uiughdfb
unrui
unruiug
unruiugh
uoklw
uoklwi
uteryn
wasprz
wasprze
wiek
ynapra
zedamo
plkjjklp
pokkop
przegra
poker
mops
polewa
polega
komputer
komputerek
wafelek
kolomp
plomp
plolp
jakakd
komput
kupiec
P-94380
Mitu
» 2013-10-23 12:33:58
Przy parzystej liczbie znaków dwa w samym środku nie są porównywane to zawyża wynik o jeden. Kolejny nieistniejący palindrom to pusta linia na początku pliku.

Wystarczy poprawić pętlę:

C/C++
for( int i = 0; i < dlugosc; i++ )
{
    if( hasla[ i ] != hasla[ dlugosc - 1 - i ] )
    {
        dobrze = false;
        break;
    }
   
}
P-94381
« 1 »
  Strona 1 z 1