// Program, który rysuje histogram wystąpień dużych liter w danym pliku tekstowym.
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int main() {
string filename; // Nazwa pliku, z którego program ma czytać.
ifstream stream; // Definicja strumienia do pracy z plikiem.
char alphabet[25]; // Licznik wystąpień znaków.
// Zerowanie licznika.
for (int iterator = 0; iterator < 25; iterator++)
alphabet[iterator] = 0;
cout << "Podaj sciezke do pliku: ";
cin >> filename;
stream.open(filename.c_str(), ios::out);
if (!stream) {
cout << "Nie udalo sie otworzyc podanego pliku.";
exit(-1);
}
char actual; // Aktualny znak z pliku wejściowego.
try {
while (stream.get(actual)) {
switch (actual) {
case 'A':
alphabet[0]++;
break;
case 'B':
alphabet[1]++;
break;
case 'C':
alphabet[2]++;
break;
case 'D':
alphabet[3]++;
break;
case 'E':
alphabet[4]++;
break;
case 'F':
alphabet[5]++;
break;
case 'G':
alphabet[6]++;
break;
case 'H':
alphabet[7]++;
break;
case 'I':
alphabet[8]++;
break;
case 'J':
alphabet[9]++;
break;
case 'K':
alphabet[10]++;
break;
case 'L':
alphabet[11]++;
break;
case 'M':
alphabet[12]++;
break;
case 'N':
alphabet[13]++;
break;
case 'O':
alphabet[14]++;
break;
case 'P':
alphabet[15]++;
break;
case 'R':
alphabet[16]++;
break;
case 'S':
alphabet[17]++;
break;
case 'T':
alphabet[18]++;
break;
case 'U':
alphabet[19]++;
break;
case 'W':
alphabet[20]++;
break;
case 'V':
alphabet[21]++;
break;
case 'X':
alphabet[22]++;
break;
case 'Y':
alphabet[23]++;
break;
case 'Z':
alphabet[24]++;
break;
default:
break;
}
}
}
catch (ios::failure const & exception) {
cout << "Nie udalo sie przeczytac z pliku poniewaz: " << exception.what() << ".";
}
// Sprawdz jaka wartość jest najwyższa.
unsigned int highest;
highest = alphabet[0];
for (int iterator = 0; iterator < 25; iterator++) {
if (alphabet[iterator] > highest)
highest = alphabet[iterator];
}
// Rysowanie histogramu.
for (int iterator0 = highest; iterator0 >= 1; iterator0--) {
// Szukamy które litery mają aktualną wartość zmiennej "i".
for (int iterator1 = 0; iterator1 < 25; iterator1++) {
if (alphabet[iterator1] >= iterator0)
cout << "*";
else
cout << " ";
}
cout << endl;
}
cout << "ABCDEFGHIJKLMNOPRSTUWVXYZ" << endl;
}
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int main() {
string filename; // Nazwa pliku, z którego program ma czytać.
ifstream stream; // Definicja strumienia do pracy z plikiem.
char alphabet[25]; // Licznik wystąpień znaków.
// Zerowanie licznika.
for (int iterator = 0; iterator < 25; iterator++)
alphabet[iterator] = 0;
cout << "Podaj sciezke do pliku: ";
cin >> filename;
stream.open(filename.c_str(), ios::out);
if (!stream) {
cout << "Nie udalo sie otworzyc podanego pliku.";
exit(-1);
}
char actual; // Aktualny znak z pliku wejściowego.
try {
while (stream.get(actual)) {
switch (actual) {
case 'A':
alphabet[0]++;
break;
case 'B':
alphabet[1]++;
break;
case 'C':
alphabet[2]++;
break;
case 'D':
alphabet[3]++;
break;
case 'E':
alphabet[4]++;
break;
case 'F':
alphabet[5]++;
break;
case 'G':
alphabet[6]++;
break;
case 'H':
alphabet[7]++;
break;
case 'I':
alphabet[8]++;
break;
case 'J':
alphabet[9]++;
break;
case 'K':
alphabet[10]++;
break;
case 'L':
alphabet[11]++;
break;
case 'M':
alphabet[12]++;
break;
case 'N':
alphabet[13]++;
break;
case 'O':
alphabet[14]++;
break;
case 'P':
alphabet[15]++;
break;
case 'R':
alphabet[16]++;
break;
case 'S':
alphabet[17]++;
break;
case 'T':
alphabet[18]++;
break;
case 'U':
alphabet[19]++;
break;
case 'W':
alphabet[20]++;
break;
case 'V':
alphabet[21]++;
break;
case 'X':
alphabet[22]++;
break;
case 'Y':
alphabet[23]++;
break;
case 'Z':
alphabet[24]++;
break;
default:
break;
}
}
}
catch (ios::failure const & exception) {
cout << "Nie udalo sie przeczytac z pliku poniewaz: " << exception.what() << ".";
}
// Sprawdz jaka wartość jest najwyższa.
unsigned int highest;
highest = alphabet[0];
for (int iterator = 0; iterator < 25; iterator++) {
if (alphabet[iterator] > highest)
highest = alphabet[iterator];
}
// Rysowanie histogramu.
for (int iterator0 = highest; iterator0 >= 1; iterator0--) {
// Szukamy które litery mają aktualną wartość zmiennej "i".
for (int iterator1 = 0; iterator1 < 25; iterator1++) {
if (alphabet[iterator1] >= iterator0)
cout << "*";
else
cout << " ";
}
cout << endl;
}
cout << "ABCDEFGHIJKLMNOPRSTUWVXYZ" << endl;
}