Visa programkörningen /************************************************************************** INLUPP: uppg3A_khb.cpp Exercise: Obligatorisk uppgift 3: Strangar och arrayer Program: STRANG HISTOGRAM - Deluppgift A Author: Krista Hurty Berglund Date: 011122 ABSTRACT: Programmet laser en kort textrad och registrerar vilka bokstaver den bestar av. Programmet beraknar därefter forekomsten av varje bokstav som ingar i strangen och upprattar ett bokstavshistogram. Hanterar fallet med 26 bokstaver A-Z (exklusive de svenska bokstaverna). **************************************************************************/ /************************************************************************** | THE | BEGINNING | :: **************************************************************************/ #include<iostream.h> /************************************************************************** | G L O B A L A | K O N S T A N T E R | :: **************************************************************************/ const int ANTAL_BOKSTAVER = 26; const int ANTAL_SPRAK = 4; /************************************************************************** | F U N K T I O N S D E K L A R T I O N E R N A | :: **************************************************************************/ void berakna_histogram_abs(char textrad[], int histo[]); void skriv_histogram_abs(int histo[]); /************************************************************************** | H U V U D P R O G R A M | :: **************************************************************************/ int main() { char textrad[50]; int histo[ANTAL_BOKSTAVER]; // Las in en rad med text fran tangentbordet: cout << "\nSkriv en kort mening eller foljd av bokstaver:\n\n"; cin.getline(textrad, sizeof(textrad)); // cout << textrad << endl; // Anropa funktionen som beraknar histogrammet: berakna_histogram_abs(textrad, histo); // Anropa funktionen som skriver ut histogrammet: skriv_histogram_abs(histo); return 0; }// SLUT PA MAIN ********************************************************** /************************************************************************** | F U N K T I O N S D E F I N I T I O N E R N A | :: **************************************************************************/ /************************************************************************** | B E R A K N I N G | A V | H I S T O G R A M | :: **************************************************************************/ void berakna_histogram_abs(char textrad[], int histo[]) { char versal, gemen; int text, forekomst=0, bokstaver=0; // undviker jamforelse av signed och unsigned varden text = strlen(textrad); //nollstaller histogram for (int i=0; i<ANTAL_BOKSTAVER; i++) {histo[i]=0;} //loper gm alfabetet (versala/gemena) & forekomstraknaren hanger med... for (versal='A', gemen='a'; versal<='Z', gemen<='z'; versal++, gemen++, forekomst++) { //loper gm strangen & raknar/lagrar bokstavsforekomst och -antal. for (int i=0; i<=text; i++) { if ((textrad[i] == versal) || (textrad[i] == gemen)) { histo[forekomst]++; bokstaver++; } } } cout<<"Det totala antalet bokstaver ar [" << bokstaver <<"]\n" << endl; } /************************************************************************** | U T S K R I F T | A V | H I S T O G R A M | :: **************************************************************************/ void skriv_histogram_abs(int histo[]) { cout<<"*** H I S T O G R A M ***" << endl << endl; cout<<"Bokstav\t\tForekomst\n" << endl; for (int i=0; i<ANTAL_BOKSTAVER; i++) cout<< char(i+65) << ":\t\t" << histo[i] << endl; } /************************************************************************** :: | THE END | DELUPPGIFT A | **************************************************************************/ Visa programkörningen