2 svar
220 visningar
shiela är nöjd med hjälpen
shiela 23 – Fd. Medlem
Postad: 14 aug 2020 10:12

Flytta ut getline-kommando till main() utanför funktion

Hej, 

 

Jag fick en anmärkning på att jag måste flytta ut den rad kod som ligger i funktionsdefinitionen för funktionen berakna_histogram_abs() till main ().

 

Hur gör jag detta? Jag behöver skicka med variabeln 'rad' till funktionen berakna_histogram_abs()

Tacksam för svar, se kod nedan!

 

//

// Programskal till obluppg4 - deluppgift A

//

//--------------------------------------------------------

// Hanterar fallet med 26 bokstäver A-Z

//Komplettera med två egna funktioner

//Huvudprogrammet innehåller endast anrop för att läsa in textrad från

//tangentbordet och anrop på de två funktionerna

 


//--------------------------------------------------------

 


#include <iostream>

#include <string>

#include <cctype>

#include <cmath>

using namespace std;

 

// Använd gärna denna globala konstant i programmet

// i stället för värdet 26

const int ANTAL_BOKSTAVER = 26;  //A-Z

// Globala variabler är ej tillåtna


//--------------------------------------------------------

// Funktionsdeklarationer:

// Använd exakt de funktionsnamn som finns nedan

 


// Funktionen berakna_histogram_abs

int berakna_histogram_abs();

 


// Funktionen skriv_histogram_abs

int skriv_histogram_abs();

 

//--------------------------------------------------------

// Huvudprogram:


int main()

{

//  // Deklarera variabler

 

  // Anropa funktionen berakna_histogram_abs som beräknar histogrammet

  // och antalet bokstäver.

    berakna_histogram_abs();

    

  // Anropa funktionen skriv_histogram_abs som skriver ut histogrammet

    skriv_histogram_abs();

    

    

  return 0;

}

 

 

 

//--------------------------------------------------------

// Funktionsdefinitioner:

 


int berakna_histogram_abs()

{

    string rad;

    cout<<"Mata in en rad text: " << endl;

    getline(cin,rad);

    

    cout << "\nResultat för bokstäverna A-Z " << endl;

    

    cout << "\nTotalt angivna tecken: " << rad.size() << endl;

    int f[ANTAL_BOKSTAVER];

 


    //Nollställ f:

    for (int i=0; i<ANTAL_BOKSTAVER; i++)

        f[i] = 0;

    for (int i=0; i< (int) rad.length(); i++)

        {

        int index;

        if (rad.at(i)>='a' && rad.at(i)<='z')

            {

                index = rad.at(i) - 'a'; f[index]++;

            }

            

        if (rad.at(i)>='A' && rad.at(i)<='Z')

            {

                index = rad.at(i) - 'A'; f[index]++;

            }

        }

       //cout << f[ANTAL_BOKSTAVER] << endl;

        return 0;

}

 


int skriv_histogram_abs()

{

    //Skriv ut frekvensen för de bokstäver som finns

    int f[ANTAL_BOKSTAVER];

    cout<<"\nBokstavsfördelning: \n";

    for (int i=0; i<ANTAL_BOKSTAVER; i++)

      {

        char b = char (i+'A');

        cout << b << ": " << "\t" << f[i] <<endl;

 

      }

    return 0;

}

shiela 23 – Fd. Medlem
Postad: 14 aug 2020 10:15
shiela skrev:

Hej, 

 

Jag fick en anmärkning på att jag måste flytta ut den rad kod som ligger i funktionsdefinitionen för funktionen berakna_histogram_abs() till main ().

 

Hur gör jag detta? Jag behöver skicka med variabeln 'rad' till funktionen berakna_histogram_abs()

Tacksam för svar, se kod nedan!

 

//

// Programskal till obluppg4 - deluppgift A

//

//--------------------------------------------------------

// Hanterar fallet med 26 bokstäver A-Z

//Komplettera med två egna funktioner

//Huvudprogrammet innehåller endast anrop för att läsa in textrad från

//tangentbordet och anrop på de två funktionerna

 


//--------------------------------------------------------

 


#include <iostream>

#include <string>

#include <cctype>

#include <cmath>

using namespace std;

 

// Använd gärna denna globala konstant i programmet

// i stället för värdet 26

const int ANTAL_BOKSTAVER = 26;  //A-Z

// Globala variabler är ej tillåtna


//--------------------------------------------------------

// Funktionsdeklarationer:

// Använd exakt de funktionsnamn som finns nedan

 


// Funktionen berakna_histogram_abs

int berakna_histogram_abs();

 


// Funktionen skriv_histogram_abs

int skriv_histogram_abs();

 

//--------------------------------------------------------

// Huvudprogram:


int main()

{

//  // Deklarera variabler

 

  // Anropa funktionen berakna_histogram_abs som beräknar histogrammet

  // och antalet bokstäver.

    berakna_histogram_abs();

    

  // Anropa funktionen skriv_histogram_abs som skriver ut histogrammet

    skriv_histogram_abs();

    

    

  return 0;

}

 

 

 

//--------------------------------------------------------

// Funktionsdefinitioner:

 


int berakna_histogram_abs()

{

    string rad;

    cout<<"Mata in en rad text: " << endl;

    getline(cin,rad);

    

    cout << "\nResultat för bokstäverna A-Z " << endl;

    

    cout << "\nTotalt angivna tecken: " << rad.size() << endl;

    int f[ANTAL_BOKSTAVER];

 


    //Nollställ f:

    for (int i=0; i<ANTAL_BOKSTAVER; i++)

        f[i] = 0;

    for (int i=0; i< (int) rad.length(); i++)

        {

        int index;

        if (rad.at(i)>='a' && rad.at(i)<='z')

            {

                index = rad.at(i) - 'a'; f[index]++;

            }

            

        if (rad.at(i)>='A' && rad.at(i)<='Z')

            {

                index = rad.at(i) - 'A'; f[index]++;

            }

        }

       //cout << f[ANTAL_BOKSTAVER] << endl;

        return 0;

}

 


int skriv_histogram_abs()

{

    //Skriv ut frekvensen för de bokstäver som finns

    int f[ANTAL_BOKSTAVER];

    cout<<"\nBokstavsfördelning: \n";

    for (int i=0; i<ANTAL_BOKSTAVER; i++)

      {

        char b = char (i+'A');

        cout << b << ": " << "\t" << f[i] <<endl;

 

      }

    return 0;

}

FÖTYDLIGANDE:

Jag fick en anmärkning på att jag måste flytta ut den rad kod som tar emot en rad text med kommandot getline från användaren. Raden som tar emot textraden 'rad' från användaren ligger just nu i funktionsdefinitionen för funktionen berakna_histogram_abs() och måste flyttas till main ().

shiela 23 – Fd. Medlem
Postad: 14 aug 2020 10:21

Jag löste det! :)

Svara Avbryt
Close