Gerald Napisano Listopad 2, 2008 Zgłoś Share Napisano Listopad 2, 2008 Mam taki problem: Napisać program by mógł być możliwy następujący dialog z użytkownikiem: - "Podaj długość twojego tekstu" - użytkownik wpisuje np. 30 - "Wpisz tekst" - użytkownik wpisuje tekst i naciska Enter -"Podaj literkę którą mam zliczyć" - użytkownik wpisuje np. k - program liczy literki k i wyrzuca na ekran komunikat: "w twoim tekście było 8 literek k" ja mam coś takiego: #include <cstdlib> #include <iostream> #include <string> #include<iomanip> using namespace std; const int nmax=30; class tekst { char t[nmax]; public: void czytaj_tekst(); int zlicz_znak(char); }; void tekst::czytaj_tekst() { cout << "Wpisz jakies slowo "; cin >> setw(sizeof(t))>> t; //Modyfikator setw() (set width = ustaw szerokość) } int tekst::zlicz_znak(char z) { int i = 0, licz = 0; while (t != ' ') { if (t == z) licz++; i++; } return licz; } int main(int argc, char *argv[]) { tekst moj_txt; moj_txt.czytaj_tekst(); cout << "W tym slowie bylo "; cout << moj_txt.zlicz_znak('a'); cout << " liter a \n"; system("PAUSE"); return EXIT_SUCCESS; } problem polega na tym, że mój program zlicza literki w następujący sposób: po wpisaniu słowa zlicza mi literki np:a. Ale jeśli napisze zdanie, to mi zliczy tylko w pierwszym słowie a nie w całym zdaniu. do tego ma tu jeszcze być że użytkownik ma podać jakąkolwiek literkę i program ma mu zliczyć. Proszę o pomoc, co gdzie mam poprawić. Z góry dziękuję za wskazówki Link do komentarza Udostępnij na innych stronach More sharing options...
Nvm Napisano Listopad 2, 2008 Zgłoś Share Napisano Listopad 2, 2008 Nie wczytywałem się w kod (zbyt C++'owy) ale pewnie chodzi o to, że "cin >>" czyta tylko "do spacji". Wczytuj za pomocą "cin.getline(tablica_znakowa, maksymalna_dlugosc_ciagu);". -Edit- A no a pętla jest też walnięta no bo masz "while (t != ' ')" czyli licz do spacji. Jak już wczytasz getlinem to zrób tak (oczywiście pozmieniaj nazwy zmiennych): for (int i = 0; tablica_znakow[i] != ''; i++) if (tablica_znakow[i] == szukany_znak) licznik++; return licznik; -Edit2- W tej pętli warunkiem wyjścia ma być: tablica_znakow != '\ 0'; (bez spacji). Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 2, 2008 Zgłoś Share Napisano Listopad 2, 2008 Najelpiej dla każdego znaku mieć licznik, to by była taka tabelka i zliczanie by ładnie wyglądało for (int i = 0; tablica_znakow != '\'; licznik[tablica_znakow[i++]]++); Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Gerald Napisano Listopad 21, 2008 Autor Zgłoś Share Napisano Listopad 21, 2008 Program już działa i wygląda tak: #include <string> #include <iostream> #include <conio.h> using namespace std; int ZliczZnaki(string Tekst, char z ) { int uIlosc = 0 ; for ( int i = 0 ; i <= Tekst.length() - 1 ; ++i) { if (Tekst == z) ++uIlosc; } return uIlosc; } int main(int argc, char *argv[]) { string Tekst; cout << "Podaj tekst, w ktorym maja byc zliczane znaki: " ; getline(cin,Tekst); char SzukanyZnak; cout << "Podaj znak, ktory bedzie liczony: " ; cin >> SzukanyZnak; cout << "Znak '" << SzukanyZnak << "' wystepuje w tekscie " << ZliczZnaki(Tekst, SzukanyZnak) << " raz(y)." << endl; system("PAUSE"); return EXIT_SUCCESS; } mam prośbę czy ktoś wie gdzie mogę znaleźć dobry poradnik i przewodnik po c++??? chodzi mi oto żebym zrozumiał co w danej linijce mojego programu zachodzi. komendy char, int, void, itp.... Chę wiedzieć co one oznaczają. A sam raczkuję więc kolega mi pomógł w napisaniu i poprawieniu programu. On wie jak to działa ale ja chcę sam dojść do tego jak to działa. Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Listopad 21, 2008 Zgłoś Share Napisano Listopad 21, 2008 Ja wiem. Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Listopad 21, 2008 Zgłoś Share Napisano Listopad 21, 2008 Powiedz koledze, żeby Ci dodał komentarz do każdej linijki. Link do komentarza Udostępnij na innych stronach More sharing options...
Gerald Napisano Listopad 21, 2008 Autor Zgłoś Share Napisano Listopad 21, 2008 Byłbym wdzięczny jakby ktoś na forum dopisał krótki komentarz do linijek. Jeśli to nie sprawi problemu, to z góry dziękuję Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Listopad 21, 2008 Zgłoś Share Napisano Listopad 21, 2008 Niestety, na tym forum nie zajmujemy się podstawami. Takie posty wnikają z nieumiejętność uczenia się, albo z lenistwa (zakładający temat nie chce się więcej nauczyć/przeczytać niż jest to wymagane, więc liczy na to, że ktoś zredaguje dla niego potrzebny tekst...). Jeśli to pierwsze to jest dla Ciebie nadzieja, jeśli to drugie to nie licz na pomoc. Wszystkie linijki zrozumiesz czytając niemalże dowolny podręcznik. Jak wolisz internetowe to poszukaj na google C++ Bez Cholesterolu. Link do komentarza Udostępnij na innych stronach More sharing options...
Nvm Napisano Listopad 21, 2008 Zgłoś Share Napisano Listopad 21, 2008 A sam raczkuję więc kolega mi pomógł w napisaniu i poprawieniu programu. On wie jak to działa ale ja chcę sam dojść do tego jak to działa. A jaka jest różnica, między tym, że my Ci powiemy, a między tym, że kolega Ci powie? Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Listopad 21, 2008 Zgłoś Share Napisano Listopad 21, 2008 Ręce opadają.. http://www.unit1.pl/218,idx Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.