Menu de tres opciones, que rellena un vector, lo ordena por metodo Burbuja y Quicksort (compara sus tiempos), y lo vuelve a generar cuantas veces se necesite experimentar.
uses crt,dos; const max=10; type vector=array [1..max] of integer; var opc:char; c:integer; n:integer; qa,ba:vector; generado:integer; bh1,bm1,bs1,bms1:word; bh2,bm2,bs2,bms2:word; qh1,qm1,qs1,qms1:word; qh2,qm2,qs2,qms2:word; procedure mostrar(arreglo:vector); var c:integer; x,y:integer; begin clrscr; x:=1; y:=1; for c:=1 to max do begin gotoxy(x,y); writeln(arreglo[c]); if y=23 then begin if (x<80)AND(x>75) then begin gotoxy(1,24);write('Presiona una tecla para continuar'); readkey; clrscr; x:=1; y:=1; end else begin x:=x+4; y:=1; end; end else begin y:=y+1; end; end; end; procedure quickredit(ini,fin:integer; var pos:integer); var izq,der,aux:integer; band:boolean; begin izq:=ini; der:=fin; pos:=ini; band:=true; while band=true do begin while (qa[pos]<=qa[der]) and (pos<>der) do der:=der-1; if pos=der then band:=false else begin aux:=qa[pos]; qa[pos]:=qa[der]; qa[der]:=aux; pos:=der; while (qa[pos]>=qa[izq]) and (pos<>izq) do izq:=izq+1; if pos=izq then band:=false else begin aux:=qa[pos]; qa[pos]:=qa[izq]; qa[izq]:=aux; pos:=izq; end; end; end;{while} end; procedure quickit (v:vector; n:integer); var top,ini,fin,pos:integer; pmay,pmen:vector; begin top:=1; pmen[top]:=1; pmay[top]:=n; while top>0 do begin ini:=pmen[top]; fin:=pmay[top]; top:=top-1; quickredit(ini,fin,pos); if ini<(pos-1) then begin top:=top+1; pmen[top]:=ini; pmay[top]:=pos-1; end; if fin>(pos+1) then begin top:=top+1; pmen[top]:=pos+1; pmay[top]:=fin; end; end;{while} end; procedure qsort(arreglo:vector); begin quickit(arreglo,max); for c:=1 to max do begin ba[c]:=arreglo[c]; qa[c]:=arreglo[c]; end; {mostrar(arreglo);} end; procedure bsort(arreglo:vector); var c1,c2,aux:integer; begin for c1:=1 to max do for c2:=max downto c1 do if arreglo[c2]>arreglo[c2+1] then begin aux:=arreglo[c2]; arreglo[c2]:=arreglo[c2+1]; arreglo[c2+1]:=aux; end; for c:=1 to max do begin ba[c]:=arreglo[c]; qa[c]:=arreglo[c]; end; {mostrar(arreglo);} end; begin generado:=0; repeat clrscr; writeln('1.- Generar'); writeln('2.- Ordenar'); writeln('3.- Ver arreglo'); opc:=readkey; case ord(opc) of 49: begin clrscr;writeln('Opcion 1 - Generar'); for c:=1 to max do begin randomize; ba[c]:=random(999); qa[c]:=ba[c]; end; mostrar(ba); generado:=1; readkey; end; 50: begin clrscr;writeln('Opcion 2 - Ordenar'); if generado=1 then begin gettime(bh1,bm1,bs1,bms1); bsort(ba); gettime(bh2,bm2,bs2,bms2); gettime(qh1,qm1,qs1,qms1); qsort(qa); gettime(qh2,qm2,qs2,qms2); writeln('Bubble sort: ',bh1,':',bm1,':',bs1,':',bms1,' -> ',bh2,':',bm2,':',bs2,':',bms2); writeln('Quick sort: ',qh1,':',qm1,':',qs1,':',qms1,' -> ',qh2,':',qm2,':',qs2,':',qms2); end else begin writeln('No hay vector generado'); end; readkey; end; 51: begin clrscr;writeln('Opcion 3 - Ver arreglo'); if generado=1 then mostrar(ba) else writeln('No hay vector generado'); readkey; end; end; until ord(opc)=27; end. { 27 ESC 50 2 49 1 }
Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.
Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:
- Si es lenguaje C [c]Código en C[/c]
- Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].
De esta manera el código coloreas el código.
Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.
¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)