Kleinste getal vinden uit reeks getallen

Status
Niet open voor verdere reacties.

rptje

Gebruiker
Lid geworden
6 dec 2007
Berichten
19
Hallo,

Ik zou graag een programma willen schrijven dat
het kleinste getal uit een reeks getallen haalt.

Dit is wat ik tot nu toe heb:

[cpp]
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{

unsigned int AANTAL, TELLER;
int GETAL, KLEINSTE;

cout << "Hoeveel getallen wilt u invoeren ";
cin >>AANTAL;

// WANNEER ER GEEN GETAL WORDT INGEVOERD

if (AANTAL=0)
cout << " Er kan geen kleinste getal bepaald worden "

// Berekening om kleinste getal te vinden
else
{




_getch();
}

[/cpp]

Alvast bedankt.
 
Laatst bewerkt door een moderator:
Huiswerk (zo niet, dan vraag ik me af wat het nut hiervan is)?

Ik ga je sowieso niet de complete code cadeau doen, maar ik kan je wel wat tips geven. Het makkelijkste in dit geval (tenzij je met dynamisch ge-alloceerde arrays wilt gaan werken) is om "KLEINSTE" initieel de waarde INT_MAX te geven. Vervolgens laat je (met een lus) de gebruiker "AANTAL" keer een waarde invoeren. Na het invoeren controleer je of de waarde kleiner is dan "KLEINSTE". Zo ja, verander de waarde van "KLEINSTE" in de ingevoerde waarde, zo nee, doe niets.

Overigens moet je [cpp]if (AANTAL=0)
cout << " Er kan geen kleinste getal bepaald worden "[/cpp]
veranderen in [cpp]if (AANTAL==0)
cout << " Er kan geen kleinste getal bepaald worden ";[/cpp]

Vergelijken doe je met '==', een waarde toekennen met '='. Ook was je de ';' (puntkomma) vergeten achter de "cout"-regel.
 
Ik heb nu wat geprobeerd, maar hij houd geen rekening met mijn aantal ingevoerde getallen :(

Code:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
int KLEINSTE=9999;
int INVOER=0,NRZOVEEL=1,AANTAL;

cout <<endl;


cout << "Hoeveel getallen wilt u invoeren ";
cin >>AANTAL;

// WANNEER ER GEEN GETAL WORDT INGEVOERD

if (AANTAL==0)
cout << " Er kan geen kleinste getal bepaald worden ";

// Berekening om kleinste getal te vinden
else 
{
	

for (NRZOVEEL=0;NRZOVEEL<AANTAL;NRZOVEEL++)

do
{
	cout <<"Voer een waarde in " <<NRZOVEEL<<":";
		cin >> INVOER ;
		NRZOVEEL++;
	if((INVOER<<KLEINSTE)&&(INVOER != -99))
		KLEINSTE=INVOER;
}
	while (INVOER != -99);

cout <<endl;
cout <<"Kleiste waarde is: " <<KLEINSTE<<"\n\n";
}

_getch();
}

Hier een screenshot:

http://img225.imageshack.us/img225/8531/screenshotklm.jpg

alvast bedankt
 
Je programma komt "vast te zitten" in de do...while lus. Zo lang je een ander getal dan -99 invoert blijft hij doorgaan. Maar je hebt al een for lus, dus je kan de do..while lus helemaal weglaten.
Ook moet je [cpp]NRZOVEEL++;[/cpp] (op dit moment de 6e regel in de for lus) weghalen. Dit wordt door de for lus al geregeld.
Verder controleer je de grootte op deze manier [cpp]if((INVOER<<KLEINSTE)&&(INVOER != -99))[/cpp]
Dat is geldige C++ code, maar niet wat je wilt ('<<' is een shift naar links als ik me niet vergis). Wat je wilt is [cpp]if (INVOER < KLEINSTE)[/cpp] De controle of "INVOER" ongelijk is aan -99 mag je ook weglaten.

Als ik dat verander in de code die je plaatst werkt het bij mij.

Als je het trouwens helemaal goed wilt doen zou ik als waarde van "KLEINSTE" INT_MAX gebruiken i.p.v. 9999. Als alle getallen die je invoert groter zijn dan 9999 krijg je nu namelijk te zien dat het kleinste getal 9999 is, terwijl je dat getal niet hebt ingevoerd.

[edit]Als ik meteen even mag reageren op je stijl. Ik zou je willen adviseren om gebruik te maken van kleine letters voor de variabelen. Ten eerste is dat makkelijker om in te typen en ten tweede zijn variabelen in hoofdletters meestal constanten.[/edit]
 
Laatst bewerkt:
Hartelijk bedankt voor je hulp en de tip!

Mijn programma loopt nu perfect :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan