C/C++ Oefeningen

advertisement
C/C++ Oefeningen
L. Rutten
Table of Contents
1. C oefeningen .............................................................................................................
1.1. Pointers en arrays ............................................................................................
2. C++ oefeningen .........................................................................................................
3. Qt Oefeningen ...........................................................................................................
1
1
2
2
1. C oefeningen
1.1. Pointers en arrays
Dit zijn een aantal extra oefeningen over pointers en arrays.
1. Maak een functie die het gemiddelde berekent van een array met getallen. Als parameter geef je
de array en het aantal getallen door.
double gemiddelde(double *p, int n);
2. Sorteer een array getallen met de bubble sort methode. Bij dit algoritme loop je door de lijst en
verwissel je twee naburige getallen als ze niet in de juiste volgorde staan. Dit blijf je herhalen to er
geen wisselingen meer zijn Plaats de sorteeralgoritme in een eigen functie.
void sorteer(int *p, int n);
3. Maak een functie die een getal zoekt in een array van getallen. Als het getal gevonden wordt, wordt
de index van het getal teruggegeven (0 .. n-1); als het getal niet gevonden wordt, wordt -1
teruggegeven.
int zoek(int *p, int n, int getal);
4. Maak een functie die een string (array van char) kopieert. Denk eraan dat je het einde van de
string kan herkennen aan de binaire nul.
void kopieer(char *naar, char *van);
5. Maak een functie die een string omkeert.
6. Maak een functie die de woorden in string omkeert. De woorden blijven op hun plaats staan maar
de letters ervan worden omgekeerd. Tussen de woorden staan één of meerdere spaties.
7. Maak een functie die nagaat of een string een palindroom is. Een palindroom is een woord dat
hetzelfde blijft als je het omkeert.
8. Maak een functie die een string als parameter krijgt en deze string omzet naar de p-taal. Dit betekent
dat je na elke klinker a, o, e, i en u een letter p gevolgd door dezelfde klinker bijvoegt. Denk eraan
dat de nieuwe string langer wordt dan het origineel. Hou hiermee rekening. Geef de nieuwe string
met return terug.
1
C/C++ Oefeningen
9. Maak een functie die 2 strings vergelijkt. De strings hoeven niet even lang te zijn. Bij gelijkheid
geef je 0 terug, bij ongelijkheid een andere waarde.
int vergelijk(char *p, char *q);
10.Maak een functie die 2 arrays van gesorteerde getallen samenvoegt in een nieuwe array.
11.Maak een functie die een getal zoekt in een array van getallen. Deze array is gesorteerd in stijgende
volgorde. Als het getal gevonden wordt, wordt de index van het getal teruggegeven (0 .. n-1);
als het getal niet gevonden wordt, wordt -1 teruggegeven. Maak de oplossing recursief volgens de
binaire zoekmethode: als het getal in de eerste helft zit, ga je verder met de eerste helft. Anders
zoek je verder in de tweede helft.
int zoekbinair(int *p, int n, int getal);
12.Maak een functie die de waarde uitrekent van een reeks getallen en bewerkingen. Een getal bestaat
maar uit één cijfer en als bewerkingen komen alleen maar + en * voor. Zo zal de string "234+*"
als (3 + 4)*2 uitgerekend worden.
int reken(char *p);
13.Maak een functie die in een tekst op zoek gaat naar een patroon. In het patroon kan de * als
jokerteken voorkomen. Ook letters en cijfers mogen in een patroon voorkomen. Deze oefening is
niet eenvoudig.
int zoekpatroon(char *tekst, char *patroon);
2. C++ oefeningen
14.Gegeven is een lijst van rechthoeken. Vergelijk elke rechthoek met elke andere rechthoek en ga na
of er een overlapping is. Tel het aantal overlappingen.
15.Gegegeven is een lijst van rechthoeken. Maak 3 nieuwe lijsten: één voor de rechthoeken die links
van een verticale lijn staan, één voor de rechthoeken rechts van deze lijn en één voor rechthoeken
die over de lijn staan. Overloop alle rechthoeken uit de gegeven lijst en plaats ze in één van de 3
nieuwe lijsten.
16.In een boek zijn er meerdere pagina's die elk bestaan uit meerdere woorden. Ontwerp hiervoor
de klassen Boek, Pagina en Woord. Maak in de klassen ook de methode bouwIndex():
deze methode bouwt een index van alle woorden. Maak hiervoor de klassen Index en
IndexElement. De eerste klasse stelt de index voor met daarin meerdere IndexElement
objecten. In de IndexElement klasse wordt een pointerverwijzing naar het Woord en een lijst
van Woord bijgehouden.
17.In een school (klasse School) hebben docenten (klasse Docent) meerdere lessen (klasse Les)
op hun uurooster. Elke les heeft een begin- en een einduur. Maak in de klasse School een methode
die een lijst opbouwt van alle docenten die aanwezig kunnen zijn op een vergadering die start op
een beginuur en loopt tot een einduur.
3. Qt Oefeningen
18.Een mier beweegt over een bord van vierkanten. Elke vierkant is zwart of wit van kleur. De mier
kan enkel één stap naar boven, onder, link of rechts zetten naar het volgende vierkant. De mier
heeft dus een oriëntatie in éé van deze richtingen. Bij het verplaatsen gelden de volgende regels:
2
C/C++ Oefeningen
• als de mier op een zwart vierkant staat, verandert de kleur van het vierkant naar wit en draait de
mier 90 graden tegenwijzerzin en doet één stap vooruit.
• als de mier op een wit vierkant staat, verandert de kleur van het vierkant naar zwart en draait de
mier 90 graden wijzerzin en doet één stap vooruit.
Start met een raster dat volledig wit is.
3
Download