Pascal/Turbo Pascal - Problema con funcion

 
Vista:
sin imagen de perfil

Problema con funcion

Publicado por Giuliano (3 intervenciones) el 01/11/2011 12:38:44
Hola amigos de la comunidad. Tengo un problema con turbo pascal. Cree una funcion en un procedimiento pero al ejecutar no funciona porke da siempre 0, no c que podra ser.No les dejo el programa porke no puedo copiar lo ke esta en pascal a la web.
Ademas en el ordenamiento me muestra los subindices, luego de cargar el vector y pedirle que lo ordene muestra 1,2,3,4 en vez del contenido.
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

Problema con funcion

Publicado por ramon (2158 intervenciones) el 01/11/2011 18:28:16
Las funciones dentro de un procedimiento solo las puede leer el propio procedimiento
por ejemplo:
procedure letra;
funcion cual : char;
var
tecla : char;
begin
tecla := readkey;
cual := tecla;
end;
begin
write(cual);
end;

El valor de cual solo lo puede leer letra desde otro procedimiento o desde el programa no.
si deseas que te ayude tendrás que dejarme ver el programa sino no puedo saber como
esta desarrollado el procedimiento y la función.

Carga el archivo con el bloc de notas de windows y lo podrás enviar.
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
sin imagen de perfil

Problema con funcion

Publicado por Giuliano (3 intervenciones) el 01/11/2011 20:31:07
program practico;
uses crt,dos;
type
vec_text=array [1..4] of string [15];
vec_num=array [1..4] of real;

var
vend,ape:vec_text;
saldo:vec_num;
x,y,n:integer;
dolar,importe,cambio:real;
opcion:char;
aux1:string[15];
FUNCTION dolares (pesos,tc:real):real;
begin
dolares:=pesos /tc;
end;

procedure cargar;
var
x:integer;
begin
clrscr;

writeln ('Ingrese nombre del vendedor');

for x:=1 to 4 do
readln (vend[x]);

writeln ('Ingrese saldo del vendedor');
for x:=1 to 4 do
readln (saldo[x]);
readkey;
end;
procedure ordenar;
var
x,y,n:integer;

begin
clrscr;
n:=4;
for x:=1 to n-1 do
for y:= x+1 to n do
If ape[x]>ape[y] then
begin
aux1:=ape[x];
ape[x]:=ape[y];
ape[y]:=aux1;
end;
writeln ('Los nombres de los clientes son:');
for x:=1 to n do
writeln (x,ape[x]);
readkey;
end;

procedure convertir;
Begin
clrscr;
for x:=1 to 4 do
dolar:=dolares(importe ,4 );
writeln('SON',dolar:0:2,'DOLARES');
readln;
READKEY;
END;
begin
clrscr;
repeat
opcion:= ' ';
clrscr;
writeln ('menu principal');
writeln ('opcion 1:cargar');
writeln ('opcion 2:ordenar');
writeln ('opcion 3: convertir');
writeln ('opcion 4: salir');
writeln ('Ingrese la opcion que desee');
readln (opcion);
case opcion of
'1': cargar;
'2': ordenar;
'3': convertir;
'4': exit;
else writeln ('opcion incorrecta');
readkey;
end;
until opcion='s';
readkey;
end.

ese es el programa, gracias por responder
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

Problema con funcion

Publicado por ramon (2158 intervenciones) el 05/11/2011 13:33:41
{Revisa los cambios echos}

program practico;
uses
crt, dos;
type
vec_text = array [1..4] of string [15];
vec_num = array [1..4] of real;

var
vend, ape : vec_text;
saldo : vec_num;
x, y, n : integer;
dolar, importe, cambio : real;
opcion : char;
aux1 : string[15];

FUNCTION dolares (pesos, tc : real) : real;
begin
dolares := pesos / tc;
end;

procedure cargar;
var
x : integer;
begin
clrscr;
writeln ('Ingrese nombre del vendedor');
for x := 1 to 4 do
begin
write(x,' : '); readln(vend[x]);
end;
writeln ('Ingrese saldo del vendedor');
for x := 1 to 4 do
begin
write(x,' : ');readln(saldo[x]);
end;
readkey;
end;

procedure ordenar;
var
x, y, n : integer;
begin
clrscr;
n := 4;
for x := 1 to n - 1 do
for y := x + 1 to n do
If vend[x] > vend[y] then
begin
aux1 := vend[x];
vend[x] := vend[y];
vend[y] := aux1;
end;
writeln ('Los nombres de los clientes son : ');
for x := 1 to n do
writeln (x,' = ',vend[x]);
readkey;
end;

procedure convertir;
Begin
clrscr;
for x := 1 to 4 do
begin
dolar := dolares(saldo[x] ,4 );
writeln('SON ',dolar:0:2,' DOLARES');
end;
READKEY;
END;

begin
clrscr;
repeat
opcion:= ' ';
clrscr;
writeln ('menu principal');
writeln ('opcion 1 : cargar');
writeln ('opcion 2 : ordenar');
writeln ('opcion 3 : convertir');
writeln ('opcion 4 : salir');
writeln ('Ingrese la opcion que desee');
opcion := readkey;
case opcion of
'1': cargar;
'2': ordenar;
'3': convertir;
'4': exit;
else
writeln ('opcion incorrecta');
readkey;
end;
until opcion = 's';
readkey;
end.
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