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

Porównywanie tablicy char ze stringiem

Cloud VPS
0 głosów
1,515 wizyt
pytanie zadane 21 sierpnia 2016 w C i C++ przez newgu123 Początkujący (260 p.)
Witam. Wymyśliłem sobie takie zadanie,a mianowicie: Wczytuję słowo z polskimi znakami z klawiatury, a program wypisuje mi polskie znaki zawarte w tym słowie. Mam problem z sensowną implementacją tego prozaicznego problemu. Polskie znaki ulokowałem w tablicy char, a słowo wczytywane z klawiatury jest przechowywane w zmiennej typu string. Kodu nie wklejam, bo po prostu nie ma czym się pochwalić. bardzo proszę o pomoc. Jestem początkujący i proszę o wyrozumiałość.

6 odpowiedzi

+2 głosów
odpowiedź 21 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)

Dwie proste pętle.


// pseudo kod
string slowo = "jakies sobie slowo"
char znaki[] = {ą,ę,ć itd}
int wystapienia_znaku = 0

for ( i = 0; i < slowo.lenght(), i++){
     for ( j = 0; j < znaki.lenght(); j++){
       if (slowo[i] == znaki[j] ) wystapienia_znaku++
    }
}

 

komentarz 21 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
A ktoś tu mi kiedyś mówił, że wstawianie gotowych (w tym wypadku prawie gotowych) rozwiązań nie jest najlepszym pomysłem ^^
http://forum.pasja-informatyki.pl/167576/zadanie-ze-spoj-a-nakrywanie-sie-elementow-tablicy-w-klasie?show=167623#c167623
komentarz 21 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)

Racja i tu po mnie masz tak na 10% :) Lecz zobacz na kod. Ten kod jest pseudo kodem co już dyskwalifikuje go z gotowca.  Po drugie tu są myki które nie istnieją w C++, a chodzi by autor zrozumiał, na przykład znaki.lenght()

komentarz 21 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
Zawsze lepsze 10% niż nic xD
Jeszcze mi się uda ciebie przyłapać ^^
komentarz 21 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Oj uda się, nie bój żaby :)
2
komentarz 21 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)

No, rzeczywiście pseudokod laugh

lenght  length

komentarz 21 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
A nie? Jak się nie skompiluje to się przestawi literki :)
+1 głos
odpowiedź 21 sierpnia 2016 przez obl Maniak (51,300 p.)

Użyj metody find_first_of

	std::string text = "Zażółć gęślą jaźń";
	std::string pl = "ąćęłńóśźż";
	std::string temp;

	unsigned int pos = 0;

	do{
		pos = text.find_first_of(pl, pos ? pos + 1 : pos);
		if(pos != std::string::npos){
			temp += text[pos];
		}
	}while(pos != std::string::npos);

	std::cout<<temp;

 

0 głosów
odpowiedź 21 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Możesz użyć metody find, ale jeśli chcesz się pobawić w algorytmikę, to polecam sprawdzać każdy znak oddzielnie, porównując go z charem zwróconym przez operator [].

0 głosów
odpowiedź 21 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)

Jeżeli program ma tylko wypisać polskie znaki.. to możesz "ugryźć" problem z drugiej strony.. napisz program, który wypisze wszystkie znaki ze string'a, które nie należą do podstawowych liter w kodzie Ascii. Oczywiście takie rozwiązanie zakłada, że użytkownik będzie wprowadzał tylko litery, a będąc bardziej dokładnym.. tylko tekst reprezentujący słowo, zawierające tylko litery z polskiego alfabetu.

0 głosów
odpowiedź 21 sierpnia 2016 przez criss Mędrzec (172,570 p.)

std::string oferuje .find(), .length() i operator[] - skorzystaj z nich

0 głosów
odpowiedź 21 sierpnia 2016 przez newgu123 Początkujący (260 p.)
Dziękuje wszystkim za odpowiedzi, nie sądziłem, że to forum tak prężnie działa! Najbliżej temu co sam wymyśliłem był
ZakosiliMiNeta. Spróbuję dokończyć kod w ten sposób, a później pobawię się z metodą find(); Jeszcze raz wielkie dzięki za pomoc Panowie!

Podobne pytania

+1 głos
4 odpowiedzi 4,005 wizyt
0 głosów
1 odpowiedź 1,228 wizyt
pytanie zadane 20 stycznia 2016 w C i C++ przez Przypadek Początkujący (420 p.)
+1 głos
1 odpowiedź 416 wizyt
pytanie zadane 18 stycznia 2024 w C# przez Mati336 Użytkownik (560 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 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

Kursy INF.02 i INF.03
...