Page 1 of 3

Portfolio opdracht 1 : Sorteeralgoritmen

Posted: Fri Oct 21, 2005 8:15 pm
by Shinta
Ter controle van je eigen werkje (ik herhaal : TER CONTROLE), gelieve deze code dus niet te gebruiken om zelf op te sturen en zo ons beide te kl*ten.
De code is illustratief voor het gebruik van de procedures, lay-out en commentaar.

Sorts.Tool :

Code: Select all

- Sorts.Tool
(*
	Auteur : Kristof Overdulve
	Datum : 21/10/2005
Werkwijze : In dit programma gaan we een array sorteren aan de hand van een Insertion Sort algoritme, beschreven in de opgave van de opdracht. Om dit te verwezenlijken maken we gebruik van de reeks bestaande procedures "LeesRij" en "DrukRij" uit de module "Sorts.Mod" die respectievelijk dienen om getallen in te lezen en om ze af te drukken. We creëren zelf de procedure "InsertionSort" die het algoritme om de arrays te sorteren beschrijft en "Insertion" die de verschillende benodigde procedures oproept en er waardeparameters aan toekent.
*)

Builder.Compile \2wvs
	OutExt.Mod
	Sorts.Mod
~

Builder.Compile \f*

System.Free
	OutExt.Mod
	Sorts.Mod
~

Sorts.Insertion 
	1.2 
	45.3 
	0.33 
	5.21 
	8.2 
	-3.5 
	2.35 
	7.88 
	5.12 
	6.23 
	2.36 
	55.8 
	-5.66 
	0.0 
	6.66 
	3.2
~
Sorts.Mod :

Code: Select all

MODULE Sorts;

(* 
  Doel : Reeks Portfolio opdracht 2 : Sorteeralgoritmes :
Vorm de module Sorts.MOD om zodat de Insertion Sort geimplementeerd wordt. 
  Auteur : Kristof Overdulve
  Datum : 21/10/2005
*)

  IMPORT
    In, OutExt;
    
  CONST
    max = 25;
    
  TYPE
    GetallenRij = ARRAY max OF REAL;


  PROCEDURE LeesRij(VAR x: GetallenRij; VAR n: INTEGER);
  (*
  	Omschrijving : Leest een aantal getallen in.
  	Parameters :
  		x : De array waarin de getallen opgeslagen zijn.
  		n : Het aantal getallen in die array.
  	Returntype : -
  	Algoritme : -
  *)  		
  
    
 	VAR
      i: INTEGER;
    
  BEGIN
    In.Open;
    i := 0;
    WHILE In.Done DO
      In.Real(x[i]);
      INC(i);
    END;
    n := i - 1;
  END LeesRij;


  PROCEDURE DrukRij(x: GetallenRij; n: INTEGER; s: ARRAY
									OF CHAR);
  (*
  	Omschrijving : Drukt de array af.
  	Parameters :
  		x : De array waarin de getallen opgeslagen zijn.
  		n : Het aantal getallen in die array.
  		s : De naam van het gebruikte sorteeralgoritme.
  	Returntype : -
  	Algoritme : -
  *)  		
  
    VAR
      i: INTEGER;

  BEGIN
OutExt.String("De geordende array "); OutExt.String(s); OutExt.String(" is: ");
    	OutExt.Ln;
    	FOR i := 0 TO n - 1 DO
      OutExt.RealFix(x[i], 13, 5);
      OutExt.Ln;
    	END;
  END DrukRij;
  
  
  PROCEDURE InsertionSort(VAR a : GetallenRij; n : 
									INTEGER);
  (*
Omschrijving : Sorteert een gegeven aantal getallen in een array.
  	Parameters :
  		a : De array waarin de getallen opgeslagen zijn.
  		n : Het aantal getallen in die array.
  	Returntype : -
  	Algoritme : InsertionSort sorteeralgoritme
  *)  		
  
  	VAR
  		index, index2 : INTEGER;
  		hulpvariabele : REAL;
  
  BEGIN
  	FOR index := 1 TO n DO
  		hulpvariabele := a[index];
  		index2 := index;
WHILE ((index2 > 0) & (a[index2-1] > 
	  hulpvariabele)) DO 
  			a[index2] := a[index2-1];
  			DEC(index2);
  		END;
  		a[index2] := hulpvariabele;
  	END;
  END InsertionSort;
  
  
  PROCEDURE Insertion*;
  (*
  	Omschrijving : Dit is de hoofdprocedure.
  	Parameters : -
  	Returntype : -
  	Algoritme : -
  *)  		
  
  	VAR
  		getallen : GetallenRij;
  		aantalGetallen : INTEGER;
  
  BEGIN
  	LeesRij(getallen, aantalGetallen);
  	InsertionSort(getallen, aantalGetallen);
  	DrukRij(getallen, aantalGetallen, "(InsertionSort)");
  END Insertion;


