Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: ayuda con arreglos en pascal
Experto: sergioyoplay
Valoración: 5
Fecha: 22/05/2009


ayuda con arreglos en pascal
hola....mira 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 numeros pares e impares
F. Calcular cuantos numeros 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  X 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.
 
 
agradesco tu respuesta

ayuda con arreglos en pascal
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.

ayuda con arreglos en pascal
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...aqui te dejo el programa otra vez pa q 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 q me puedas ayudar

ayuda con arreglos en pascal
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 asi, 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 X, y lo copias en las posiciones pares de AUX

ayuda con arreglos en pascal
yava no entendi esa parte....la G sino mal recuerdo era restar el primer numero del arreglo con el segundo....y depues ese resultado con el tercero y asi hasta q se acabe el FOR (no se si eso fue lo q me quisistes decir...pero es asi)....mira asi es como yo logre hallar ese resultado....pero sigo con la duda de como hacer para ir guardando ese numero dentro del FOR y q despues me los imprima por orden (con orden me refiero q si a la primera resta va de primero...a la segunda resta va de segundo y asi)
 
resta:=vec [1]-vec [2];
for i:=3 to n do
resta:=resta-vec ;
writeln;
textcolor (6);writeln (resta);{esta el la resta, imprimir un arreglo con esa resta}
 
de resto del programa es igual...esa es la parte del programa en donde hallo la resta....entonces explicame detalladamente como y en donde meto el aux....para que me vaya guardando los resultados
 
agradesco tu respuestas

Pregunta finalizada. Valoración: 5
gracias por la ayuda


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/pascal/respuestas/2097536/ayuda-con-arreglos-en-pascal