Letterfuncties

Boswandeling bevat drie spelletjes met letters en woorden. Voor elk van deze spellen moet een ondersteunende functie geschreven worden die je straks gebruikt als je het spel gaat schrijven. Iedere duogroep moet één van de onderstaande functies schrijven. Uiteraard moet elke duogroep voor een andere functie kiezen. Alle functies zijn inclusief unit tests.

Iedere duogroep levert twee bestanden: een bronbestand en een headerbestand. Als alle bestanden af zijn, moeten jullie gezamenlijk één headerbestand maken voor alle drie de functies plus hun unit tests. Noem het headerbestand Letterfuncties.h.

Maak een bestand Main.cpp aan met daarin de code die hieronder staat. Deze code voert alle unit tests in één keer uit. Als de code niet werkt of als er een unit test niet slaagt, dan zijn jullie nog niet zo ver dat je je code kunt inleveren (je mag onderstaande code niet veranderen).

#include <iostream>
#include "Letterfuncties.h"

using namespace std;

/**
 * Voert alle unit tests uit.
 */
void UnitTest()
{
	// voer unit tests uit en houd bij of ze slagen
	bool myResult = true;

	myResult &= AlfabetischTest();
	myResult &= OntcijferTest();
	myResult &= VerwijderdeKlinkersTest();

	// zijn alle tests geslaagd?
	if (myResult == true)
	{
		// ja
		cout << "Alle testen zijn geslaagd. :-)";
	}
	else
	{
		// nee
		cout << "Eén of meerdere testen zijn mislukt. :-(";
	}
}

/**
 * Het programma start hier.
 *
 * @return	altijd 0
 */
int main()
{
	// voer unit tests uit
	UnitTest();

	// wacht op enter
	cout << "\nDruk op een toets om door te gaan...";
	cin.get();

	return 0;
}

Als alle bestanden klaar zijn, zet je ze in één zipbestand en dat zipbestand zet je in Leo.

Alfabetisch

De functie Alfabetisch bepaalt van de opgegeven lijst met woorden of deze in oplopende alfabetische volgorde is gesorteerd. De functie geeft true terug als de woorden in alfabetische volgorde staan en false als dat niet zo is. Een lege lijst of een lijst met maar één element is altijd goed gesorteerd.

Alfabetisch heeft het volgende prototype:

bool Alfabetisch(vector woorden);

Schrijf voor Alfabetisch de volgende unit tests en zet ze in de functie AlfabetischTest:

Uiteindelijk moet je twee bestanden opleveren.

Je mag bij het programmeren van de functies ondersteunende functies schrijven. Zet deze functies in Alfabetisch.cpp. Je hoeft ze niet op te nemen in het headerbestand omdat ze van buitenaf niet aangeroepen hoeven worden. Houd je bij het programmeren aan de algemene stijlregels.

Zet de twee bestanden in één zipbestand voordat je ze in Leo zet.

Ontcijfer

De functie Ontcijfer verandert alle letters in de opgegeven string door de letters die daaraan voorafgaan in het alfabet. Dus b = a, c = b, d = c, enz. Speciaal geval: a = z. Alle niet-letter tekens (dus ook cijfers) blijven zoals ze zijn. Bovendien blijven hoofdletters hoofdletters en kleine letters blijven kleine letters. Ontcijfer geeft het ontcijferde woord terug.

Tip: een variabele van het type char bevat precies één letter. Zo'n letter kun je aangeven tussen enkele aanhalingstekens - bijvoorbeeld 'A' - maar ook als cijfer - bijvoorbeeld 65. De cijfers komen overeen met de ASCII-codes van de letters.

Ontcijfer heeft het volgende prototype:

string Ontcijfer(string woord);

Schrijf voor Ontcijfer de volgende unit tests en zet ze in de functie OntcijferTest:

Uiteindelijk moet je twee bestanden opleveren.

Je mag bij het programmeren van de functies ondersteunende functies schrijven. Zet deze functies in Ontcijfer.cpp. Je hoeft ze niet op te nemen in het headerbestand omdat ze van buitenaf niet aangeroepen hoeven worden. Houd je bij het programmeren aan de algemene stijlregels.

Zet de twee bestanden in één zipbestand voordat je ze in Leo zet.

VerwijderdeKlinkers

De functie VerwijderdeKlinkers vergelijkt twee opgegeven woorden door te kijken of het ene woord gelijk is aan het andere woord als de klinkers eruit worden gehaald. De eerste parameter is het volledige woord, dus met klinkers. De tweede parameter is een woord zonder klinkers. Als de tweede parameter klinkers bevat, mislukt de vergelijking. VerwijderdeKlinkers geeft true terug als de vergelijking slaagt en false als dat niet zo is. Niet-lettertekens moeten in beide woorden hetzelfde zijn wil de vergelijking slagen. Met andere woorden, niet-lettertekens worden gezien als medeklinkers.

VerwijderdeKlinkers heeft het volgende prototype:

bool VerwijderdeKlinkers(string woordMetKlinkers, string woordZonderKlinkers);

Schrijf voor VerwijderdeKlinkers de volgende unit tests en zet ze in de functie VerwijderdeKlinkersTest:

Uiteindelijk moet je twee bestanden opleveren.

Je mag bij het programmeren van de functies ondersteunende functies schrijven. Zet deze functies in VerwijderdeKlinkers.cpp. Je hoeft ze niet op te nemen in het headerbestand omdat ze van buitenaf niet aangeroepen hoeven worden. Houd je bij het programmeren aan de algemene stijlregels.

Zet de twee bestanden in één zipbestand voordat je ze in Leo zet.