#1 2011-04-30 02:55:35

OskarF

Użytkownik

Zarejestrowany: 2011-02-03
Posty: 38
Punktów :   

6.7

Napisać program, który dla pliku tekstowego o podanej nazwie wyznaczy „wykres”
częstości wystąpień małych liter alfabetu angielskiego. Słupki wykresu mają
zostać utworzone ze znaków gwiazdki ’*’, przy czym długość słupka dla najczęściej
występującej litery powinna wynosić 50. Dodatkowo dla każdego znaku należy dodatkowo
wyświetlić liczbę jego wystąpień.
Poniżej umieszczono przykładowy wykres wygenerowany dla tekstu „Adventures
of Huckleberry Finn” M. Twaina dostêpnego pod adresem:
http://www.gutenberg.org/dirs/7/76/76.txt
a ************************************* 36581
b ******* 7439
c ******** 8317
d ************************ 23754
e ************************************************** 49084
f ******** 7914
g ********** 10733
h ************************** 26338
i **************************** 28222
j * 1211
k ***** 5677
l ***************** 17446
m ********** 10337
n ********************************* 32818
o ************************************* 36700
p ****** 5971
q 189
r ******************** 20252
s ************************* 25193
t ******************************************* 42390
u ************** 13954
v ** 2944
w ************* 13347
x 453
y ********** 10312
z 185









#include <iostream>
#include <fstream>
#include <cctype>

using namespace std;

void wykres(string nazwaPliku);

int main()
{
    wykres("zad7tekst.txt");

    cin.get();
    return 0;
}

void wykres(string nazwaPliku)
{
    char z;
    int tab[26]={0};
    int numer, ilosc, max=0;
    ifstream plik;
    plik.open(nazwaPliku.c_str());

    if(plik.is_open())
    {
        while(plik>>z)
        {
            if(isalpha(z))
            {
                if(isupper(z)) z=tolower(z);
                numer=(int)(z-97);
                tab[numer]++;
            }

        }
        for(int i=0;i<26;i++)
        {
            if(tab[i]>max) max=tab[i];
        }
        for(int i=0;i<26;i++)
        {
            cout<<(char)(i+97)<<" ";
            ilosc=(tab[i]*50)/max;
            for(int j=0;j<ilosc;j++)
            {
                cout<<"*";
            }
        cout<<" "<<tab[i]<<endl;
        }
    }
    else cout<<"Blad otwarcia pliku!"<<endl;

    plik.close();
}

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
inwestowanie w bitcoin Personal Loan singapore