kleinste getal zoeken in array

Status
Niet open voor verdere reacties.

freshblood83

Gebruiker
Lid geworden
14 apr 2012
Berichten
5
ik moet een array maken en daaruit het kleinste getal bepalen maar ik slaag er niet in om het gewenste resultaat te krijgen omdat ik mijn kleinste instel op 0 geeft hij ook als kleinste resultaat 0. Weet er iemand hoe je dit kan oplossen? Hier is mijn code:

class Program
Code:
   {
        static void Main(string[] args)
        {
            int[] arrtabel = new int[9];

            int kleinste = 0;

            int index = -1;

            StreamReader reader = new StreamReader("getallen.txt");

            while (reader.Peek() > -1)
            {
                index += 1;
                arrtabel[index] = int.Parse(reader.ReadLine());
            }
            reader.Close();

            arrtabel[index] = kleinste;

            for (int i = 0; i < arrtabel.Length; i++)
            {
                if (arrtabel[0] < kleinste)
                {
                    kleinste = arrtabel[index];
                }
            } 
            Console.WriteLine("het kleinste getal is: {0}", kleinste);
            Console.ReadLine();
 
Laatst bewerkt door een moderator:
a. je for lus klopt volgens mij niet (tenzij ik niet begrijp wat je in kleinste wilt opslaan):
Code:
for (int i = 0; i < arrtabel.Length; i++)
{
if (arrtabel[[B]i[/B]] < kleinste)
{
kleinste = arrtabel[[B]i[/B]];
}
}
b.1 Je zet (na inlezen van de waarden uit getallen.txt) de variabele kleinste op de waarde van het eerste cijfer in het ingelezen array ipv. op 0 voordat je je vergelijking gaat doen in je for-lus:
kleinste = arrtabel[0]
b.2. Of je zet kleinste op de grootste toegestane waarde bij de declaratie (ik geloof dat dat 65535 is) ipv. op 0:
int kleinste = 65535;

Hopelijk heb je hier wat aan.

Tijs.
 
Laatst bewerkt door een moderator:
Code:
class Program
{
static void Main(string[] args)
{
int[] arrtabel = new int[9];

int kleinste = 0; [COLOR="#FF0000"]<--- hier zet je kleinste op 0[/COLOR]

int index = -1;

StreamReader reader = new StreamReader("getallen.txt");

while (reader.Peek() > -1)
{
index += 1;
arrtabel[index] = int.Parse(reader.ReadLine());
}
reader.Close();

arrtabel[index] = kleinste; [COLOR="#FF0000"]<--- hier zet je die 0 in de array. Wat de 0 meteen de kleinste maakt[/COLOR]

for (int i = 0; i < arrtabel.Length; i++)
{
if (arrtabel[0] < kleinste)
{
kleinste = arrtabel[index];
}
}
Console.WriteLine("het kleinste getal is: {0}", kleinste);
Console.ReadLine();


Probeer het eens zo:

Code:
class Program
{
  static void Main(string[] args)
{
int[] arrtabel = new int[9];

int kleinste;

int index = -1;

StreamReader reader = new StreamReader("getallen.txt");

while (reader.Peek() > -1)
{
  index += 1;
  arrtabel[index] = int.Parse(reader.ReadLine());
}
reader.Close();

kleinste = arrtabel[0]; [COLOR="#FF0000"]// hier pak je de eerste uit de array. Die is feitelijk altijd eerst de kleinste omdat je daar als eerst langs itereert.[/COLOR]

for (int i = 0; i < arrtabel.Length-1; i++) [COLOR="#FF0000"]//een length -1 gebruiken omdat een array van 9 lang loopt van 0 .. 8. Als length att 9 is en die dus voor je index gebruikt, dan ga je out of bounds[/COLOR]
{
  if (arrtabel[i] < kleinste)   [COLOR="#FF0000"]//je moet op de plaats van de i niet op een statische waarde zetten. Je wil de hele array doorlopen[/COLOR]
  {
  kleinste = arrtabel[i]; [COLOR="#FF0000"]//hier moet je ook I gebruiken omdat je die ook gebruikt om door de array te itereren[/COLOR]
  }
}
Console.WriteLine("het kleinste getal is: {0}", kleinste);
Console.ReadLine();

Dit is niet geteste code omdat ik op een pc zit waar ik atm geen ide op heb zitten. Maar probeer het hier eens mee.

Graag in het vervolg code tags gebruiken voor het plaatsen van code, dan blijft de codeformatting behouden en maakt het overzichtelijker.
 
Laatst bewerkt:
bedankt

bedankt mensen heb het met jullie hulp kunnen oplossen
hartelijk bedankt
groetjes benny
 
Kun je je vraag dan even op Opgelost zetten ;)
 
Ondanks deze vraag al is opgelost wil ik toch nog een andere manier laten zien hoe je dit eenvoudig kunt aanpakken:


[CPP]using System.Linq;

var getallen = new List<int> { 65, 4, 2, 100, 5, 67, 7, 3 };
var kleinste = getallen.Min();[/CPP]
 
bedankt om toch nog te reageren maar ik ben nog niet zo ver in het programmeren dus ken de code die u schreef eigenlijk nog niet :-s
toch bedankt
 
Niet relevante berichten verwijderd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan