Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Programskal till obluppg4 - deluppgift B
- //
- // Hanterar fallet med 26 bokstäver A-Z
- #include <string>
- #include <cctype>
- #include <iostream>
- #include <fstream>
- #include <cmath>
- using namespace std;
- // Globala konstanter:
- // Tips: Använd de globala konstanterna ANTAL_BOKSTAVER och ANTAL_SPRAK
- // istället för värdena 26 och 4 i programmet.
- const int ANTAL_BOKSTAVER = 26; //A-Z
- const int ANTAL_SPRAK = 4;
- // 2d-arrayen TOLK_HJALP innehåller bokstavsfrekvensen i %
- // för fyra språk. TOLK_HJALP[0][0] är frekvensen av
- // bokstaven a för engelska.TOLK_HJALP[0][25] är frekvensen av
- // bokstaven z för engelska.
- // Arrayen är en GLOBAL KONSTANT och skall alltså ej skickas
- // som parameter till den funktion som behöver den.
- const double TOLK_HJALP[ANTAL_SPRAK][ANTAL_BOKSTAVER]=
- {{8.27,1.48,2.94,4.03,11.78,2.22,1.72,6.77, //engelska
- 7.39,0.12,0.81,3.76,2.85,6.71,7.79,1.54,
- 0.05,5.95,6.69,9.07,2.66,1.13,2.14,0.19,
- 1.89,0.03},
- {7.97,1.40,3.55,3.79,16.89,1.02,1.00,0.75, //franska
- 7.08,0.38,0.04,5.51,2.82,8.11,5.19,2.78,
- 1.01,6.69,8.35,7.22,6.09,1.35,0.02,0.54,
- 0.30,0.15},
- {9.50,1.11,1.53,5.30,8.94,1.74,3.57,3.94, //svenska
- 3.98,0.89,3.26,4.93,3.41,8.46,5.01,1.77,
- 0.00,6.73,5.56,9.20,1.94,2.42,0.00,0.05,
- 0.45,0.00},
- {5.12,1.95,3.57,5.07,16.87,1.35,3.00,5.79, //tyska
- 8.63,0.19,1.14,3.68,3.12,10.64,1.74,0.42,
- 0.01,6.30,6.99,5.19,3.92,0.77,1.79,0.01,
- 0.69,1.24}};
- // Globala variabler är ej tillåtna
- //--------------------------------------------------------
- // Funktionsdeklarationer:
- // Deklarationer av dina egna funktioner
- // Använd exakt de funktionsnamn som finns nedan
- int berakna_histogram_abs(string input, int letters[]){
- int counter = 0;
- for(int i = 0; i < ANTAL_BOKSTAVER; i++){
- letters[i] = 0;
- }
- for(int i = 0; i<input.size(); i++){
- switch(input[i]){
- case 'a':
- case 'A':
- letters[0]++;
- counter++;
- break;
- case 'b':
- case 'B':
- letters[1]++;
- counter++;
- break;
- case 'c':
- case 'C':
- letters[2]++;
- counter++;
- break;
- case 'd':
- case 'D':
- letters[3]++;
- counter++;
- case 'e':
- case 'E':
- letters[4]++;
- counter++;
- break;
- case 'f':
- case 'F':
- letters[5]++;
- counter++;
- break;
- case 'g':
- case 'G':
- letters[6]++;
- counter++;
- break;
- case 'h':
- case 'H':
- letters[7]++;
- break;
- case 'i':
- case 'I':
- letters[8]++;
- counter++;
- break;
- case 'j':
- case 'J':
- letters[9]++;
- counter++;
- break;
- case 'k':
- case 'K':
- letters[10]++;
- counter++;
- break;
- case 'l':
- case 'L':
- letters[11]++;
- counter++;
- break;
- case 'm':
- case 'M':
- letters[12]++;
- counter++;
- break;
- case 'n':
- case 'N':
- letters[13]++;
- counter++;
- break;
- case 'o':
- case 'O':
- letters[14]++;
- counter++;
- break;
- case 'p':
- case 'P':
- letters[15]++;
- counter++;
- break;
- case 'q':
- case 'Q':
- letters[16]++;
- counter++;
- break;
- case 'r':
- case 'R':
- letters[17]++;
- counter++;
- break;
- case 's':
- case 'S':
- letters[18]++;
- counter++;
- break;
- case 't':
- case 'T':
- letters[19]++;
- counter++;
- break;
- case 'u':
- case 'U':
- letters[20]++;
- counter++;
- break;
- case 'v':
- case 'V':
- letters[21]++;
- counter++;
- break;
- case 'w':
- case 'W':
- letters[22]++;
- counter++;
- break;
- case 'x':
- case 'X':
- letters[23]++;
- counter++;
- break;
- case 'y':
- case 'Y':
- letters[24]++;
- counter++;
- break;
- case 'z':
- case 'Z':
- letters[25]++;
- counter++;
- break;
- }
- }
- return counter;
- }
- void abs_till_rel(int antal_bokstaver, double lettersREL[], int lettersABS[]){
- for(int i = 0; i < ANTAL_BOKSTAVER; i++){
- lettersREL[i] = lettersABS[i]/double(antal_bokstaver);
- }
- }
- void plotta_histogram(double lettersREL[]){
- char chars[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',};
- int a = 0;
- for(int i = 0; i<ANTAL_BOKSTAVER; i++){
- cout << chars[i] << ": ";
- a = lettersREL[i] * 200;
- for(int i = 0; i < a; i++){
- cout << "*";
- }
- cout << endl;
- }
- }
- // Funktionen tolka
- // Funktionen namn_pa_fil
- // Funktionen inlasning
- //--------------------------------------------------------
- // Huvudprogram:
- int main()
- {
- int letters[ANTAL_BOKSTAVER];
- double lettersREL[ANTAL_BOKSTAVER];
- string input;
- cout << "Ge input: " << endl;
- getline(cin, input);
- int antal_bokstaver = berakna_histogram_abs(input, letters);
- abs_till_rel(antal_bokstaver, lettersREL, letters);
- plotta_histogram(lettersREL);
- return 0;
- }
- //--------------------------------------------------------
- // Funktionsdefinitioner:
- // -------------------------------------------------------
- // Rapport om uppgiften
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement