Hej! Z tego co widziałem temat formularz był już przerabiany. Ja też próbowałem i jakoś mi nie idzie. Dla imienia i nazwiska jest ok tak myślę ale wykłada się wszystko przy datach np. dla daty 0019 lub miesiąc 17 przyjmuje że jest poprawna Jak to poprawić? Proszę o jakąś podpowiedź. Poniżej treść zadania i moje wypociny.
Napisz program, który sprawdza, czy dany formularz osobowy został prawidłowo wypełniony. Formularze, których poprawność należy sprawdzić, mają postać:
Imie: II; Nazwisko: NN; Data ur.: RRRR-MM-DD
gdzie II jest napisem złożonym z co najwyżej 10 znaków, NN jest napisem złożonym z co najwyżej 20 znaków, RRRR jest 4-znakowym napisem, a MM i DD są 2-znakowymi napisami.
Wejście
Na wejście programu podana zostanie pewna liczba zestawów danych (co najwyżej 10.000). Każdy z zestawów składa się z 3 rozdzielonych średnikiem napisów, o postaci opisanej powyżej (można przyjąć, że pola II, NN, RRRR, MM i DD składają się wyłącznie z czarnych znaków różnych od średnika). Poszczególne zestawy zostaną rozdzielone znakiem nowej linii.
Wyjście
Na wyjściu ma się pojawić, dla każdego wczytanego z wejścia formularza, liczba wyliczona zgodnie z poniższą regułą:
0, jeżeli formularz nie zawiera poprawnego imienia; poprawne imiona zaczynają się od wielkiej litery, po której następują małe litery;
1, jeżeli formularz zawiera poprawne imię, a nie zawiera poprawnego nazwiska; poprawne nazwiska zaczynają się od wielkiej litery, po której następują małe litery;
2, jeżeli formularz zawiera poprawne imię i nazwisko, a nie zawiera poprawnej daty; w poprawnej dacie pole RRRR jest liczbą całkowitą z zakresu 1900-2000, pole MM jest liczbą całkowitą z zakresu 1-12, a pole DD liczbą całkowitą z zakresu 1-31;
3, w pozostałych przypadkach.
Poszczególne liczby należy rozdzielić znakiem nowej linii.
Przykład
Wejście:
Imie: Roman; Nazwisko: Kowalski6; Data ur.: 1900-01-30
Imie: Andrzej; Nazwisko: Kowal; Data ur.: 1899-10-10
Imie: roman; Nazwisko: No-wak; Data ur.: 1099-11-12
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-01-01
Wyjście:
1
2
0
3
kod
#include <stdio.h>
#include<string.h>
int main ()
{
int x;
for(x=0; x<=10001; x++)
{
char imie[20], nazwisko[30], data[40];
int c = 0;
int i = scanf("Imie:%*1[ ]%*1[A-Z]%*9[a-z];%1[ ]", imie);
if (i == 1)
{
int n=scanf("Nazwisko:%*1[ ]%*1[A-Z]%*19[a-z];%1[ ]", nazwisko);
if (n==1)
{
int d = scanf("Data ur.:%*1[ ]%*4[1900-2000]%*1[-]%*2[00-12]%*1[-]%*2[0-31]%1[\n]", data);
if (d==1) puts("3");
else
{
puts("2");
while (c != EOF && c != '\n')
c = getchar();
}
}
else
{
puts("1");
while (c != EOF && c != '\n')
c = getchar();
}
}
else
{
puts("0");
while (c != EOF && c != '\n')
c = getchar();
}
}
return 0;
}