BEGIN
  OutExt.Open;
  OutExt.Clear;
END Sorts.

M.V.G. Kristof

Posted: Fri Oct 21, 2005 8:17 pm
by j0lle
gij ze gene juste jong :-)
nice work!

Posted: Fri Oct 21, 2005 8:42 pm
by Shinta
XenoPhobian wrote:gij ze gene juste jong :-)
nice work!
euh ja :wink: eerst ff de sorteeralgoritme zelf opgezocht op google en dan omgezet van C naar Oberon :oops: .

Posted: Fri Oct 21, 2005 8:54 pm
by Nick
Wrom zouk iet kopiëre dak ni kan ... ;)

Da zou pas achterlijk zen

Posted: Fri Oct 21, 2005 8:55 pm
by j0lle
Shinta wrote:
XenoPhobian wrote:gij ze gene juste jong :-)
nice work!
euh ja :wink: eerst ff de sorteeralgoritme zelf opgezocht op google en dan omgezet van C naar Oberon :oops: .
bwah das een goei manier :p
als ge schemas moet ebbe van die sorteeralgoritmes.. :-|

en nick: idd :-)

Posted: Fri Oct 21, 2005 8:56 pm
by Norfolk
Goed!
Ik heb het nog net iets anders gedaan, maar komt op hetzelfde neer.

Posted: Mon Oct 24, 2005 8:19 pm
by Nickman
Heb de oefening ook afgemaakt ;).
Is eigenlijk niet zo moeilijk (als oberon wil meewerken :D)
greetz ;)

Posted: Mon Oct 24, 2005 9:22 pm
by j0lle
das idd een makkelijke opdracht
maar dan nog... zoekalgoritmen.. blah

Posted: Mon Oct 24, 2005 10:02 pm
by EagleEye812
Ik heb mijne me 2 for lussen gedaan ipv me for en while :x

maar t macheert wel :p

Posted: Mon Oct 24, 2005 11:03 pm
by Shinta
EagleEye812 wrote:Dit is mijne volledige code daarvan

Code: Select all

  PROCEDURE Sorteer*;
	(*
		Description: Sorteren via het insertion sort algoritme.
		Parameters: -
		Returntype: -
		Algorithm: rij inlezen, elk element (beginnend vanaf het tweede element)
				   met het volgende vergelijken en zo sorteren zoals beschreven
				   in het pdf bestand.
	*)
  	VAR
  		rij : GetallenRij;
  		lengte : INTEGER;
  		i, x : INTEGER; (* lusvariabelen *)
  		j : INTEGER;
  BEGIN
  	LeesRij(rij, lengte);
  	FOR i := 1 TO (lengte - 1) DO
  		j := i;
  		FOR x := 1 TO i DO
  			IF rij[i] <= rij[i - j] THEN
  				Wissel(rij, i, (i - j));
  			END;
 	 		DEC(j);
 	 	END;
  	END;
  	DrukRij(rij, lengte, "via InsertionSort");
  END Sorteer;
kan het nog simpeler? want er gebruiken ier mensen 2x while en ik heb da me ne For gedaan :x

(ni overnemen aub :p)
No offense ma waar is jou LeesRij en DrukRij procedure ?? :wink:

Posted: Mon Oct 24, 2005 11:11 pm
by EagleEye812
Jah die staan al standaard in die Sorts.Mod da heb ik niet geschreven he, ge kunt die vinden op black board

LeesRij, DrukRij en Wissel stonden er al in en dat zijn geen sorteer algoritmen dus moet ik die niet verwijderen

Posted: Mon Oct 24, 2005 11:23 pm
by Arawn
:D

wanneer moe da afzijn?

Posted: Mon Oct 24, 2005 11:25 pm
by EagleEye812
Arawn wrote::D

wanneer moe da afzijn?
Let er op dat de opdracht ingeleverd wordt voor 23u55 op 7/11/2005.

Posted: Tue Oct 25, 2005 11:26 am
by Yo_rik
Mijn versie van de insertionsort gebruikt ook 2 FOR-lussen en geen hulpvariabelen :D !
Ik heb de procedures LeesRij en DrukRij ook wa aangepast, om de Code Conventions wa beter te volgen 8).
Eigenlijk ist helemaal ni moeilijk :wink:

Posted: Tue Oct 25, 2005 11:28 am
by Norfolk
Ik heb FOR met een WHILE in :)