chuckie Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 Mam problem tzn nie wiem jak sie za to zabrać, a na sieci tego jest bardzo mało. Chcę napisać program który po wpisaniu jakiegoś zdania/wyrazu wyszukiwał mi samogłoski: a, c, i, u, o, y. następnie wyświetlił ile ich znalazł . Możliwe jest wykorzystanie string.h. Jak ktoś wie to niech pomoże: napisać program czy jakieś podpowiedzi Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ayem Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 (edytowane) int i =0;int licz = 0;while (s[i] != '/0'){ if ((s[i] == 'a') || (s[i] == 'c') || (s[i] == 'i') || (s[i] == 'u') || (s[i] == 'o') || (s[i] == 'y')) licz++; i++;} ufam ze zadasz sobie trud wprowadzenia zdania samodzielnie :|, aha - nie chrzan ze o tym nie ma na necie Edytowane 19 Lutego 2005 przez ayem Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
chuckie Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 Bo nie ma. mmmmm są łańcuchy ale mojego problemu nie znalazłem. Dobra program napisałem sam i działa: #include <iostream>#include <stdlib.h>#include <string.h>using namespace std;int main(){ int la=0, lc=0, li=0, lu=0, lo=0, ly=0; int i; char *znak; cin >> znak; for(i=0; i<strlen(znak); i++) { switch(znak[i]) { case 'a': la++; break; case 'c': lc++; break; case 'i': li++; break; case 'u': lu++; break; case 'o': lo++; break; case 'y': ly++; break; } } cout << "Ilosc liter a:\t" << la << endl; cout << "Ilosc liter c:\t" << lc << endl; cout << "Ilosc liter i:\t" << li << endl; cout << "Ilosc liter u:\t" << lu << endl; cout << "Ilosc liter o:\t" << lo << endl; cout << "Ilosc liter y:\t" << ly << endl; return 0;} i wszystko byłoby ok gdyby nie to że jak napisze jeden wyraz to pokazuje mi prawidłową liczbe literek ale na końcu pokazuje sie napis: Segmentation fault. Natomiast gdy napisze 2 wyrazy to podlicza mi z tego pierwszego a z drugiego już nie... ale za to ten komunikat: Segmentation fault znika..... Jakaś pomoc? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 (edytowane) #include <stdio.h>int main( void ) { char litera; int licznik=0; while(litera!='\n') { litera = getchar(); if(litera == 'a' || litera == 'e' || litera == 'i' || litera == 'o' || litera == 'u') { printf("%c", litera); licznik++; } } printf("\n liczba samoglosek %d", licznik); getchar();} napisalem w C, bo C++ nie umiem, ale przeciez te jezyki sa blizniaczo podobne, wiec powinienes dac rade :) Edytowane 19 Lutego 2005 przez MeHow Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ayem Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 chuckie - trza bylo napisac ze chcesz sumowac liczbe kazdej z liter osobno :D Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
chuckie Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 (edytowane) #include <iostream>#include <stdlib.h>#include <string.h>using namespace std;int main(){int la=0, lc=0, li=0, lu=0, lo=0, ly=0;int i=0;char znak[i];cin >> znak;while(znak[i]!='\0'){ switch(znak[i]) { case 'a': la++; break; case 'c': lc++; break; case 'i': li++; break; case 'u': lu++; break; case 'o': lo++; break; case 'y': ly++; break; } i++;}cout << "Ilosc liter a:\t" << la << endl;cout << "Ilosc liter c:\t" << lc << endl;cout << "Ilosc liter i:\t" << li << endl;cout << "Ilosc liter u:\t" << lu << endl;cout << "Ilosc liter o:\t" << lo << endl;cout << "Ilosc liter y:\t" << ly << endl;system("PAUSE");return 0;} Program jako taki jest, mój problem tkwi w tym że nie podlicza mi liter po spacji tzn zrobiłem sobie inny program żeby sprawdzić jak literki mi podświetla tzn żeby wyświetlił w pętli while wszystkie literki, co sie okazuje spacje while traktuje jako \0 :? . Drugim problemem jest to że nie moge dawać dłuższych wyrazów jak 10 liter by mi podliczyło paprawnie samogłoski lub jeśli użyje 16 liter to mi wogóle nie podlicza, Jeśli użyje więcej jak 16 liter wyskakuje błąd :-| Prosze o jakieś pomoce w związku z tym... Edytowane 19 Lutego 2005 przez chuckie Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
chuckie Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 (edytowane) Dobra sam sobie pomogłem: O to działający program: #include <iostream>#include <stdlib.h>using namespace std;int main(){int la=0, lc=0, li=0, lu=0, lo=0, ly=0;int i=0;char znak[254];cin.getline(znak,254);while(znak[i]!='\0'){ switch(znak[i]) { case 'a': la++; break; case 'c': lc++; break; case 'i': li++; break; case 'u': lu++; break; case 'o': lo++; break; case 'y': ly++; break; } i++;}cout << "Ilosc liter a:\t" << la << endl;cout << "Ilosc liter c:\t" << lc << endl;cout << "Ilosc liter i:\t" << li << endl;cout << "Ilosc liter u:\t" << lu << endl;cout << "Ilosc liter o:\t" << lo << endl;cout << "Ilosc liter y:\t" << ly << endl;system("PAUSE");return 0;} Edytowane 19 Lutego 2005 przez chuckie Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
The_Structor Opublikowano 19 Lutego 2005 Zgłoś Opublikowano 19 Lutego 2005 tyle ze 'c' to nie samogloska :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 20 Lutego 2005 Zgłoś Opublikowano 20 Lutego 2005 blah... a moj program to nie dzialal? :> Jeszcze masz brak obslugi duzych litera. Chyba jest taka funkcja tolower() albo jakos tak. Nie pamietam dokladnie :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
contentl5 Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 czemu służy using namespace std; w twoim programie? bo mi się wcale nie chce kompilować ten kod. Jakiego kompilatora używasz? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
VEDAMGO Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 Standardowe strumienie wej/wyj. inny zapis : std:: cout<<"qqq"; std::cin>>x; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 To jest takie odwołanie sie do "standardowej przestrzeni nazw" rozwiązanie przyjęte w 1998 roku po końcowej standaryzacji C++. Poprostu jeśli masz kompilator zgodny z Ansi C++ to możesz sobie napisać using namespace std ; żeby potem nie pisać i nie wywoływać sobie cały czas metod std , np std::cout .... std::cin.... i tak dalej. Jeśli kompialtor tego nie rozumie to znaczy że nie jest zgodny ze standardem. Napisz jaki masz kompilator nazwa i wersja. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
chuckie Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 czemu służy using namespace std; w twoim programie? bo mi się wcale nie chce kompilować ten kod. Jakiego kompilatora używasz? 1293045[/snapback] kompilator to gcc 3.3.5 - linux gentoo kernel 2.6.10 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
contentl5 Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 Mój kompilator to Turbo C++ For Windows v.3.1 i tego mi właśnie nie chce skompilować jeśli to jakiś problem to może powiedzcie co zamiast tego można zrobić a jeśli to też będzie problem to nic nie piszcie może w jakimś topicu uda mi się znaleźć o tym. Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
chuckie Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 Sądząc po sprzęcie to sugeruje ci żebyś zainstalował se linuksa jakiegoś z pakietów jak debian tzn weś ściągnij se płytke z podstawowym systemem, a reszte z netu dociągniesz. Takim sposobem będziesz na czasie z nimi i będziesz miał pełną kontrole nad ilością miejsca na dysku. A jako środowisko proponuje fluxboxa B) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
contentl5 Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 Mam Mandrake 10.0 może to nie najlepszy wybór ale narazie nie chce mi się przerabiać na innego Linuxa np. Slackware może potem a tymczasem może zaproponuj mi (jeśli możesz) jakiś kompilator C++ pod windows. Pozdrawiam i dzięki. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
chuckie Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 myśle że dobrym był by kompilator ze środowiskiem Dev-C++ :huh: ? tylko nie wiem czy na win 3.1 będzie chodził, Ewentualnie dobrym był by djgpp razem z rhide. Sądze że to jedne z najlepszych propozycji na windowsa, choć ja sie na windowsach nie znam :lol: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
contentl5 Opublikowano 23 Lutego 2005 Zgłoś Opublikowano 23 Lutego 2005 ja mam windowsa XP a nie 3.1 :D. 3.1 to jest wersja kompilatora który się nazywa TCW ( czyli Turbo C++ For Windows" v.3.1) ale dzięki za podpowiedz. Posprawdzam sobie te kompilatory DEV-C++ i ten drugi popatrze i zobacze moze coś z tego będzie. Dzięki bardzo i pozdro dla ciebie bye. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
n00b007 Opublikowano 28 Lutego 2005 Zgłoś Opublikowano 28 Lutego 2005 Odnośnie łańcuchów to mam pytanie czy jest jakaś funkcja porównująca łańcuchy znaków ( chodzi mi liste nazwisk, która jest przeglądana i wrzuca się w odpowiednie miejsce nowe nazwisko by zachować alfabetyczną kolejność ), jeśli jest to prosiłbym o podanie funkcji i bibl. I w jaki sposób mamy dostęp do i-tego znaku łańcucha? Jeśli ktoś ma chęci i czas odpowiedzieć - byłbym b.wdzięczny. n00b@programming Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kalabanga Opublikowano 28 Lutego 2005 Zgłoś Opublikowano 28 Lutego 2005 (edytowane) string.h to jest standardowa biblioteka do pracy ze stringami. Macie tam f-cje do porównywania, szukania znaku w ciągu znaków, szukanie stringu w stringu źródłowym ( zwraca wskaźnik ) itd itd, więc po co pisać to co już jest napisane ( chyba że dla sportu ;) ). Czytajcie HELPY w kompilatorach których używacie !!! bo to podstawa. Jak tworzycie tablice znaków to musicie podać rozmiar jej, chyba że alokujecie pamięć dynamicznie. I pamiętajcie że nazwa tablicy jest adresem pierwszego elementu ( możecie się posługiwać nią zarówno jak wskaźnikiem czy tablicą. Czyli np. pobrać wartość możemy zarówno *(tab+i) jak i tab ) , więc musicie uważać żeby nie wyjechać poza zakres tablicy!. A nie pytacie się później czemu wywala program błąd albo jakiegoś tam znaku nie znajduje. Na koniec jeszcze raz HELPY Edytowane 28 Lutego 2005 przez kalabanga Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...