Skocz do zawartości


Zdjęcie

[c++]Zliczacz liter


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 jarzabek89

jarzabek89

    Stały użytkownik

  • 284 postów

Napisano 25 11 2008 - 20:14

Mam sobie taki programik, który liczy poszczególne litery w tekście. Podajemy na wejściu ilość linii, następnie w tych liniach piszemy jakiś tekst, a na wyjściu dostajemy ile jakich liter się pojawiło. Jakby mi ktoś wytłumaczył na jakiej zasadzie to działa byłbym wdzięczny.

CODE-BOX
##include <iostream>
#include <string>

using namespace std;

int main (){

int ilosc, l_z = 52;

cout << "Wprowadz ilosc linijek: ";
cin >> ilosc;

string tekst;
int zn[l_z];
for(int i = 0; i < l_z; i++) zn[i] = 0;

for(int i = 0; i <= ilosc; i++){
getline(cin, tekst);
for(int j = 0; j < tekst.size(); j++)
if((int)tekst[j] >= 65 && (int)tekst[j] <= 90) zn[(int)tekst[j]-65]++;
else zn[(int)tekst[j]-71]++;
}

for(int i = 0; i < l_z; i++)
if(zn[i])
if(i < 26) cout << "\n" << (char)(i+65) << "\t" << zn[i];
else cout << "\n" << (char)(i+71) << "\t" << zn[i];

system("PAUSE");
return 0;
}
I jak będzie ten program wyglądał w c?

  • 0

#2 Lishoo

Lishoo

    Nowy

  • 1 postów

Napisano 05 12 2008 - 09:53

Nie do końca wiem co trzeba Ci wytłumaczyć :D sposób działania już napisałeś :D
Jeżeli potrzebujesz wiedzieć gdzie co zachodzi to tak na szybko :

cout << "Wprowadz ilosc linijek: ";
cin >> ilosc;
cout - czyli CONSOLE OUTPUT wyświetla podany ciąg w konsoli, cin - czyli CONSOLE INPUT pobiera znaki wpisane w konsoli

getline(cin, tekst);
Tutaj natomiast pobiera całą linię tekstu z cin czyli konsoli (zamiast tego mogła by to być jakaś zmienna) i zapisuje ją w zmiennej tekst

if((int)tekst[j] >= 65 && (int)tekst[j] <= 90) zn[(int)tekst[j]-65]++;
else zn[(int)tekst[j]-71]++;
Tutaj zachodzi sprawdzenie czy znaki które wpisałeś są znakami z klawiatury od A = 65(41h) do Z 90(5Ah) później odejmuje 65 albo 71 żeby łatwiej było sprawdzić czy jest to litera.

if(zn[i])
if(i < 26) cout << "\n" << (char)(i+65) << "\t" << zn[i];
else cout << "\n" << (char)(i+71) << "\t" << zn[i];
if(zn[i]) - sprawdza czy zmienna znajdująca się w tablicy zn o indeksie i jest większa od zera, jeżeli tak to porównuje jej wartość i dodaje odpowiednia odjętą liczbę podając na wyjściu cout gotowy znak.


A tak poza tym to kod jest już w C z tego co widzę :D

  • 0

#3 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 06 12 2008 - 10:46

generalnie program jest przekombinowany i nie zadziala dla malych liter..


a przede wszystkim nie jest napisany w C..



wystarczy ze bedziesz sprawdzal znak po znaku (operacje na plikach chyba znasz??)

a do sprawdzenie czy jest to litera czy nie polecam uzyc isalpha

  • 0

Zobacz więcej tematów z tagiem: język C++



Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych