• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytanie z baz danych.

Object Storage Arubacloud
0 głosów
304 wizyt
pytanie zadane 15 maja 2017 w C i C++ przez Kapi2222 Obywatel (1,220 p.)
Mam takie polecenie, które nie wiem jak napisać:

Wyświetl nazwiska pracowników którzy posiadają literę „L" w pierwszej połowie swojego nazwiska.

Nie umiem tego wykombinować a to pewnie łatwe. Myślałem nad funkcją substr ale ona tylko obcina :P

2 odpowiedzi

+1 głos
odpowiedź 15 maja 2017 przez 10kw10 Pasjonat (22,880 p.)
if(name.find('L') < name.length()/2)
        std::cout<<name;

 

1
komentarz 15 maja 2017 przez Knayder Nałogowiec (37,640 p.)
edycja 15 maja 2017 przez Knayder

A co jeżeli nie znajdzie? Albo jeżeli literka występująca, to małe 'l'?
Jeżeli find nic nie znajdzie, to zwraca std::string::npos, czyli po prostu stała zmienna typu size_t równa -1. Wtedy ten if także będzie prawdziwy (O ile w ogóle uda się porównać size_t do inta)(Uda).

Mój błąd. Jedyne z tego co pisałem, to sprawdzanie także dla dużego i małego 'L'.

komentarz 15 maja 2017 przez 10kw10 Pasjonat (22,880 p.)

którzy posiadają literę „L"

Autor nic o tym nie napisal, ale nie trudno jest to rozbudowac, albo dodac kolejny if, albo zmienic wszystkie litery na duze, mozliwosci jest sporo.

 

Noooo teoretycznie w sumie tak, ale testowalem w CB i VS i dziala poprawnie.

 

 

komentarz 15 maja 2017 przez 10kw10 Pasjonat (22,880 p.)
ale wlasnie tak sie teraz zastanawiam to czemu nie masz racji ? Zwraca -1 i powinna byc prawda
1
komentarz 15 maja 2017 przez Knayder Nałogowiec (37,640 p.)

std::string::find(...)
Zwraca std::string::npos, czyli size_t = -1;
Jednak, size_t to po prostu:
 

typedef unsigned int size_t;

Czyli size_t = -1 to największa możliwa wartość unsigned inta.
Tak przynajmniej jest tutaj napisane:
http://www.cplusplus.com/reference/string/string/npos/
"This constant is defined with a value of -1, which because size_t is an unsigned integral type, it is the largest possible representable value for this type."
A ja dopiero po napisaniu posta ogarnąłem że size_t to uint :)

0 głosów
odpowiedź 15 maja 2017 przez Kodeman Gaduła (4,480 p.)

Nie wiem czy to najlepsze rozwiązanie, ale można by pobrać nazwisko, sprawdzić długość (np. funkcją length), podzielić na pół, a potem potraktować nazwisko jak tablicę

for (int i = 0; i < nazwisko.length()/2; ++i)
{
    if (nazwisko[i] == 'l')
    {
        std::cout << nazwisko << std::endl;
        break;
    }
          
}

 

Podobne pytania

–1 głos
1 odpowiedź 251 wizyt
pytanie zadane 22 sierpnia 2017 w SQL, bazy danych przez Radek Begej Użytkownik (580 p.)
0 głosów
2 odpowiedzi 347 wizyt
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 26 września 2022 w SQL, bazy danych przez adzik81 Nowicjusz (180 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...