Autor Tema: ayuda en pascal con bubble o sorting  (Leído 2854 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
ayuda en pascal con bubble o sorting
« : noviembre 20, 2006, 05:24:04 pm »
bueno tengo un problema, quiero ordenar los numeros en el array pero no  logro ordenarlos, no se porq, tambien no entiendo la el NUMBEROFELEMENTSINUSO,  q part seria si un array nuevo o solo un type inteer o byte mas. aki tengo el codigo q llego

Código: [Seleccionar]
PROGRAM pruebasorting;

USES CRT;

TYPE

thearraytype = array [1..10] of byte;


VAR

currentindex, leftmostindex, locationoflowestvalue : integer;
lowestvalue : integer;
thearray : thearraytype;
numberofelementsinuse : integer;

PROCEDURE sorting (VAR thearray : thearraytype;
                       numberofelementsinuse : integer);

VAR

currentindex, leftmostindex, locationoflowestvalue : integer;
lowestvalue : integer;

BEGIN


 IF (numberofelementsinuse >= 2) THEN
    BEGIN
       leftmostindex := 1;

       REPEAT
          lowestvalue := thearray[leftmostindex];
          locationoflowestvalue := leftmostindex;

          FOR currentindex := leftmostindex + 1 TO numberofelementsinuse DO

             IF (thearray[currentindex] < lowestvalue) THEN
                BEGIN
                   lowestvalue := thearray[currentindex];
                   locationoflowestvalue := currentindex;
                END;

          thearray[locationoflowestvalue] := thearray[leftmostindex];
          thearray[leftmostindex] := lowestvalue;
          INC (leftmostindex);

       UNTIL  (leftmostindex = numberofelementsinuse);

    END;

 END;

 BEGIN

 thearray[1]  :=  1;
 thearray[2]  :=  7;
 thearray[3]  :=  8;
 thearray[4]  :=  6;
 thearray[5]  := 10;
 thearray[6]  := 15;
 thearray[7]  := 45;
 thearray[8]  := 23;
 thearray[9]  :=  2;
 thearray[10] := 14;

 sorting (thearray, numberofelementsinuse);

 END.

y este es su algoritmo

Citar
SELECTING SORT

BASIC: go through remainder, select lowest value, switch with leftmost, elimate the leftmost.


ALGORITHM

 
1- Is the numberofelementsinuse > 1 ?
   yes - step 2
   no  - quit

2- set leftmostindex to 1


3- set lowestvalue to thearray[leftmostindex]
   set locationoflowestvalue to leftmostindex
   set currentindex to leftmostindex + 1

4- Is thearray[currentindex] < lowestvalue?
   yes - set lowestvalue to thearray[currentindex]
         set locationoflowestvalue to currentindex

5- Is currentindex < numberofelementsinuse
   yes - increase currentindex
         repeat at step 4
   no  - set thearray[locationoflowestvaule] to thearray[leftmostindex] 
         set thearray[leftmostindex] to lowestvalue
         Is leftmostindex = numberofelementsinuse?
         yes - quit
         no  - repeat at step 3

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ayuda en pascal con bubble o sorting
« Respuesta #1 : noviembre 20, 2006, 06:34:48 pm »
A ver... de esa logica de programa hiciste ese codigo, o es que queres entender ese codigo?.

No se si soy solo yo, pero esta un poco confusa la forma en que has redactado el problema.

Desconectado alexmansv

  • Sv Jr.
  • **
  • Mensajes: 86
  • \|/ AlExMaNsV \|/ working 2006
    • \|/---AlExMaNsV---\|/  [en] Hi5
Re: ayuda en pascal con bubble o sorting
« Respuesta #2 : diciembre 01, 2006, 01:03:30 pm »
1- Mira segun entiendo el "elementsinuse" es el numero que te indica cuantas posiciones tiene el vector o sea el limite del mismo

2- segun el programa que has puesto lo que se ejecuta es

Código: [Seleccionar]
BEGIN

 thearray[1]  :=  1;
 thearray[2]  :=  7;
 thearray[3]  :=  8;
 thearray[4]  :=  6;
 thearray[5]  := 10;
 thearray[6]  := 15;
 thearray[7]  := 45;
 thearray[8]  := 23;
 thearray[9]  :=  2;
 thearray[10] := 14;

 sorting (thearray, numberofelementsinuse);

 END.
y  en todo eso en ningun lado le asignas un valor a numberofelementsinuse por lo tanto al llegar a la funcion sorting no ejecuta nada porque no pasa la condicion
Código: [Seleccionar]
IF (numberofelementsinuse >= 2) THEN
Por consiguente lo que tenes que hacer es asignarle un valor a numberofelementsinuse antes de llamar a la funcion sorting sino no te va a funcionar   ;)
En este caso seria

Código: [Seleccionar]
BEGIN

 thearray[1]  :=  1;
 thearray[2]  :=  7;
 thearray[3]  :=  8;
 thearray[4]  :=  6;
 thearray[5]  := 10;
 thearray[6]  := 15;
 thearray[7]  := 45;
 thearray[8]  := 23;
 thearray[9]  :=  2;
 thearray[10] := 14;

 numberofelementsinuse:=10;

 sorting (thearray, numberofelementsinuse);

 END.

Y asi no deberia darte ningun problema.  :thumbsup:
Because no one is stronger than we all together focused into one objective.

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: ayuda en pascal con bubble o sorting
« Respuesta #3 : diciembre 01, 2006, 01:13:03 pm »
si gracias man ese era el problema, lo arregle y luego me pusieron a hacer el quicksort y el selection sort, ahora estoy con el shell sort, pero ya mas oamenos le voy entendiendo.

gracias.

salu2

Desconectado alexmansv

  • Sv Jr.
  • **
  • Mensajes: 86
  • \|/ AlExMaNsV \|/ working 2006
    • \|/---AlExMaNsV---\|/  [en] Hi5
Re: ayuda en pascal con bubble o sorting
« Respuesta #4 : diciembre 01, 2006, 01:17:36 pm »
Orale dale que esas ondas sirven un monton. ;)

Me acuerdo cuando nos ponian a hacer eso en la U

"Ah años de estructuras de datos" jijiji  :thumbsup:

Because no one is stronger than we all together focused into one objective.

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: ayuda en pascal con bubble o sorting
« Respuesta #5 : diciembre 01, 2006, 01:19:49 pm »
si ahora lo q tengo q hacer tambien es un calendario, pero no lo pueo hacer ya tengo 3 semans en esa cosa y no paso para imprimir los dias ya em pantalla no se como se hace y lo tengo q entraegar el lunes

Desconectado alexmansv

  • Sv Jr.
  • **
  • Mensajes: 86
  • \|/ AlExMaNsV \|/ working 2006
    • \|/---AlExMaNsV---\|/  [en] Hi5
Re: ayuda en pascal con bubble o sorting
« Respuesta #6 : diciembre 01, 2006, 01:29:26 pm »
Ojala que no necesites hacerlo asi bien grafiquito y todo a lo outlook :wacko:

Mira pero como asi que un calendario si podes da un poco mas de especificaciones porque puede ser que alguien  se anime o sepa algo  :)
Because no one is stronger than we all together focused into one objective.