Just nu i M3-nätverket
Gå till innehåll

Hjälp programmering!


sandrab90
 Share

Go to solution Solved by Cecilia,

Rekommendera Poster

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;

}

    }

Länk till kommentar
Dela på andra webbplatser

8 minuter sedan, skrev sandrab90:

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

Varför initierar du i som tal1 + 1 ?

Länk till kommentar
Dela på andra webbplatser

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?

Länk till kommentar
Dela på andra webbplatser

@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. 

Länk till kommentar
Dela på andra webbplatser

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.

Länk till kommentar
Dela på andra webbplatser

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? 

Länk till kommentar
Dela på andra webbplatser

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.

 

  • Gilla 1
Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...