dubbele elementen in array berekenen?

Status
Niet open voor verdere reacties.

MaikelBakkenes

Nieuwe gebruiker
Lid geworden
30 okt 2011
Berichten
4
Ik ben net begonnen met programmeren in mijn eigen tijd en ik loop vast met een opdracht. Het lijkt vrij simpel maar ik kom er niet uit haha. Ik programmeer in Visual C# en loop vast op het volgende:
volgende gesorteerde lijst gekregen:
int lijst = { 1, 1, 2, 3, 4, 4, 5, 7, 7, 7, 10};

vraag is:
schrijf een programma fragment dat berekend hoeveel dubbele elementen voorkomen. Een element is dubbel als het gelijk is aan zijn voorganger.
De onderdelen die in dit hoofdstuk behandeld worden zijn de functies, "for" "foreach" "if,else", "while". Hiermee zou ik dus een code moeten kunnen schrijven om de vraag te beantwoorden. Nu zit ik zelf al een behoorlijke tijd aan te *****n maar denk ik waarschijnlijk te moeilijk. Zou iemand mij hierbij kunnen helpen? Als ik de code zie begrijp ik hem wel.

Alvast bedankt!
 
Zoiets:

[cpp] int[] lijst = {1, 1, 2, 3, 4, 4, 5, 7, 7, 7, 10};
int previous = lijst[0];
int teller = 0;

for (int i = 0; i < lijst.Length; i++){
if (i != 0){if (previous == lijst){teller += 1;}}
previous = lijst;
}
Console.WriteLine("Aantal duplicaten: " + teller.ToString());
Console.ReadKey();[/cpp]
 
Graag gedaan :thumb:

Zet je de vraag op Opgelost?
 
Het is sneller om bij een gevonden reeks meteen naar het einde van die reeks te gaan (dan hoef je de controle op i != 0 in jouw code niet dubbel te doen binnen de reeks). Ook heb je in dit geval eigenlijk geen tijdelijke variabele nodig:

[cpp]
int count = 0;

for (int i = 0; i < elements.Length - 1;)
{
if (elements == elements[++i])
{
while (elements[i-1] == elements && ++i < elements.Length);
++count;
}
}

// ...

[/cpp]

Hierbij wordt enkel het element dat na een reeks komt dubbel gecontroleerd (aangezien dat het einde van de while-lus is). Of het ook meetbaar sneller is zal afhankelijk zijn van de invoer.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan