Algorytm 2 Znaki
Kumpel mi powiedział, że takowe zadanko było, więc cóż, wziąłem się do roboty :P Chodzi o to, że program ma policzyć ilość znaków występujących w pliku, a następnie wyświetlić ile ich było w sumie, oraz ile razy który znak z osobna wystąpił zaczynając od "A" a kończąc na
#include <iostream> #include <fstream> using namespace std; int main() { char ch; int licz[256], total; for (int a=0; a<=255; a++) licz[a]=0; ifstream plik("tekst.txt"); do { if (plik.get(ch)) { licz[ch]++; total++; } else break; }while (1); total=0; cout<<"W pliku znajduje sie " << total << " znakow\n"; for (ch=65;; ch++) //zaczynamy od "A" { if (licz[ch]>0) cout << ch << " wystapilo " << licz[ch] << " razy\n"; if (ch==90) ch=97; //przechodzimy na literę "a" if (ch==225) ch=90; // po literach i znakach wypisujemy resztę znaków wcześniej ominiętych if (ch==96) break; } getchar(); return 0; }
wersja wyżej to wersja poprawiona i (?) ulepszona, nie daje głowy że działa, ale powinna, poniżej zamieszczam nieco wolniejszy kod, ale on był testowany i jest to pierwotna wersja :P
#include <iostream> #include <fstream> using namespace std; int main() { char ch; int licz[256], total; for (int a=0; a<=255; a++) licz[a]=0; ifstream plik("tekst.txt"); do { if (plik.get(ch)) licz[ch]++; else break; }while (1); total=0; for (int a=0; a<=255; a++) total+=licz[a]; cout<<"W pliku znajduje sie " << total << " znakow\n"; for (ch=97; ch<=255; ch++) if (licz[ch]>0) cout << ch << " wystapilo " << licz[ch] << " razy\n"; for (ch=0; ch<=96; ch++) if (licz[ch]>0) cout << ch << " wystapilo " << licz[ch] << " razy\n"; getchar(); return 0; }
page revision: 4, last edited: 05 Oct 2007 13:07