Just nu i M3-nätverket
Jump to content

Hjälp programmering!


sandrab90
 Share

Go to solution Solved by Cecilia,

Recommended Posts

Hej! Har en uppgift som beskrivs så här: "

Din uppgift är att skriva ett program som gör några enkla beräkningar utifrån användarens inmatningar. Programmet ska fråga efter två heltal och vilken beräkning som ska utföras. Varje beräkningstyp representeras av en bokstav, se listan nedan. De beräkningar som programmet ska klara av att göra är:

  • a Addera tal 
  • m Multiplicera tal 
  • k Beräkna kvadratsumman av tal 

Programmet ska läsa in två tal och beroende på vald beräkning (a, m eller k) ska alla tal fr.o.m. det minsta t.o.m. det största av dem summeras, multipliceras eller kvadratsummeras. Om t.ex. talen 3 och 5 matas in och om man gör valet k så ska svaret 50 beräknas eftersom 3*3 + 4*4 + 5*5= 50d.v.s. kvadratsumman av 3, 4 och 5 är 50. Om talen 4 och 1 matas in och om man gör valet m så ska svaret 24 beräknas eftersom 1*2*3*4= 24. Om talen 3 och -1 matas in och om man gör valet m så ska svaret 0 (noll) beräknas eftersom (-1)*0*1*2*3=0" 

 

Har en kod men får den inte att fungera, snälla hjälp med vart felet ligger!

 

 

#include <iostream>

using namespace std;

 

void skrivInfo ();//Deklarationer av funktionerna

int lasEttTal ();

char lasOp();

void ordna (int &tal1, int &tal2);

int berakna (int tal1,int tal2);

 

int tal1, tal2;

char op;

 

 

void skrivInfo ()                //Skriver ut information om programmet

{

   cout << "I detta pogramm kan man räkna ut följande:" << endl;

   cout << "a - Addera tal" << endl;

   cout << "m - Multiplicera tal" << endl;

   cout << "k - Beräkna kvadratsumman av tal" << endl;

   cout << "Programmet läser in två tal och beroende på vald beräkning (a, m eller k)" << endl;

   cout << "kommer alla tal fr.o.m. det minsta t.o.m. det största av dem summeras, multipliceras eller kvadratsummeras." << endl;

}

 

 

 

 

int lasEttTal ()        //Läser in och skriver ut heltalen

{

    int tal1;

    cout << "Ge ett heltal: ";

    cin >> tal1;

    return tal1;

}

 

 

 

char lasOp()        //Läser in och skriver ut beräkningsmetod

{

    char op;

    cout << "ange beräkning (a, m eller k): ";

    cin >> op;

    return op;

}

 

 

 

 

void ordna (int &tal1, int &tal2)

{

    if ( tal1 > tal2 )

 

    {

        int temp = tal1; // spar tillfälligt undan värdet av tal1 till temp

        tal1 = tal2;     // kopiera värdet av tal2 till tal1

        tal2 = temp;

    }

}

 

 

 

int main()

{

 

int tal1, tal2;     //Deklaration av variabler

char op;

 

 

skrivInfo();   //Anropar informationsfunktionen

 

 

tal1= lasEttTal();

 

    cout << "Testutskrift av värde från lasEttTal: " << tal1 << endl;

 

tal2= lasEttTal();

 

    cout << "Testutskrift av värde från lasEttTal: " << tal2 << endl;

 

 

op = lasOp();

 

    cout << "Testutskrift av värde från lasOp: " << op << endl;

 

 

ordna ( tal1, tal2 );

 

    cout << "Det lägsta talet är: " << tal1

         << " det högsta talet är: " << tal2 << endl;

 

// Funktion berakna som beräknar talen enligt det val man gjort i lasOp

    int berakna (int tal1, int tal2, char op);

  int summa=0;

cout << tal1 << endl;

cout << tal2 << endl;

cout << op << endl;

    

         if (op == 'a')

    {

        for(int i=tal1 + 1; i<=tal2; i++)

        {

        summa += i; //här summeras talen

        cin  >>summa;

        cout << summa << endl;

        }

    }

    

      if (op == 'm')

 

      {

          summa = tal1;

      for (int x = tal1 + 1; x <= tal2; x++)

 

          summa = summa*(x);

          {

    }

    if (op == 'k')

    {

    for (int x = tal1; x <= tal2; x++)

    {

    summa = summa+(x*x);

    }

    }

 

    return summa;

 

//Funktion skrivResultat som skriver ut resultatet av beräkningen.

   void skrivResultat (int summa);

cout << "Resultatet av berakningen ger: " << summa << endl;

}

    }

Link to comment
Share on other sites

Det verkar väl stämma bättre med specifikationen i alla fall. Kom du något närmare en korrekt lösning med den ändringen?

På vilket sätt fungerar inte den kod du har?

Är alla testutskrifter rätt?

Link to comment
Share on other sites

@Cecilia Det som inte fungerar är beräkningen, när man skriver in två tal räknar den inte ut något utan skriver bara det lägsta och högsta talet men ingen uträkning. 

Link to comment
Share on other sites

Får du dessa utskrifter?

På 2020-07-23 på 13:14, skrev sandrab90:

cout << tal1 << endl;

cout << tal2 << endl;

cout << op << endl;

Om inte, så kommer du ju inte in berakna.

Link to comment
Share on other sites

Vad menar du? Är väldig nybörjare på programmering så fortfarande mycket jag inte kan eller förstår ☺️ Känns som att det är sista delen när man ska skriva ut reslutatet som kanske är tokig.

 

//Funktion skrivResultat som skriver ut resultatet av beräkningen.

   void skrivResultat (int summa);

cout << "Resultatet av berakningen ger: " << summa << endl;

}

    }

 

Vet du hur man kan skriva denna delen så man får utskrivet resultatet? 

Link to comment
Share on other sites

På 2020-07-23 på 14:23, skrev sandrab90:

Det som inte fungerar är beräkningen, när man skriver in två tal räknar den inte ut något utan skriver bara det lägsta och högsta talet men ingen uträkning. 

Problemet är att du har inget anrop till funktionen beräkna.

 

2 timmar sedan, skrev sandrab90:

Ja eller har med funktioner så här: " int berakna (int tal1, int tal2, char op);"

Detta ser ut som en deklaration av en funktionen berakna. Du har 2 deklarationer av  funktionen berakna, vilket inte ser korrekt ut.

int berakna (int tal1,int tal2);
int berakna (int tal1, int tal2, char op);

Du behöver dels ha med en definition av funktionen berakna samt även ett anrop till den. Kolla igenom koden på nytt, så ser du nog var det behöver uppdateras.

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



×
×
  • Create New...