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; 
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License