Autor |
Mensaje |
MPBass
Nivel 3
Registrado: 14 Dic 2011
Mensajes: 28
|
|
Hola, qué tal? Necesito por favor ayuda urgente que me estoy desesperando a más no poder, para resolver estos 2 ejercicios.. estoy muy trabada y tengo que rendir en la semana... se agradece!!!
ejercicio 1:
cargar un vector de 30 elementos con edades de participantes de un concurso. Mostrar las edades de los 12 participantes más jovenes e indicar la diferencia de edad entre el mayor y el menor.
Realizar la carga del vector a través de un subprograma 'carga' que devuelva el vector cargado, y obtener la diferencia de edades a traves de un subprograma 'diferencia' que reciba el vector.
ejercicio 2:
Ingresar por teclado 20 nombres de alumnos de hasta 25 caracteres. Mostrarlos ordenados alfabéticamente. Se debe informar al final cuántos nombres comienzan con consonante.
Crear la función 'primeraesvocal' que recibe un nombre de alumno como parametro y devuelve Verdadero o Falso según si el nombre empieza con vocal o no. Utilizar dicha funcion dentro de su programa para calcular el total que debe mostrar.
(PREGUNTA: Si me hubiera pedido ordenar alfabéticamente SÓLO aquellos que comiencen con una vocal?)
|
|
|
|
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
Hola, todo bien, vos?
Va con onda...
Estas esperando que magicamente aparezca una resolucion de los ejercicios? una ayuda? pseudocodigo?
Sino expecificas donde te trabaste o tiras codigo no se entiende.
|
|
|
|
_________________ ━━━━━┓ \\
┓┓┓┓┓┃
┓┓┓┓┓┃ ヽ○ノ
┓┓┓┓┓┃ /
┓┓┓┓┓┃ ノ)
┓┓┓┓┓┃
┓┓┓┓┓┃
▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
|
|
|
|
MPBass
Nivel 3
Registrado: 14 Dic 2011
Mensajes: 28
|
|
claro, en realidad no sirve de mucho que diga lo que hice porque no me está saliendo, por eso dije "una ayuda", no creo que alguien lo resuelva entero, pero por lo menos una orientación más o menos de lo que debería hacer.
gracias!
|
|
|
|
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
1- cargas un vector, lo ordenas por edad, imprimis los 1ros 12 y haces edad del 12 - edad del 1.
Sino te sale eso a esta altura me parece que estas bastante al horno.
2- Te armas la funcion si la 1ra es vocal o no, recibis los nombres por teclado, validas que sean 25 caracteres, los ordenas alfabeticamente, los mostras y de paso vas caculando cuantos empiezan con vocal y haces (total-eso) o cuantos empiezan con consonante y devolves ese numero.
Si te piden ordenar solo aquellos que empiezan con vocal, deberias de crearte otro vector, y si te lo enseñaron, ir insertando ordenado, sino insertas todos y dsp lo ordenas.
|
|
|
|
_________________ ━━━━━┓ \\
┓┓┓┓┓┃
┓┓┓┓┓┃ ヽ○ノ
┓┓┓┓┓┃ /
┓┓┓┓┓┃ ノ)
┓┓┓┓┓┃
┓┓┓┓┓┃
▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
|
|
|
|
MPBass
Nivel 3
Registrado: 14 Dic 2011
Mensajes: 28
|
|
no tengo problemas en cargar un vector y ordenarlo por edad, pero no tengo muy en claro cómo meter ese vector en el subprograma 'diferencia' para calcular la resta de edades como piden ahí.
gracias por la ayuda.
|
|
|
|
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
Haces un procedimiento "procedure" que reciba un vector y como ya sabes q va ordenado por edad, e impimis por pantalla "vector[12].edad - vector[1].edad", o como sea que se manejen registros en pascal y listo.
|
|
|
|
_________________ ━━━━━┓ \\
┓┓┓┓┓┃
┓┓┓┓┓┃ ヽ○ノ
┓┓┓┓┓┃ /
┓┓┓┓┓┃ ノ)
┓┓┓┓┓┃
┓┓┓┓┓┃
▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
|
|
|
|
DiegoSLTS
Nivel 6
Edad: 37
Registrado: 14 Ago 2006
Mensajes: 219
Ubicación: Bernal, Quilmes
Carrera: Informática y Sistemas
|
|
Igual está bueno saber que hiciste, por mas que no ande es diferente buscar un error a decirte como encararlo. No importa si como lo planteaste está "mal", pero algo tenés que tener escrito y capaz son errores faciles de corregir.
Te tiro un par de ideas que se me ocurren, pero si lo que ya tenés es muy diferente a esto probablemente te lleve mas tiempo cambiar todo que compartir lo que tenés hecho y que te ayudemos con eso.
Hace mucho que no uso Pascal, pero para el primero se me ocurre:
El programa "Carga" tiene que tener un for de 0 a 29, donde te pida que ingreses un número entero en cada iteración, guardando todo en un arreglo de 30 posiciones. O (mejor, pero lleva mas trabajo), un while donde puedas validar lo que ingresa la persona, y llevar la cuenta de cuantas edades son correctas, para cortar el while cuando tengas 30 edades.
Después en alguna parte (no aclara en el enunciado que pasaste) tenés que ordenar de menor a mayor o de mayor a menor ese arreglo, buscá como implementar el burbujeo que es lo mas simple que hay.
Una vez que tengas ordenado el arreglo se lo pasas al programa "Diferencia" que solamente tiene que devolver la resta del mayor menos el menor.
Para el segundo:
Vas a necesitar si o si un while, porque tenés que validar la longitud del nombre que ingresan. Hace un while, adentro pedis que se escriba un nombre y lees la entrada de teclado. Cuando tenés la linea chequeas el largo, si es menor o igual a 25 lo guardas y aumentas un contador, sino no hacés nada. En el while comparas el contador contra 20, a ver si llegaste a la cantidad que te piden.
Los podés ordenar usando burbujeo, aunque no me acuerdo si pascal te dice directamente si una cadena es "menor" que otra o si tenés que hacerlo a mano caracter a caracter.
Para chequear si la primer letra es vocal (para la funcion primeraesvocal) tenes que hacer un if compuesto con "AND", comparando la primer letra (creo que en pascal podés hacer "lala[0]" si la variable "lala" es un string) contra a, e, i, o y u, devolviendo true si es verdadero y false si es falso.
Después con un for de 0 a 19 podes recorrer todo el arreglo de nombres, para cada valor llamas a la funcion y si da falso, sumas a un contador, sino no haces nada. Al terminar el for en el contador te queda la cantidad de personas con nombre que empieza con consonante.
Si tenés que mostrar las personas con nombre que empieza con vocal y ordenarlas, te podés armar un arreglo de 20 posiciones, recorrés con un for los nombres ya ingresados y vas copiando al otro arreglo solamente los nombres que empiecen con vocal, siempre llevando la cuenta de cuantos encontraste (el arreglo va a tener 20 posiciones, pero si solamente habian 5 personas con vocal, cuando lo recorras para mostrarlo tenes que recorrer las primeras 5 posiciones, si recorres las 20 vas a tener basura en el resto).
|
|
|
|
_________________ No tengo firma...
.... un momento... SI TENGO!
|
|
|
|
|
DiegoSLTS
Nivel 6
Edad: 37
Registrado: 14 Ago 2006
Mensajes: 219
Ubicación: Bernal, Quilmes
Carrera: Informática y Sistemas
|
|
Postearon mientras escribia mi respuesta, no me di cuenta.
Supongo que cuando habla de programa habla de procedimientos o funciones como dice csebas. Pascal puede ejecutar un proceso en el medio de otro, pero no creo que en esta materia usen algo de ese estilo (es muy rebuscado hacer lo que te piden con programas distintos). Si estabas tratando de hacer esto último yo diría que cambies de idea por lo otro , si no sabés como definir procedimientos y funciones y como llamarlos en el código acá hay un ejemplo: http://en.wikibooks.org/wiki/Pascal_Programming/Syntax_and_functions
Pascal también tiene el concepto de "Units" para agrupar cosas en archivos separados, pero también, no creo que se vea en esta materia ni se justifica hacer algo así de rebuscado para los ejercicios que te dieron.
|
|
|
|
_________________ No tengo firma...
.... un momento... SI TENGO!
|
|
|
|
|
MPBass
Nivel 3
Registrado: 14 Dic 2011
Mensajes: 28
|
|
Bueno, antes que nada, MUCHAS gracias por todo. Estoy intentando que me salga, por si quieren ver, les mando el codigo. Me daba verguenza poner alguna burrada ja pero bueno, como verán no tengo mucha idea. Ahí va el 1:
program ejercicio1;
var
i,j,aux:integer;
edades: array [1..30] of integer;
procedure carga;
begin
for i:=1 to 30 do
begin
readln(edades[i]);
end;
for i=1 to 29 do
begin
for j=i+1 to 30 do
begin
if edades [j] < edades [i] then
begin
aux := edades [i];
edades [i] := edades [j];
edades [j] := aux;
end;
end;
end;
for i:=1 to 12 do
writeln(edades[i]);
readln;
end;
procedure diferencia (var r: integer);
begin
r:= edades [12] - edades [1];
end;
begin
diferencia(r);
writeln('la diferencia es ', r);
readln;
end.
El error que me tira es que r no esta definida, por eso decia que seguramente no puedo hacer r= edades [12] - edades [1] .. o sea, no se como llevar ese vector al procedure diferencia.
|
|
|
|
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
El procedimiento deberia de recibir "edades" que es un vector y no "r" que es un entero, r es una varaible entera que definis dentro del procedimiento y la impresion se hace en el mismo procedimiento, obviamente que r no esta definido donde lo estas usando.
|
|
|
|
_________________ ━━━━━┓ \\
┓┓┓┓┓┃
┓┓┓┓┓┃ ヽ○ノ
┓┓┓┓┓┃ /
┓┓┓┓┓┃ ノ)
┓┓┓┓┓┃
┓┓┓┓┓┃
▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
|
|
|
|
MPBass
Nivel 3
Registrado: 14 Dic 2011
Mensajes: 28
|
|
ME SALIO!! Cambie casi todo pero me salio por fin!! jaja pesimo lo mio
muchas gracias
saludos!
|
|
|
|
|
|
|
|
|
|
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|