webForumDet fria alternativet

Minsta värdet i en array

C/C++

19 svar · 1 236 visningar · startad av Rulle

Medlem sedan juni 2000166 inlägg
Frågan#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
;

}*******

Medlem sedan juni 20022 599 inlägg
#2

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

Medlem sedan maj 20021 466 inlägg
#3

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

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

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

...
...

int iMax=INT_MIN; 
int iMin=INT_MAX ; 

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

Alltså

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

eller ??

Medlem sedan feb. 20002 300 inlägg
#7

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

Japp.

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

Medlem sedan juni 20022 599 inlägg
#9

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

Medlem sedan juni 2000166 inlägg
#10

Funkar inte

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

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

Medlem 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 ?????

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

Medlem 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. ;)

Medlem 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. ;)

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

Medlem 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 */

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

Medlem 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??

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

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)