Extra opgave over multidimensionale array's.

© Harry Broeders.

Deze pagina is bestemd voor studenten van de THRijswijk groepen EPm en EPv die de module SOPX1 volgen.

Deze opgave is afkomstig uit een oud tentamen.

Gegevens.

Een rooster kan met een twee dimensionale array worden weergegeven. De indices vormen de x en y coördinaten. Op dit rooster kan een driehoek worden "getekend" door de hoekpunten van de driehoek de waarde 1 te geven en de andere punten van het rooster de waarde 0.

Voorbeeld:
rooster[4,0]=0 rooster[4,1]=0 rooster[4,2]=0 rooster[4,3]=0 rooster[4,4]=0
rooster[3,0]=0 rooster[3,1]=0 rooster[3,2]=1 rooster[3,3]=0 rooster[3,4]=0
rooster[2,0]=0 rooster[2,1]=0 rooster[2,2]=0 rooster[2,3]=0 rooster[2,4]=0
rooster[1,0]=0 rooster[1,1]=1 rooster[1,2]=0 rooster[1,3]=0 rooster[1,4]=1
rooster[0,0]=0 rooster[0,1]=0 rooster[0,2]=0 rooster[0,3]=0 rooster[0,4]=0

Gegeven is het volgende hoofdprogramma:

#include <stdio.h>
#include <math.h>
#define AANTAL 5
int main() {
   int rooster[AANTAL][AANTAL];
   void invoerDriehoek(int c[AANTAL][AANTAL]);
   double omtrekDriehoek(int c[AANTAL][AANTAL]);

   invoerDriehoek(rooster);
   printf("De omtrek van de ingevoerde driehoek is: %.2lf", omtrekDriehoek(rooster));

   fflush(stdin);
   getchar();
   return 0;
}

Een voorbeeld van de uitvoer van dit programma is als volgt (de ingevoerde gegevens zijn blauw weergegeven):

Geef de x coordinaat (0 t/m 4) van punt 0: a
Je moet een getal invoeren!
1
Geef de y coordinaat (0 t/m 4) van punt 0: 1
Geef de x coordinaat (0 t/m 4) van punt 1: 1
Geef de y coordinaat (0 t/m 4) van punt 1: 1
Dit punt is al ingevoerd. Je moet 3 orginele punten invoeren!
Geef de x coordinaat (0 t/m 4) van punt 1: 2
Geef de y coordinaat (0 t/m 4) van punt 1: 3
Geef de x coordinaat (0 t/m 4) van punt 2: 4
Geef de y coordinaat (0 t/m 4) van punt 2: 1
De omtrek van de ingevoerde driehoek is: 8.06

Vraag.

Geef de implementatie van de functie invoerDriehoek en van de functie omtrekDriehoek.

Probeer eerst zelf om deze opgave te maken. Je kunt je eigen oplossing daarna vergelijken met mijn oplossing.

Opmerking achteraf.

Het gebruik van een 2 dimensionale array voor het opslaan van 3 punten is natuurlijk niet erg praktisch. In de praktijk zou het veel slimmer zijn om de drie hoekpunten op te slaan in een "gewone" array. Zie dit programma.