Håller på att lära mig lite om vectors nu iaf och har stött på ett litet problem Ett snabbt exempel, finns kanske enklare sätt men detta borde fungera. Och lite optimerat smart, tänkte inte på att det är smart att definera max och min direkt innan jag kör kollen Det kan även vara instruktivt att visa den lite mer "rena" lösningen på samma tema;störst och minst
om jag har en vector (talen) med massa tal och vill ta ut det största resp. minsta talet
// största
for (int i=0; i < antalet; i++)
{
if(talen[i] > talen[i-1])
max = talen[i];
}
så sätter den hela tiden max till det talet om det är större än det innan, problemet uppstår när jag försöker göra det åt andra hållet och vill få ut det minsta talet!
klockan är mycket nu och jag tror min hjärna inte vill fungera riktigt som den ska och det kanske är jag som tänker helt fel när jag försöker lösa det.
tacksam för svar
Sv: störst och minst
// största
if(antalet > 0)
max = talen[0];
for (int i=1; i < antalet; i++)
{
if(talen[i] > max)
max = talen[i];
}
// minsta
if(antalet > 0)
min = talen[0];
for (int i=1; i < antalet; i++)
{
if(talen[i] < min)
min = talen[i];
}
Sv:störst och minst
// största och minsta
if(antalet > 0)
{
max = talen[0];
min = max;
}
for (int i=1; i < antalet; i++)
{
if(talen[i] > max)
{
max = talen[i];
}
else if(talen[i] < min)
{
min = talen[i];
}
}
Sv: störst och minst
Sv:störst och minst
max = std::numerical_limits<int>::min()
for (int i=0; i < antalet; i++)
{
if(talen[i] > max)
max = talen[i];
}
alternativt:
max = -std::numerical_limits<double>::infinity()
for (int i=0; i < antalet; i++)
{
if(talen[i] > max)
max = talen[i];
}
Kan först verka som något fult, men ändå renare när man tänker på det.
Sen finns ju förstås standardbibliotekets;
max = *(max_element(talen, talen+antalet));
Och slutligen: använd hellre vector<> än array.