Vinnaren i pepparkakshustävlingen!
2021-11-26, 22:11
  #1
Medlem
Har en fundering kring max/min value. Kan man på ett enkelt sätt, efter att ha deklarerat x antal variabler av datatyp int, double etc hitta max värdet samt min värde? Max och min värde ska plockas bort för att sedan räkna medelvärdet, arrays är inte tillåtet

EDIT: det vore härligt med en lösning typ double max_value = MAX_VALUE(num1,num2,num3,num4)...
programmet plockar nio input av typen double, nu har jag kodat 18 rader med upprepad kod
cout <<
cin >>
etc.
Finns det något bättre sätt?
__________________
Senast redigerad av bosscs2 2021-11-26 kl. 22:25.
Citera
2021-11-26, 22:18
  #2
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av bosscs2
Har en fundering kring max/min value. Kan man på ett enkelt sätt, efter att ha deklarerat x antal variabler av datatyp int, double etc hitta max värdet samt min värde? Max och min värde ska plockas bort för att sedan räkna medelvärdet, arrays är inte tillåtet

EDIT: det vore härligt med en lösning typ double max_value = MAX_VALUE(num1,num2,num3,num4).

Varför vill du inte använda en array?
Citera
2021-11-26, 22:26
  #3
Medlem
Det är en skoluppgift, man får inte... fullkomligt obegripligt
Citera
2021-11-26, 22:35
  #4
Medlem
Haru ens googlat "c++ max" ?

Isåfall kan du bara då skriva ärligt att du inte förstår resultaten (det är inte helt lätt - första delen av de flesta c++ docs är ju att visa hur funktioner är uppbyggda - vilket då inte hjälper så mycket med att förstå hur man ska anropa dom. Men om man scrollar längre ned hittar man ofta exempelkod på faktiska användnings-exempel)
Citera
2021-11-26, 22:44
  #5
Medlem
Citat:
Ursprungligen postat av bosscs2
Har en fundering kring max/min value. Kan man på ett enkelt sätt, efter att ha deklarerat x antal variabler av datatyp int, double etc hitta max värdet samt min värde? Max och min värde ska plockas bort för att sedan räkna medelvärdet, arrays är inte tillåtet

EDIT: det vore härligt med en lösning typ double max_value = MAX_VALUE(num1,num2,num3,num4)...
programmet plockar nio input av typen double, nu har jag kodat 18 rader med upprepad kod
cout <<
cin >>
etc.
Finns det något bättre sätt?

Du kan utnyttja identiteten att max(a,b,c) = max(a,max(b,c))
Citera
2021-11-26, 23:21
  #6
Medlem
Du kan deklarera ett par variabler max och min som du initierar det det minsta respektive största möjliga värde som datatypen kan ha, sedan testa dina inlästa värden i stil med "if tal>max max=tal if tal<min min=tal" och så vidare. Du kan också initiera sum till noll och addera dina tal till den efter hand. Slutligen med en räknare i=-2 som du ökar på med ett för varje tal du läser in så har du ditt medelvärde=(sum-max-min)/i.
Citera
2021-11-26, 23:34
  #7
Medlem
Det är väl meningen att du ska skriva energin funktion.

Det är ju rätt lätt, bara att loppa genom alla tal och behålla största resp minsta. När du är klar har du Max och min.
Citera
2021-11-26, 23:44
  #8
Medlem
Går det att utveckla svaren?

if(num1 < num2 || num1 < num3 || etc kan inte vara en bra lösning men den enda jag förstår för tillfället. Det är rekommenderat att göra en egen funktion enligt uppgift.
Citera
2021-11-26, 23:44
  #9
Medlem
Citat:
Ursprungligen postat av killing.fields
Det är väl meningen att du ska skriva energin funktion.

Det är ju rätt lätt, bara att loppa genom alla tal och behålla största resp minsta. När du är klar har du Max och min.

Ja exakt, något sådant jag söker
Citera
2021-11-26, 23:58
  #10
Medlem
Citat:
Ursprungligen postat av bosscs2
Ja exakt, något sådant jag söker

Den skriver du själv.

Min = funtction(min){

If(is.na(HistMin) HistMin = min) else(HistMin > min) HistMin = min

Return HistMin
}

Typ så, sen bara köra alla tal du vill test genom funktionen.
Citera
2021-11-27, 20:25
  #11
Medlem
Goto10s avatar
Citat:
Ursprungligen postat av bosscs2
Har en fundering kring max/min value. Kan man på ett enkelt sätt, efter att ha deklarerat x antal variabler av datatyp int, double etc hitta max värdet samt min värde? Max och min värde ska plockas bort för att sedan räkna medelvärdet, arrays är inte tillåtet

EDIT: det vore härligt med en lösning typ double max_value = MAX_VALUE(num1,num2,num3,num4)...
programmet plockar nio input av typen double, nu har jag kodat 18 rader med upprepad kod
cout <<
cin >>
etc.
Finns det något bättre sätt?
Om det är användaren som ska mata in talen (9 st) skriver du en loop. Två variabler används för att hålla reda på min och max och en variabel för att hålla reda på summan. När alla tal summerats drar du bort min och max från summan och sedan dividerar du med 7 (totalt 9 men två har tagits bort så 7 kvar).
Kod:
#include <iostream>
#include <limits>

int main() {
  constexpr int antalTal = 9;
  double min = std::numeric_limits<double>::max();
  double max = std::numeric_limits<double>::min();
  double sum = 0.0;
  for (int i = 0; i < antalTal; i++) {
    std::cout << "Skriv in tal " << i+1 << ": ";
    double num;
    std::cin >> num;
    sum += num;
    if (num > max) {
      max = num;
    }
    if (num < min) {
      min = num;
    }
  }
  sum -= min;
  sum -= max;
  std::cout << "Medelvärdet då min och max tagits bort är: " << sum / (antalTal - 2) << std::endl;
}
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback