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