Hallo,
Ik ben bezig met een opdrachtje voor school, en kom er niet helemaal uit. Ik hoop dat iemand mij hiermee kan helpen. Het gaat om het volgende:
Er is een groep met een x aantal personen (ik heb voor het gemak maar even een vaste value genomen, namelijk 5). Deze personen krijgen een woord toegewezen, dat bestaat uit een y aantal lettergrepen. Ze moeten om de beurt één lettergreep van het woord noemen. Degene die de laatste lettergreep zegt, valt af en wordt verwijderd van de groep. Dit gaat zo lang door, totdat er één persoon overblijft.
(voor de duidelijkheid: uiteindelijk moeten het aantal personen en het aantal lettergrepen van het woord ingevuld worden in de console)
Even een voorbeeld ter verduidelijking. Neem 5 personen en een woord met 2 lettergrepen (bv. Hallo).
De 1e persoon zegt "Hal", de 2e persoon "lo". Dus de 2e persoon wordt uit de groep gezet.
Daarna zegt de 3e persoon weer "Hal" en de 4e persoon "lo". Dus de 4e persoon gaat er ook uit.
Daarna zegt de 5e persoon weer "Hal" en de 1e persoon "lo". Dus de 1e persoon gaat er ook uit.
Tot slot zegt de 3e persoon weer "Hal" en de 5e persoon "lo". Dus de 5e persoon gaat er ook uit.
De 3e persoon blijft over en "wint".
Nu ben ik zover gekomen dat mijn code werkt voor een groep van 5 personen en een woord met 8 lettergrepen. Maar het moet werken voor een groep van x personen en een woord met y lettergrepen.
Als ik in deze code bijvoorbeeld 5 personen hou, en ik kies een woord met 9 lettergrepen, dan blijven uiteindelijk 1 en 2 over, en kan er geen keuze gemaakt worden.
Heeft iemand een idee hoe dit programma wel goed zou werken?
Ik ben bezig met een opdrachtje voor school, en kom er niet helemaal uit. Ik hoop dat iemand mij hiermee kan helpen. Het gaat om het volgende:
Er is een groep met een x aantal personen (ik heb voor het gemak maar even een vaste value genomen, namelijk 5). Deze personen krijgen een woord toegewezen, dat bestaat uit een y aantal lettergrepen. Ze moeten om de beurt één lettergreep van het woord noemen. Degene die de laatste lettergreep zegt, valt af en wordt verwijderd van de groep. Dit gaat zo lang door, totdat er één persoon overblijft.
(voor de duidelijkheid: uiteindelijk moeten het aantal personen en het aantal lettergrepen van het woord ingevuld worden in de console)
Even een voorbeeld ter verduidelijking. Neem 5 personen en een woord met 2 lettergrepen (bv. Hallo).
De 1e persoon zegt "Hal", de 2e persoon "lo". Dus de 2e persoon wordt uit de groep gezet.
Daarna zegt de 3e persoon weer "Hal" en de 4e persoon "lo". Dus de 4e persoon gaat er ook uit.
Daarna zegt de 5e persoon weer "Hal" en de 1e persoon "lo". Dus de 1e persoon gaat er ook uit.
Tot slot zegt de 3e persoon weer "Hal" en de 5e persoon "lo". Dus de 5e persoon gaat er ook uit.
De 3e persoon blijft over en "wint".
Nu ben ik zover gekomen dat mijn code werkt voor een groep van 5 personen en een woord met 8 lettergrepen. Maar het moet werken voor een groep van x personen en een woord met y lettergrepen.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Win_a_Mars
{
class Program
{
static void Main(string[] args)
{
ArrayList lijst = new ArrayList();
//5 personen
var personen = from x in Enumerable.Range(1, 5) select x;
foreach (int val in personen)
lijst.Add(val);
foreach (int val in lijst)
Console.Write(val + " ");
Console.WriteLine();
Console.ReadLine();
//aantal lettergrepen
int lG = 8;
//variabele voor de positie in de array
int y = 0;
//elementen in de lijst elimineren
while (lijst.Count > 1)
{
y += (lG % lijst.Count) - 1;
if (y >= 0 && y < lijst.Count)
lijst.RemoveAt(y);
if (y > lijst.Count)
lijst.RemoveAt(y % lijst.Count);
if (y < 0)
lijst.RemoveAt(lijst.Count + y);
foreach (int val in lijst)
Console.Write(val + " ");
Console.WriteLine();
Console.ReadLine();
}
Console.ReadLine();
}
}
}
Als ik in deze code bijvoorbeeld 5 personen hou, en ik kies een woord met 9 lettergrepen, dan blijven uiteindelijk 1 en 2 over, en kan er geen keuze gemaakt worden.
Heeft iemand een idee hoe dit programma wel goed zou werken?