21 / 27
Feb 2012

Witam!
Mam problem z zadaniem Formularz;
Dostaje komunikat o błędnej odpowiedzi, a wygląda dobrze i testy przechodzi pomyślnie:

[bbone=CPP,690]

include

// wycięte

int main()
{
using namespace std;

string lancuch;


while(!cin.eof())
{
    getline( cin, lancuch );
    cout<<czyDaneDobre(lancuch)<<endl;
}


return( 0 );

}
[/bbone]

Opłaca się czytać forum wink
Źle wczytywałem dane, zamiast while(!cin.eof())
powinno być while(! getline( cin, lancuch ).eof() )
Czad, dwa tygodnie męczenia się i nagle EUREKA!

Dlatego po 10 latach wróciłem do zabawy w programowanie smile

6 months later

Jeżeli są takie lub podobne testy, to masz problem z wczytywaniem ustawionym "nasztywno" za każdym razem 7 stringów. Jeżeli w linii będzie ich mniej, spowoduje to "doczytanie" brakującego stringu z następnej linii i problemy przy następnym wczytywaniu. Analogicznie jeżeli będzie ich więcej [a oddzielny " ; " to jeden string] to pierwsze wczytanie zostawi nadmiarowe stringii i następne wczytywanie będzie kontynuowało wczytywanie w tej samej linii a nie od początku następnej i znowu zafałszowany wynik.

4 months later

Moje testy:

Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-01-01
Imie: alicja; Nazwisko: Nowak; Data ur.: 1990-01-01
Imie: AAlicja; Nazwisko: Nowak; Data ur.: 1990-01-01
Imie: Alicjaaaaaa; Nazwisko: Nowak; Data ur.: 1990-01-01
Imie: A; Nazwisko: Nowak; Data ur.: 1990-01-01
Imie: Alicja; Nazwisko: nowak; Data ur.: 1990-01-01
Imie: Alicja; Nazwisko: NNowak; Data ur.: 1990-01-01
Imie: Alicja; Nazwisko: Nowakaaaaaaaaaaaaaaaa; Data ur.: 1990-01-01
Imie: Alicja; Nazwisko: N; Data ur.: 1990-01-01
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1899-01-01
Imie: Alicja; Nazwisko: Nowak; Data ur.: 2001-01-01
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-00-01
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-01-00
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1590-01-01
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-13-01
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-01-32

Mój out:

3
0
0
0
0
1
1
1
1
2
2
2
2
2
2
2

A mój program nadal nie działa. Będę się męczył sam, a jak nie pomoże, to zwrócę się tutaj o pomoc. Jeżeli outy są złe, poprawcie mnie.

Co ci daje dla testu:

Imie: Alicja; Nazwisko: Nowak; Data ur.: raba-rb-ar

?

EDIT: Załączam moje outy do twoich testów:

3
0
0
0
3
1
1
1
3
2
2
3
3
2
2
2

Wydaje mi się, że trochę się różnią...

4 months later

Czy moze ktos podac jakies zestawy, ktore pomoglyby znalezc blad?

[bbone=cpp,1381]#include

include

using namespace std;

string imie, nazwisko, data, wycinek;
int rok, miesiac, dzien, blad, il, nl;
char ch;

int main () {

while(true) {
blad=3;
cin >> wycinek; getline(cin, imie, 'N'); imie=imie.substr(1,imie.length()-3);
cin >> wycinek; getline(cin, nazwisko, 'D'); nazwisko=nazwisko.substr(1,nazwisko.length()-3);
cin >> wycinek>>wycinek; getline(cin, data, '\n'); data=data.substr(1,data.length()-1);

il=(int)imie[0];
nl=(int)nazwisko[0];

if (imie.length()>10 || (il>90 || il<65)) blad=0; else
for ( int k=1 ; k if ( imie[k]>122 || imie[k]<97 || imie[k]==32 ) blad=0; else

if (blad==3)
if (nazwisko.length()>20 || (nl>90 || nl<65)) blad=1; else
for ( int k=1 ; k if ( nazwisko[k]>122 || nazwisko[k]<97 ) blad=1; else

if (blad==3)
if (data.length()!=10) blad=2; else {

for ( int k=0 ; k<data.length() ; k++ ) {
    il=(int)data[k];
    if (il>57 || il<48) if (il!=45) blad=2;
}

if (blad!=2) {
stringstream ss;
ss << data.substr(0,4); ss >> rok; ss.clear();
ss << data.substr(5,2); ss >> miesiac; ss.clear();
ss << data.substr(8,2); ss >> dzien;

if(rok<1900 || rok >2000 || miesiac<1 || miesiac>12 || dzien<1 || dzien>31) blad=2;}
}

cout << blad << endl;
if (cin.eof()) break;
}

}[/bbone]

1 year later

Cześć, męczę się już trochę nad tym zadaniem, moje testy zdaje - jakieś pomysły dlaczego na spoju błędna odpowiedź?

[bbone=CPP,2113]
AC
[/bbone]

@edit przepraszam za nazwy zmiennych blush