Avatar billede backupmand Nybegynder
20. december 2000 - 22:43 Der er 6 kommentarer og
1 løsning

minimumsværdi og gennemsnit i arrays

hejsa,
Det er mig med arrays igen. Denne gang har
jeg et array på en længde af 30 med nogle
forskellige værdier på hver sin postition.
Jeg vil gerne beregne (og returnere) både
den mindste værdi i hele arrayet og gennem-
snit af alle værdier i arrayet. Mit eget bud er:
public int mingas ()
      {
      int min=0;
      for (int i=0;i<vd.length;i++)
          {
          if (i<vd[i].getGasforbrug())
              min = vd[i].getGasforbrug();   
          }
      return min;   
      }
     
      public int gennemsnitgas ()
      {
      int gennemsnit;
      for (int i=0;i<vd.length;i++)
          {
          gennemsnit=vd[i].getGasforbrug()/30;   
          }
      return gennemsnit;   
      }
Avatar billede stigc Nybegynder
20. december 2000 - 23:14 #1
public int mingas ()
      {
      int min= vd[0].getGasforbrug();

      for (int i=0;i<vd.length;i++)
          {
          if (min>vd[i].getGasforbrug())
              min = vd[i].getGasforbrug();   
          }
      return min;   
      }
     
      public int gennemsnitgas ()
      {
      int gennemsnit;
      for (int i=0;i<vd.length;i++)
          {
          gennemsnit+=vd[i].getGasforbrug();   
          }

      return gennemsnit/30.0;   
      }
Avatar billede davsclaus Nybegynder
20. december 2000 - 23:25 #2
>> stigc

> int min= vd[0].getGasforbrug();
>      for (int i=0;i<vd.length;i++)
         
hvis du skal \"optimere\" så kan du starte for løkken fra int i=1,
da du har aflæst den første værdi i linen over for løkken. :-)

Men normalt vil man nok ikke det, da man er normalt at skrive
sine for løkker som du går ifbm. arrays og lign.
Avatar billede codemon Nybegynder
21. december 2000 - 01:41 #3
En anden måde at finde mindste værdi imellem 2 tal istedet for med en if :
min = (min > vd[i].getGasforbrug()) ? vd[i].getGasforbrug : min;

også er det pænest at dividere med vd.length istedet for 30.0 og hvorfor dividere med xx.0, du retunerer en int, kig evt. på round i Math classen hvis du vil have præcis afrunding
Avatar billede the_dude Nybegynder
03. januar 2001 - 18:39 #4
Du kunne også overveje at gøre sådan her, rimeligt simpelt og overskueligt...

public int mingas()
{
  // PRE : vd.length !=0
  // POST: returnerer den mindste værdi i arrayet
    int min=vd[0].getGasforbrug();
    for (int i=1 ; i<vd.length ; i++)
    {
      if (vd[i].getGasforbrug() < min)
        min = vd[i].getGasforbrug();
    }
    return min;
}


public int gennemsnitgas()
{
  // PRE : Der er 30 heltal i arrayet, som alle
  //      skal tælle med i gennemsnittet
  // POST: returnerer gennemsnitsforbruget af gas
  //      int forbrug=0;
    for (int i=0 ; i<vd.length() ; i++)
      forbrug = forbrug + vd[i].getGasforbrug();
    return forbrug/30;
}
Avatar billede codemon Nybegynder
03. januar 2001 - 22:37 #5
--> the_dude, Hvad er forskellen på dine metoder og stigc\'s?

--> backupmand, BTW hvis du læser side 6 i re-eksamen januar 2000 står der faktisk \"middeltemperatur er angivet ved decimaltal\"

Jeg er vist ikke den eneste der sidder og tæsker sæt igennem før eksamen.
Avatar billede the_dude Nybegynder
03. januar 2001 - 22:51 #6
Sorry hvis ikke det store - havde ikke lige nærlæst dem.

Udover det der er nævnt - i minGas hvor for-løkken kan nøjes med at gå fra i=1.

Held og lykke med eksamen - jeg tog min i dag. puhaa.
Avatar billede backupmand Nybegynder
04. januar 2001 - 15:53 #7
Jeg har lige accepteret et svar, jeg fandt
ud af det med jeres hjælp her, tak skal i ha\'.
Så har jeg været oppe idag, puha det er gedigent
hårdt, og så er det 6 timer. Ja jeg har også
terpet eksamensopgaver igennem, faktisk har jeg
nået at lave alle (med undtagelse af de ting,
jeg ikke rigtigt har styr på)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester