Bij elk van deze oefeningen moet je gebruik maken van een (eenvoudige) while-lus.
Let op. In latere oefeningen zullen we je niet altijd vertellen welk type lus je moet gebruiken - for each, while of for - denk dus bij elke oefening goed na of de while-lus hier wel het meest geschikt is.
Schrijf een klasse While waarin je de volgende methoden implementeert. Test elke methode goed uit met verschillende parameters - in het bijzonder met die speciale parameters (0, negatief getal, lege string, …) waarvan je denkt dat ze misschien wel eens de boel in het honderd zouden kunnen laten lopen.
Schrijf een methode int keerom(int n)
die een positief geheel getal \(n\)
neemt, bijvoorbeeld 147, en het getal retourneert dat uit dezelfde cijfers
bestaat maar in omgekeerde volgorde (741, dus).
Doe dit door herhaaldelijk te delen door 10, te vermenigvuldigen met 10, op te tellen, af te trekken, maar niet door het getal om te zetten naar een string en dan de individuele lettertekens te verplaatsen.
Deze methode hoeft niet te werken wanneer \(n\) negatief is, of 0.
Schrijf een functie int aantalHerhalingen(String s)
die van een string \(s\)
bepaalt of hij uit herhalingen bestaat, en hoeveel. Bijvoorbeeld
aantalHerhalingen("appelappel")
, retourneert 2,aantalHerhalingen("ababababab")
, retourneert 5,aantalHerhalingen("ffffff")
, retourneert 6, enaantalHerhalingen("programmeren")
, retourneert 1.Gebruik hiervoor de volgende techniek: neem de eerste letter van de string en plaats die achteraan, herhaal dit totdat de resulterende string gelijk is aan het origineel, en tel hoeveel stappen je hiervoor nodig hebt gehad.
Misschien moet je hiervoor wel de elektronische documentatie van de klasse String1 raadplegen?
Zij \(n\) een positief getal. Beschouw de rij \(x_1\), \(x_2\), \(x_3\), … die opgebouwd is volgens het volgende voorschrift:
\(x_1 = 1\), \(x_{i+1} = \frac{x_i + n/x_i}{2}, \forall i\)
Deze rij convergeert naar de vierkantswortel van \(n\).
Gebruiken we bij dit voorschrift enkel gehele getallen (zie verder) dan blijft deze techniek voor een geheel getal \(n\) nog steeds werken (en is het resultaat een gehele benadering van de vierkantswortel). In plaats van te ‘convergeren’ zal dan vanaf een bepaalde \(i\) gelden dat \(x_i = x_{i+1} = x_{i+2} = ...\).
Om enkel met gehele getallen te werken, moet je het volgende veranderen:
Probeer eerst op deze manier met de hand de (benaderde) vierkantswortel te vinden van het geheel getal 10 en van het geheel getal 49.
Schrijf nu een functie int vierkantswortel(int n)
die deze techniek gebruikt
om de vierkantswortel van n te retourneren. De functie hoeft enkel te werken
wanneer \(n > 0\).