webForumDet fria alternativet

Minsta värdet i en array

19 svar · 1 236 visningar · startad av Rulle

RulleMedlem sedan juni 2000166 inlägg
#1

Hej igen

Om jag har en array där anv matat in 20 tal så är det ju ganska lätt att ta fram det högsta inmatade värdet.
Men hur tar jag fram det lägsta inmatade värdet.
Delar av koden(iMin kan man ju inte initiera till 0 för då blir det ju resultatet):
{
const int TAL=20;
int a [TAL];
double total=0.0;
int iMax = 0;
int iMin ;

cout<<"Mata in tjugo heltal "<<endl;

for (int i=0;i<TAL;i++)
cin>>a*;

cout << "Resultatet av din inmatning : "<<"\n"<<endl;
{
for (i=0;i<TAL;i++)
cout << "Tal nr " <<i+1<<" : "<<a*<< endl; }

for (i=0;i<TAL;i++) {
total += a*;
if( a > iMax )
iMax = a
;
if( a < iMin )
iMin = a
;

}*******

nikoMedlem sedan juni 20022 599 inlägg
#2

Du kan väl sätta den till INT_MAX i limits.h.

Marcus EMedlem sedan maj 20021 466 inlägg
#3

Initiera iMin och iMax till det första talet i din array.

PhorpherMedlem sedan feb. 20002 300 inlägg
#4

Mata in enbart negativa tal så kommer inte din koll för största talet fungera heller...

Börja med att sätta iMin och iMax till första värdet i arrayen. Visar det sig att det finns mindre värden än iMin i arrayen så byter du ut dem. Detsamma gäller om det finns större värden än iMax.

nikoMedlem sedan juni 20022 599 inlägg
#5
#include <limits.h>

...
...

int iMax=INT_MIN; 
int iMin=INT_MAX ; 

...
...
RulleMedlem sedan juni 2000166 inlägg
#6

Alltså

borde det bli så här:
int iMax = a [0];
int iMin = a [0];

eller ??

PhorpherMedlem sedan feb. 20002 300 inlägg
#7

borde det bli så här:
int iMax = a [0];
int iMin = a [0];

Japp.

Marcus EMedlem sedan maj 20021 466 inlägg
#8

Du kan också byta ut:

for (i=0;i<TAL;i++) {
total += a*;*

mot

total = a[0];
for (i=1;i<TAL;i++) {

Fast då får du inte någon text utskriven. Jag skulle ha delat upp det i två separata slingor.

nikoMedlem sedan juni 20022 599 inlägg
#9

Och jag vidhåller min lösning som den snyggaste och enklaste. Men smaken är ju olika .. ;)

RulleMedlem sedan juni 2000166 inlägg
#10

Funkar inte

minsta värdet blir -858993460 ????????

PhorpherMedlem sedan feb. 20002 300 inlägg
#11

Rulle:
Hur ser din kod ut nudå?

niko:
Jag är tvungen att inte hålla med. Så mycket enklare än det sättet som Marcus och jag föreslog kan jag ju inte påstå att din lösning är...

RulleMedlem sedan juni 2000166 inlägg
#12

Så här

Jag ändrade bara dessa två:

int iMax = a [0];
int iMin = a [0];

Testa och gör en utskrift av iMin samt iMax.
iMax funkar men inte iMin ?????

PhorpherMedlem sedan feb. 20002 300 inlägg
#13

Du måste ju givetvis fylla arrayen med dina värden innan du sätter iMin och iMax. När du sätter iMin och iMax nu så innehåller a[0] enbart skräpvärden.

nikoMedlem sedan juni 20022 599 inlägg
#14

Phorpher skrev:

Jag är tvungen att inte hålla med. Så mycket enklare än det sättet som Marcus och jag föreslog kan jag ju inte påstå att din lösning är...

Tja, som sagt .. Man sparar ju ett par rader och är helt skyddad mot eventuella problem med oinitierade tilldelningar om koden inte placeras på rätt ställe. ;)

PhorpherMedlem sedan feb. 20002 300 inlägg
#15

niko skrev:

Tja, som sagt .. Man sparar ju ett par rader och är helt skyddad mot eventuella problem med oinitierade tilldelningar om koden inte placeras på rätt ställe. ;)

Jag är beredd att hålla med dig nu faktiskt. ;)

RulleMedlem sedan juni 2000166 inlägg
#16

Precis

tack så mycket, jag har stångats med detta för länge.
Är bara i början av min C++-karriär, suck.....

RulleMedlem sedan juni 2000166 inlägg
#17

Limits.h

Är ju som sagt ny på detta.
Men i Limits.h lägger man då till dessa rader:
#include <limits.h>

...
...

int iMax=INT_MIN;
int iMin=INT_MAX ;

...
...

och bortkommenterar följande:
#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX 2147483647 /* maximum (signed) int value */

nikoMedlem sedan juni 20022 599 inlägg
#18

Nej, du ska inte ändra i limits.h.

I koden du visade ovan så ersätter du:

int iMax = 0;
int iMin ;

med:

int iMax=INT_MIN;
int iMin=INT_MAX ;

och sen inkluderar du limits.h bland dina övriga includes i samma kod. Det är allt.

RulleMedlem sedan juni 2000166 inlägg
#19

Härligt

tack.
Finns det någonstans där man kan läsa om vad olika include-filer innehåller??

developerMedlem sedan aug. 2001458 inlägg
#20

Re: Härligt

Rulle skrev:

tack.
Finns det någonstans där man kan läsa om vad olika include-filer innehåller??

En bok om C++ är en bra investering, jag skulle säga att det är dumt att försöka lära sig C++ utan att investera i en vettig bok. Sök i detta forum så hittar du boktips. Se även relaterade länkarna som finns.

265 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
133 ms — hämta forumlista (db)
121 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)