Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program rozpoznajacy płeć

studiowanie 31 Sty 2012 16:20 1825 7
  • #1 31 Sty 2012 16:20
    studiowanie
    Poziom 2  

    Witam

    Mam napisać pewien program w języku Delphi obiektowym temat tego programu brzmi:

    "Napisac program który wczyta dowolne imię osoby i określi czy jest to kobieta czy mężczyzna. Przewidzi możliwe wyjątki w postaci imion np. Kuba, Mirian, Barneba. Program wzbogacić w obiekty graficzne np przyciski itp"

    Udało mi się napisać program, lecz nie wiem jak mam wprowadzić wyjątki w postaci podanych wyżej imion i wzbogacić go graficznie. O to jego kod źródłowy:


    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Czy ktoś dla kogo napisanie takiego programu zajmie doslownie chwile mógłby mi udzielić jakiejś pomocy?

    0 7
  • #2 31 Sty 2012 18:06
    Krzysztof Gustaw
    Poziom 23  

    W Defphi służą do tego funkcje:

    porównanie dwóch napisów, 0 gdy jednakowe
    AnsiCompareStr(const text1, text2:string) : integer;

    jak wyżej ale ignoruje wielkość liter
    AnsiCompareText(const text1, text2 : string) : integer;

    Są również starsze wersje tych funkcji które nie rozpoznają znaków z akcentami:

    CompareStr i CompareText

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Niestety, nie wiem jak wyposażyć w przyciski...

    0
  • #3 01 Lut 2012 15:53
    studiowanie
    Poziom 2  

    ktos mógłby coś więcej na ten temat powiedzieć?

    0
  • Pomocny post
    #4 01 Lut 2012 16:13
    arnoldziq
    Moderator Programowanie

    Masz i weź się za naukę!

    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    0
  • #5 03 Lut 2012 21:01
    studiowanie
    Poziom 2  

    bardzo dziekuje arnoldziq, bardzo prosze o taki program w C jeżeli można...

    0
  • Pomocny post
    #6 03 Lut 2012 22:14
    Krzysztof Gustaw
    Poziom 23  

    Witam!
    To jedno z wielu rozwiązań tego problemu. Przyjrzyj się dobrze i spróbuj zrobić inaczej.
    Jest wiele do poprawienia i usprawnienia :)

    Kod: c
    Zaloguj się, aby zobaczyć kod


    P.S.
    Funkcje porównujące ciągi znaków _stricmp mogą brzmieć stricmp w Twoim kompilatorze

    0
  • #7 04 Lut 2012 13:25
    studiowanie
    Poziom 2  

    dzieki wielkie Krzysztof Gustaw! bardzo mi sie to przydało. Napisałem trochę prostszy program w C lecz mam problem z wyjątkami mianowicie np. po wpisaniu imienia Kate wyskakuje że jest to mężczyzna a powinno wyskoczyć że kobieta, problem powtarza sie przy imieniu Nicole etc...

    kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #8 05 Lut 2012 17:28
    Krzysztof Gustaw
    Poziom 23  

    Witam!

    Błędy są w instrukcjach if .
    1) Zamiast:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    powinno być:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jeśli chcesz testować ostatnią literę tekstu, to ostatnią pozycją znakową ciągu jest:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    ponieważ kolejne znaki numerowane są od 0 a nie od 1.

    2) zamiast "a" powinno być 'a', czyli nie ciąg a (umieszczony w cudzysłowach) a pojedynczy znak a (umieszczony w apostrofach)
    Ciągi znaków (tablice, wektory, jak zwał tak zwał...) zbudowane są w taki sposób, że za ostatnia literą umieszczony jest znak 0 oznaczający koniec ciągu znaków. Funkcje działające na ciągach znaków wykrywaja właśnie poprzez stwierdzenie tego zera koniec ciągu.

    3) W języku "C" ciagi znaków nie porównuje się operatorami przyrównania i relacji tylko funkcją strcmp(const char *s1, const char *s2) i jej pochodnymi. Jesli ciągi są takie same, to funkcja zwraca wartość zero.

    Zatem sprawdzenie identyczności tekstów odbywa się np tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    a nie
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0