![]() |
||
Nagrywarki |
Pliki |
Dyski twarde |
Recenzje |
Księgarnia |
Biosy |
Artykuły |
Nagrywanie od A do Z |
Słownik |
FAQ
|
||
|
Off topic Forum poświęcone wszelkim innym tematom. |
![]() |
|
Opcje związane z dyskusją | Tryby wyświetlania |
![]() |
#1 |
Bywalec
Data rejestracji: 29.04.2004
Posty: 37
![]() |
c++ zliczanie liter
witma mam do napisania program ktory liczy wystapienie poszczegolnych liter we wczytanym ciagu i wyswietla ich statystyke. na koncy jeszcze ma wyswietlac litery ktore najczesciej wystepowaly i napisze ile razy wystapily. efekt ma byc taki
To jest to T 1 o 2 2 j 1 e 1 s 1 t 2 2 t 2 o 2 Najczesciej wystapily o,t po dwa razy Przyszedl mi do glowy tylko jeden pomysl jak to napisac mianowicie chcialem ten tekst zapisac do tablicy a potem porownywac i-ty element tablicy z reszta elementow tej tablicy ale nie wiem za bardzo jak to napisac. Prosze o jakies wskazowki albo o inne pomysly do rozwiazania tego poroblemu z gory dzieki |
![]() |
![]() |
#ads | |
CDRinfo.pl
Reklamowiec
Data rejestracji: 29.12.2008
Lokalizacja: Sieć globalna
Wiek: 31
Posty: 1227
|
|
![]() |
![]() |
#2 |
logged out
CDRinfo VIP
Data rejestracji: 12.07.2003
Lokalizacja: /home
Posty: 12,518
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Poszukaj rozwi***261;zania na forum 4programmers.net
__________________
XMPP: andrzej(at)czerniak.info.pl |
![]() |
![]() |
![]() |
#3 |
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
Zrob zliczanie wszystkiego od ! do ~ (wszystko, czyli litery, cyfry, znaki).
Zadeklaruj tablice output 94 elem. Zainicjalizuj na 0. int output[94] = {}; //to chyba powinno zrobic co trzeba i teraz taki pseudokod FOR EVERY x_char IN input_string DO ++output[x_char - 33]; I teraz wypisujesz FOR x_char FROM 0 TO 93 DO PRINTCHAR(x_char+33); PRINTINT(output[x_char]); PRINTLN; Tak bym to probowal robic. |
![]() |
![]() |
![]() |
#4 |
Bywalec
Data rejestracji: 29.04.2004
Posty: 37
![]() |
Ok napisalem cos takiego
#include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char *argv[]) { int tab[256]={0}; int m; char tabi[m]; char itab[m]; int iMin,iMax,iMinInd,iMaxInd; int i; int j=0; char z; while (z!=13){ z=getche(); itab[j]=z; j++; } cout<<endl; for(i=0; i<=j; i++) tab[itab[i]]++; for(i=0; i<=(j-2); i++){ cout<<itab[i]<<" "<<tab[itab[i]]<<endl;} iMin=iMax=tab[itab[0]]; for (i=0;i<=(j-1);i++){ if (tab[itab[i]]>=iMax){iMax=tab[itab[i]];iMaxInd=itab[i];}} cout<<endl; cout<<"najczesciej wystepowaly"<<endl; cout<<char(iMaxInd)<<" "<<iMax<<" razy"<<endl; cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } No i prawie dziala ale jest program z liczeniem max chodzi o to ze jak jest kilka liter ktore wystapily najwiecej razy np w zdaniu "ttttoooo" to on wyswietla tylko ta ostatnia |
![]() |
![]() |
![]() |
#5 | |
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
Cytat:
![]() Acha ... zeby ten Twoj problem rozwiazac to musisz po prostu wziac iMax przed ta seria cout i przeleciec tablice i wypisac kazdy znak o krotnosci iMax. Ostatnio zmieniany przez pawelblu : 05.12.2006 o godz. 21:24 |
|
![]() |
![]() |
![]() |
#6 |
Gość
Data rejestracji: 12.12.2002
Posty: 437
![]() |
Ja sie tylko spytam na kit zapisujesz do tablicy ilosc wystepowania danych znakow, to jest absolutnie nie potrzebne. Najprosciej jest zrobic tak:
1. Zadeklarowac jedna tablice. 2. Wprowadzic do niej dane - za pomoca petli for 3. Kod:
For j = 65 To 90 - ta petla zaczyna sprawdzanie znakow ascii od A do Z licznik = 0 - ilosc wystapien znaku A For i = 0 To 9 - tu sprawdzamy wszystkie pola tablicy w poszukiwaniu danej litery, gdy j =65, wtedy liczymy ilosc wystapien znaku A If tablica(i) = Chr(j) Then licznik = licznik + 1 End If Next If licznik > 0 Then Console.WriteLine(CStr(Chr(j)) + ": " + CStr(licznik)) - po zakonczeniu wykonywania petli 'For i' wypisujemy ilosc wystapien danego znaku gdy np j=65, wypisujemy ilosc wystapien litery A End If Next |
![]() |
![]() |
![]() |
#7 |
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
Po pierwsze:
To jest bez sensu bo przechodzisz caly tekst dla kazdej litery oddzielnie. Bardzo nieefektywne rozwiazanie. Po drugie: Poza tym zobacz jak ma wygladac wyjscie, a jak wyglada Twoje wyjscie (kolejnosc, powtarzanie). Prawidlowo: INPUT: To jest to OUTPUT: T 1 o 2 2 j 1 e 1 s 1 t 2 2 t 2 o 2 Nie dosc ze wyzsza zlonosc (tylko o stala, ale nie mala - on ma ok. 4n, Ty masz wielkosc_alfabetu*n). Poza tym nie zapewniasz tej funkcjonalnosci zeby podawac podawac wszystkie odpowiedzi o maks. wystapieniu i Twoje rozwiazanie nie jest latwo przerabialne do tej formy (w szczegolnosci i tak pewniu musialbys uzyc tablicy). |
![]() |
![]() |
![]() |
|
|