Pascal/Turbo Pascal - Ayuda con programa

   
Vista:

Ayuda con programa

Publicado por fernando fer__campos@hotmail.com (5 intervenciones) el 15/05/2012 04:43:41
Necesito ayuda con este codigo, el programa actualmente me pide el ingreso de 8 datos, luego los clasifica en paress e impares para luego sumarlos en grupos separados, para luego decirme cuales son mayoria, el problema esta en que actualmente me pide los numeros hasta que ingrese el numero 0 pero quiero que cuando se ingrese el octavo numero automaticamente empiece a correr los calculos ...


program paresipares;
uses
crt;
var
datonum : integer;
sumapar, sumaimpar : integer;
cuanpar, cuanimp : integer;
termina : boolean;
entrados : array[1..40] of integer;
t, i : integer;

procedure entradanumeros;
begin
writeln('Entrando 0 termina Entradas');
writeln;
termina := true;
i := 1;
while termina <> false do
begin
write('Numero : ');
readln(datonum);
if datonum <> 0 then
begin
entrados[i] := datonum;
i := i + 1;
end;
if datonum = 0 then
termina := false;
if termina = true then
begin
if datonum mod 2 > 0 then
begin
cuanimp := cuanimp + 1;
sumaimpar := sumaimpar + datonum;
end
else
begin
cuanpar := cuanpar + 1;
sumapar := sumapar + datonum;
end;
end;
end;
end;

begin
clrscr;
sumapar := 0;
sumaimpar := 0;
cuanpar := 0;
cuanimp := 0;
entradanumeros;
clrscr;
writeln('La sumatoria de Pares es : ',sumapar);
writeln('La sumatoria de impares es : ',sumaimpar);
writeln('La cantidad numeros pares es : ',cuanpar);
writeln('La cantidad numeros impares es : ',cuanimp);
if cuanpar > 4 then
writeln ('Los numeros pares son mayoria.')
else
writeln ('Los numeros impares son mayoria.');
writeln;
for t := 1 to i - 1 do
write(' ',entrados[t]);
writeln;
writeln('Pulsa [Enter]');
readln;
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

Ayuda con programa

Publicado por ramon (2072 intervenciones) el 15/05/2012 17:09:36
{Tu programa corregido mira como varia veras es sencillo}


program paresipares;
uses
crt;
var
datonum : integer;
sumapar, sumaimpar : integer;
cuanpar, cuanimp : integer;
termina : boolean;
entrados : array[1..40] of integer;
t, i : integer;

procedure entradanumeros;
begin
writeln('Entrando 0 termina Entradas');
writeln;
termina := true;
i := 1;
while termina <> false do
begin
write('Numero : ');
readln(datonum);
if datonum <> 0 then
begin
entrados[i] := datonum;
i := i + 1;
end;
if datonum = 0 then
termina := false;
if termina = true then
begin
if datonum mod 2 > 0 then
begin
cuanimp := cuanimp + 1;
sumaimpar := sumaimpar + datonum;
end
else
begin
cuanpar := cuanpar + 1;
sumapar := sumapar + datonum;
end;
end;
end;
end;

begin
clrscr;
sumapar := 0;
sumaimpar := 0;
cuanpar := 0;
cuanimp := 0;
entradanumeros;
clrscr;
writeln('La sumatoria de Pares es : ',sumapar);
writeln('La sumatoria de impares es : ',sumaimpar);
writeln('La cantidad numeros pares es : ',cuanpar);
writeln('La cantidad numeros impares es : ',cuanimp);
if cuanpar > 4 then
writeln ('Los numeros pares son mayoria.')
else
writeln ('Los numeros impares son mayoria.');
writeln;
for t := 1 to i - 1 do
write(' ',entrados[t]);
writeln;
writeln('Pulsa [Enter]');
readln;
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

Ayuda con programa

Publicado por Armando Fuenmayor patusnalgason@hotmail.com (22 intervenciones) el 15/05/2012 18:05:19
(******************************************************************************)
(* Necesito ayuda con este codigo, el programa actualmente *)
(* me pide el ingreso de 8 datos, luego los clasifica en paress *)
(* e imparespara luego sumarlos en grupos separados, para luego *)
(* decirme cuales son mayoria, el problema esta en que actualmente *)
(* me pide los numeros hasta que ingrese el numero 0 pero quiero *)
(* que cuando se ingrese el octavo numero automaticamente empiece *)
(* a correr los calculos ... *)
(* realizado: Armando Fuenmayor *)
(* correo patusnalgason@hotmail.com *)
(******************************************************************************)

program pareimpar(input,ouput);
uses crt;
const
maximo = 8;
type
listaentero = array[1..maximo] of Integer;
var
vector : listaentero;
i,k,canpar, canimpar, sumapar, sumaimpar : integer;

(*******************************************)
(* determina si un numero es par o no *)
(*******************************************)
function espar(xx: integer):boolean;
var
verdad: boolean;
begin
verdad := false;
if ((xx mod 2) = 0) then
begin
verdad := true ;
end;
espar := verdad ;
end;

(**************************************)
(* Ingresa los datos en el arreglo *)
(*************************************)
procedure ingresardatos;
begin
for i := 1 to maximo do
begin
gotoxy(25,10);
write(i, ' Ingrese el Numero: ');
readln(vector[i]);
clrscr;
end;
end;

(***************************************)
(* Muestra los numeros del arreglo *)
(***************************************)
procedure mostrar;
begin
gotoxy(5,7);
write('Los numeros que Ud. introdujo fueron: ');
for i := 1 to maximo do
begin
inc(k,3);
gotoxy(5+k,10);
write(vector[i]);
end;
end;

procedure cuenta(xx:listaentero;var supar,suimpar,
storiapar, storiaimpar:integer);
var
verdad: boolean;
y , cpar, cimpar, sumatoriapar , sumatoriaimpar: integer;
begin
cpar := 0;
cimpar := 0;
sumatoriapar := 0;
sumatoriaimpar := 0;

for y := 1 to maximo do
begin
if espar(xx[y]) then
begin
inc(cpar);
sumatoriapar := sumatoriapar + xx[y];
end
else
begin
inc(cimpar);
sumatoriaimpar := sumatoriaimpar + xx[y];
end
end;
supar := cpar;
suimpar := cimpar;
storiapar := sumatoriapar;
storiaimpar := sumatoriaimpar;
end;


(* Programa principal *)
begin
clrscr;
ingresardatos;
mostrar;
cuenta(vector,canpar, canimpar,sumapar,sumaimpar);

writeln;
writeln;
write(' La cantidad de pares es: ',canpar);
writeln;
write(' La sumatoria de los pares es: ',sumapar);
writeln;
write(' La cantidad de impares es: ', canimpar);
writeln;
write(' La sumatoria de los impares es: ',sumaimpar);
writeln;
writeln;
if (canpar = canimpar) then
begin
write('la cantidad de numeros pares es igual a los impares');
end;

if (canpar > canimpar) then
begin
write('la cantidad de pares es mayor ')
end;
if (canpar < canimpar) then
begin
write('la cantidad de impares es mayor')
end;

readln;
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

Ayuda con programa

Publicado por ramon (2072 intervenciones) el 15/05/2012 20:01:54
Que te pasa ami me marcha bien excepto esto que sale todo junto.

1
2
3
4
5
6
7
8
9
10
11
procedure mostrar;
begin
gotoxy(5,7);
write('Los numeros que Ud. introdujo fueron: ');
for i := 1 to maximo do
begin
inc(k,3);  debes de quitarlo y poner [ gotoxy(5 + (i * 4),10) ] y saldrá bien.
gotoxy(5+k,10);
write(vector[i]);
end;
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