C# loop met Do while of while

Status
Niet open voor verdere reacties.

Jorre89

Gebruiker
Lid geworden
24 okt 2010
Berichten
6
Schrijf een programma (NumToString) dat blijft werken tot de gebruiker 0 intikt. De gebruiker mag enkel getallen tussen 0 en 9 invoeren. Telkens een getal wordt ingedrukt (gevolgd door enter) wordt het getal in letters getoond.

De uitkomst moet ongeveer iets zijn zoals volgende:
Voer getal van 1 tot 9 in aub. <0 is afsluiten>
5
Vijf
Voer getal van 1 tot 9 in aub. <0 is afsluiten>
8
Acht

Enzoverder.
De vraag krijg ik telkens opnieuw gesteld maar de tekst die erbij moet komen als je het cijfer ingeeft lukt me niet.

Kan iemand mij hierbij helpen?
 
Wat je wenst te bereiken is zeer makkelijk: je stopt de woorden in een array en toont vervolgens array[n-1] om het corresponderend woord af te drukken.
Het maakt verder niet uit of je gebruik maakt van een while of een do-while constructie (omdat je de invoer wenst te controleren dien je n in dit voorbeeld
sowieso een waarde te geven)

Iets als:

[cpp]
string[] nummer = { "Een", "Twee", "Drie", "Vier", "Vijf", "Zes", "Zeven", "Acht", "Negen" };
int n = -1;

while (n != 0)
{
Console.WriteLine("Voer getal van 1 tot 9 in aub. <0 is afsluiten>");
try
{
n = int.Parse(Console.ReadLine());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
continue;
}

if (n >= 1 && n <= 9)
{
Console.WriteLine(nummer[n-1]);
}
else
{
Console.WriteLine("Waarde valt niet binnen het juiste bereik! (1-9)");
}
}
[/cpp]

(Hier leer je uiteraard weinig van, maar het is laat en ik verveelde me :P)
 
Bedankt

Met die code kan ik al veel verder doen maar wat bedoel je juist met dit string[]
Wil dit zeggen dat dit variabel is?

alvast bedankt.
 
Met die code kan ik al veel verder doen maar wat bedoel je juist met dit string[]
Wil dit zeggen dat dit variabel is?

alvast bedankt.

string[] staat voor een array. Elke keer je een getal ingeeft dat binnen 0 en 10 ligt word de index van de array geraadpleegd..

Je moet n-1 doen zoals dat CoD_NL dat doet OMDAT een array begint te tellen van 0.

in je array is "een" dus gelijk aan 0 en "twee" gelijk aan 1..
 
Je moet n-1 doen zoals dat CoD_NL dat doet OMDAT een array begint te tellen van 0.

Het is uiteraard ook nog mogelijk om een dummy als eerste waarde te gebruiken, dan kun je wel gewoon array[n] gebruiken.

[cpp]
string[] nummer = { "", "Een", /* ... */ };
[/cpp]
 
Het is uiteraard ook nog mogelijk om een dummy als eerste waarde te gebruiken, dan kun je wel gewoon array[n] gebruiken.

[cpp]
string[] nummer = { "", "Een", /* ... */ };
[/cpp]

True, maar dat is niet echt aan te raden toch? Wat als die array pas later gedeclareerd wordt. Dan zit hij in de puree ;)
 
Er wordt hier "Console.ReadLine" gebruikt, wellicht is het:
a. Verstandiger om ReadChar (volgens mij bestaat die) te gebruiken.
b. De applicatie dusdanig uit te breiden/aan te passen dat 'ie goed met invoer als "99999" weet om te gaan (dus of "negen" printen of "negenennegentig enz.."
 
Er wordt hier "Console.ReadLine" gebruikt, wellicht is het:
a. Verstandiger om ReadChar (volgens mij bestaat die) te gebruiken.
b. De applicatie dusdanig uit te breiden/aan te passen dat 'ie goed met invoer als "99999" weet om te gaan (dus of "negen" printen of "negenennegentig enz.."

Is er een reden om ReadChar te gebruiken? Wat doet dat juist? :confused:
 
Is er een reden om ReadChar te gebruiken? Wat doet dat juist? :confused:

Readline verwacht dat de gebruiker uiteindelijk op enter drukt. Stel ik vul 242idfasuifa545 in en druk dan op enter. Die key bestaat niet in je array, dus vandaar de 2 opties die ik voorstelde: met ReadChar lees je 1 karakter uit (en niet een hele regel (line)). Dit vookomt situaties als "12432".

Mocht je readline blijven gebruiken, zou ik alleen het eerste getal uit de invoerstring vissen of het gehele getal printen in letters (al lijkt me dat wat overdreven).
 
re

Ik heb de hele opdracht aangepast en hij werkt zoals bedoeld.

Dus bedankt voor de hulp:thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan