Ayuda con arreglos en pascal

Necesito un programa que dado un numero N que te de el usuario... El programa haga
A. Lea el arreglo
B. Imprimir el arreglo
C. Calcular la suma de los numero del arreglos
D. Calcular la media de los valores del arreglo
E. Calcular la cantidad de números pares e impares
F. Calcular cuantos números son mayores a la media y cuantos son menores a la media
G. Obtener un nuevo arreglo, tal que sus elementos sean la diferencia de los elementos sucesivos del arreglo dado
H. Transformar dicho arreglo, de tal forma que en las posiciones pares contengan un valor POR dado
por ahora yo llegue hasta la E, porque me quede estancado, es decir, mira mi programa todo corre bien hasta que llegas a la parte que tienen que aparecer los numero impares y pares
program matrices;
uses crt;
var
vec: array [1..99999999] of integer;
i,n,suma,CONT:integer;
media:real;
begin
writeln ('de cuanto quiere que sea el arreglo');
readln (n);
writeln ('introduzca los valores');
for i:=1 to n do
begin
readln (vec );
end;
for i:=1 to n do
begin
writeln ('los valores del arreglo en la posicion ', i,' es', vec );
end;
for i:=1 to n do
suma:=suma + vec ;
writeln ('la suma del arreglo es ',suma);
media:=suma /n;
writeln ('la media es ', media:10:10);
for i:=1 to n do
if (vec mod 2) <> 0 then
CONT:=CONT +1;
writeln ('hay ',CONT,' numero impares'); {hasta aqui todo esta bien,pero en la siguiente condicion es donde se me cae el programa}
for i:=1 to n do
if (vec mod 2) = 0 then
CONT:=CONT+1; {aqui ya probe cambiando la variable a CONT1 o inicianisandola en 0 pero igual no me da, que es lo que tenfgo malo???}
writeln ('hay ',CONT,' numero pares');
{depues sigue el resto del programa pero todavia no lo he hecho por el problema que tengo arriba pero mas o menos tengo la idea de la letra F de las otra dos ni idea, si eres tan amable me las puedes explicar}
readln;
end.

1 Respuesta

Respuesta
1
program matrices;
uses crt;
var
vec: array [1..99999999] of integer;
i,n,suma,CONT:integer;
media:real;
begin
writeln ('de cuanto quiere que sea el arreglo');
readln (n);
writeln ('introduzca los valores');
for i:=1 to n do
begin
readln (vec);//    <<== AQUÍ FALTABA EL ""
end;
for i:=1 to n do
begin
writeln ('los valores del arreglo en la posicion ', i,' es', vec);// <<== AQUÍ LO MISMO :S  Debes nidicar cuál de todas las posiciones quieres que escriba ;)
end;
for i:=1 to n do
suma:=suma + vec;//  <<== DE NUEVO LA
writeln ('la suma del arreglo es ',suma);
media:=suma /n;
writeln ('la media es ', media:10:10);
CONT:=0;//<<== SIEMPRE HAY QUE INICIALIZAR A 0, PORQUE PUEDE TENER CUALQUIER COSA :S. TEN EN CUENTA QUE ESA POSICION DE MEMORIA QUE OCUPA "CONT", PUEDE TENER (TIENE) VALORES EXTRAÑOS - BASURA
for i:=1 to n do
if (vec mod 2) <> 0 then// <<== OOOTRA VEZ Xd A PARTIR DE AHORA, NO LO COMENTO, PERO SÍ LO CORRIJO ;)
CONT:=CONT +1;
writeln ('hay ',CONT,' numero impares');
{Como ya sabemos cuántos impares hay, y el nº total de nºs que tiene, solo restamos:}
WRITELN('Hay ',n-cont,'números pares');
//(...) Creo que con la pista de tu fallo (lo del es imprescindible) podrás hacer los que restan. Si no, pues me vuelves a escribir y te echaré otra mano ^^
readln;
end.
si me sirvio XD....aunq te falto colocar vec sino el programa no corria...XD....pero eso era lo de menos me distes la idea de como terminar la E y ya hice la F ahora estoy en G...Y si q estoy trancaso porq yo puedo hacer q me los reste....pero no se como hacer q me guarde cada digito de la resta y despues los imprima
Si sabes como hacer eso ayudame... aquí te dejo el programa otra vez pa que lo veas
program matrices;
uses crt;
var
vec: array [1..99999999] of integer;
i,n,suma,CONT:integer;
media:real;
begin
writeln ('de cuanto quiere que sea el arreglo');
readln (n);
writeln ('introduzca los valores');
for i:=1 to n do
begin
readln (vec );
end;
for i:=1 to n do
begin
writeln ('los valores del arreglo en la posicion ', i,' es ', vec);
end;
for i:=1 to n do
suma:=suma + vec;
writeln;
writeln ('la suma del arreglo es ',suma);
media:=suma /n;
writeln;
writeln ('la media es ', media:10:10);
CONT:=0;
for i:=1 to n do
if (vec mod 2) <> 0 then
CONT:=CONT +1;
writeln;
writeln ('hay ',CONT,' numero impares');
writeln;
writeln('hay ',n-CONT,' numeros pares');
CONT:=0;
for i:=1 to n do
if (vec > media) then
CONT:=CONT+1;
writeln;
writeln ('hay ',CONT,' numero mayores que la media');
writeln;
writeln ('hay ',n-CONT,' numeros menores que la media');
readln;
end.
Espero que me puedas ayudar
Deduzco que este sistema de "foros?" te borra los corchetes :s
Para los menores que la media, no puedes utilizar la resta, porque no sería preciso: estás diciendo que hay n-CPM números MENORES O IGUALES a la media ;) Debes miorar de nuevo con un FOR para los menores, porque puede que haya IGUALES.
La letra G... Ya se podrían haber expresado mejor, porque no sé muy bien ué pretende que se haga :s
Supongo que es:
Arreglo original: 2,8,-15
Arreglo resultante: 2-8-(-15), 8-(-15),-15
quedando: 9,23,-15
No sé si es esa la idea. De ser así, declaras otra variable igual a VEC, por ejemplo, "aux", y ahí vas metiendo los cálculos.
Luego, pues la muestras igual que como hiciste con VEC.
Luego la H es una tontería: Le pides al usuario un número POR, y lo copias en las posiciones pares de AUX

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas