Pascal/Turbo Pascal - HELP!!!!

 
Vista:

HELP!!!!

Publicado por Nickolas (2 intervenciones) el 18/06/2006 00:21:12
TENGO QUE HACER LOS SIGUIENTE...
Diseñar un programa que permita cargar un arreglo de 100 valores enteros elegidos al azar por la función RANDOM(). Una vez cargados los datos debe elegir un pivote o elemento central de acuerdo a alguna de las siguientes reglas:
 pivote = (n1 + nk) / 2, donde k es el tamaño máximo del arreglo
 pivote = , donde k es el tamaño máximo del arreglo
 pivote = nk/2 , donde k es el tamaño máximo del arreglo
El usuario debe tener la posibilidad de elegir con que pivote desea trabajar.
Una vez elegido el pivote se debe considerar el arreglo dividido éste a la "mitad". A continuación el programa buscará un elemento en la sub-lista de la izquierda que sea mayor que el pivote y un elemento en la sub-lista de la derecha que sea menor que el pivote y los intercambiará. Este procedimiento se continuará hasta que no se encuentren elementos para intercambiar.
ESTO ES LO QUE HE LOGRADO...EL PROGRAMA FUNCIONA PERFECTO EXCEPTO PARA ALGUNOS VALORES COMO EL 4.00 ( ME PARACE) QUE TE AGREGA CEROS QUE NO VAN O NO TOMA EN CUENTA CIERTO NUMEROS...ALGUIEN ME PUEDE DECIR COMO SOLUCIONARLO...PARA MI EL ERROR ESTA EN EL PROCEDURE INTERCAMBIO... GRACIAS....EL PROGRAMA IMPRIME PASO POR PASO PARA QUE SE VEA EL ERROR..

Program Entregable2;
uses wincrt;
const n=10;
type vector = array [1..n] of integer;
var Arre : vector; a,b,c: real; op: char;
procedure imprimir (Ar:vector;pivot:real);
var i: integer;
begin
for i:=1 to n do
write (Ar[i],' ');
writeln;
writeln (pivot:2:2);
end;
procedure cargar (var arreglo : vector); {carga el arreglo con valores hasta 100}
var j : integer;
begin
randomize;
for j:=1 to n do
arreglo[j] := Random (10);
end;
function pivo2 (arreglo : vector):real;
var i : integer; acum: real;
begin
acum := 0;
for I := 1 to n do
acum := acum + arreglo[i];
pivo2 := acum / n;
end;
function pivo1 (arreglo : vector) : real;
begin
pivo1:= (arreglo[1] + arreglo[n]) / 2;
end;
function pivo3 (arreglo : vector) : integer;
begin
pivo3 := arreglo[n div 2];
end;
procedure intercambio (arreglo : vector; piv : real);
var j, i, aux1, aux : integer;
begin
imprimir (arreglo,piv);
j := n div 2;
for i := 1 to (N div 2) do {compara el arreglo con el pivote elegido}
if arreglo[i] > piv then
begin
aux := arreglo[i];
repeat
j:=j+1;
if arreglo[j] < piv then
begin
aux1 := arreglo[j];
arreglo[i] := aux1;
arreglo[j]:= aux;
end
else
arreglo[i] := arreglo[i];
imprimir (arreglo,piv);
readln;
until (aux1 < piv) or (j=N);
end;
writeln;
imprimir (arreglo,piv);
end;
BEGIN
cargar (Arre);
A := pivo1(arre);
B := pivo2(arre);
C := pivo3(arre);
repeat
writeln ('****---MENU DE OPCIONES---****');
writeln ('1.pivote =(n[1]+n[k])/2, donde k es el tamaño máximo del arreglo');
writeln ('2.pivote : promedio del arreglo');
writeln ('3.pivote = n[k/2], donde k es el tamaño máximo arreglo');
writeln ('S.SALIR');
readln (op);
case (op) of
'1':intercambio (arre , a);
'2':intercambio (arre , b);
'3':intercambio (arre , c);
end;
until upcase (op) = 'S' ;
END.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:HELP!!!!

Publicado por ee (1 intervención) el 06/07/2007 18:25:37
esta mal el sotono no mambrula
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:HELP!!!!

Publicado por jeffersson duque (1 intervención) el 27/08/2007 17:56:58
Elaborar un programa en Turbo Pascal que permita el ingreso a un arreglo de 15 posiciones de valores aleatorios entre 0 y 100, luego del ingreso de los datos se debe de mostrar los mismos en pantalla y calcularles el promedio, determinar en que posición se encuentra el más grande y el más pequeño de ellos mostrando estos tres datos en pantalla (Promedio, posición del mayor, posición del menor). Para finalizar este programa se deben mostrar en pantalla todos aquellos valores que sean menores que el promedio y contar cuantos valores no se han mostrado por que son mayores que el promedio, mostrando este último dato en la pantalla.
Sugiero que para encontrar el mayor y el menor de los números consideren al primer valor del arreglo como el mas grande o mas pequeño hasta que no se demuestre lo contrario por medio de un recorrido completo del arreglo. Si encontraran que otro valor del arreglo es mayor o menor se debe de cambiar de valor la variable que almacena la posición o índice en donde se encuentra este valor.
En cuanto a mostrar los datos menores que el promedio el método mas adecuado es un recorrido del arreglo estableciendo comparaciones simples que permitan determinar si el valor contenido en el arreglo es o no menor que el valor promedio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar