Funkcja określająca płeć

0

Proszę o pomoc.
Zadeklaruj, zdefiniuj i wywołaj funkcję określającą płeć osoby o podanym imieniu
po co jest ta linika kodu char ostatni_znak = imie[ imie.size() - 1];

#include <iostream>
#include <string>
using namespace std;
bool czy_dziewczyna( string imie)
;//-----------------------------------------------
int main()
{ string txt;
 cout << "Jak masz na imie? "; 
cin >> txt; 
if( czy_dziewczyna( txt))
 {    cout << "Jestes dziewczyna!"; 
} 
else
 {  
  cout << "Jestes chlopakiem?";
 }
 char c;
 cin >> c;
}
//-----------------------------------------------
bool czy_dziewczyna( string imie)
{ char ostatni_znak = imie[ imie.size() - 1];
 if( ostatni_znak == 'a')  
  return true;// dziewczyna 
else    return false;// chlopak
}
3

Odsyłam do pierwszego lepszego tutoriala na temat indeksowania tablic oraz operatorze [] w C++. Bo to trochę wstyd nie wiedzieć takich rzeczy.

Ale żeby nie było, że odmawiam pomocy - pobiera ostatnią literę stringa.

4

Utarło się w polskim (choć to nie do końca prawda obecnie), że ostatnia litera definiuje płeć (Anna -> "a", Marek -> nie "a"). Więc pobierasz ostatnią literę
Na przykładzie:
Imię "Anna": size = 4, ale jako, że indeksujemy od zera to
imie[0] = "A"
imie[1] = "n"
imie[2] = "n"
imie[3] = "a"

1

Pomijając że będzie poprawnie określać nie w każdym przypadku, kod napisany bałaganiarsko.
Kiedy wystarczy tyle:

#include <iostream>
#include <string>
using namespace std;

bool isGirlName(const string &name) { return name.back()=='a'; } // nie jestem pewien czy trzeba z tego funkcję robić

int main()
{
    static const string answers[]={"chlopakiem?","dziewczyna!"};
    cout<<"Jak masz na imie? "; 
    string name;
    cin>>name;
    cout<<"Jestes "<<answers[isGirlName(name)];
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1