PDA

Ver la Versión Completa : Media de caracteres!


guillek5
11-01-2012, 16:25:36
Buenas tardes gente!

Veréis he tenido que hacer para clase una práctica en la que se nos pide:

-Leer una frase por pantalla (compuesta por un máximo de 25 palabras separadas por
blancos, cada una de ellas con un tamaño máximo de 15 caracteres) y calcule la media de caracteres de la palabras introducidas.

Aparte de esto pedían varias cosas mas, yo esta parte la he hecho creando un vector de registros y haciendo un procedimiento que llamaba a este, pero hoy al enseñárselo al profesor me ha dicho que no le vale ya que el quiere que coja la cadena ,la meta en el vector y cuente las palabras en la propia cadena.

Os deja la parte de código:

//Aquí el bloque declarativo

const
max=100;
max1=10;
nummax=100;
numle=15; //Numero maximo de letras
numpal=25; // Numero maximo de palabras
ttexto=250; //Numero total de texto

type
d1=1..max1;
matriz=array[d1,d1] of integer;

cadena=string[ttexto];
registrop=record
palabra:string[numle];
tmax:integer;
end;

vector1=array[1..numpal] of registrop;


// Y aquí la función en la que tengo la duda

Function media_car(v:vector1;t_car,cont:integer):real;
begin
for i:=1 to contador_palabras do
begin
writeln('La media de caracteres de la palabra numero ',i,' es: ',(length(vector[i].palabra)-1));
total_caracteres:=total_caracteres+(length(vector[i].palabra)-1);
end;
media_car:=total_caracteres/contador_palabras;

end;

//Por ultimo el código donde se llama a esta función:

2:begin
writeln('Media de caracteres');
writeln;
total_caracteres:=0;
mediacar:=media_car(vector,total_caracteres,contador_palabras); // Aqui llaamamos a la funcion para calcular la media de caracteres
writeln;
writeln('La media exactamente es: ',mediacar:0:2);
writeln;
write('Seguimos? ');
answer:=respuesta;

end;

Agradecería mucho que alguien que pueda me eche una mano de verdad! Tengo de plazo hasta el lunes para cambiar esto, así que lo dicho buenas tardes y gracias de antemano!

ecfisa
11-01-2012, 16:35:58
Hola guillek5.

Por favor cuando incluyas código en tu mensaje utiliza TAG's, una imágen explicativa de su uso:

http://img403.imageshack.us/img403/3461/75416396.jpg

Saludos y gracias por tu colaboración.

guillek5
11-01-2012, 16:52:47
Os deja la parte de código:

//Aquí el bloque declarativo

const
max=100;
max1=10;
nummax=100;
numle=15; //Numero maximo de letras
numpal=25; // Numero maximo de palabras
ttexto=250; //Numero total de texto

type
d1=1..max1;
matriz=array[d1,d1] of integer;

cadena=string[ttexto];
registrop=record
palabra:string[numle];
tmax:integer;
end;

vector1=array[1..numpal] of registrop;


// Y aquí la función en la que tengo la duda

Function media_car(v:vector1;t_car,cont:integer):real;
begin
for i:=1 to contador_palabras do
begin
writeln('La media de caracteres de la palabra numero ',i,' es: ',(length(vector[i].palabra)-1));
total_caracteres:=total_caracteres+(length(vector[i].palabra)-1);
end;
media_car:=total_caracteres/contador_palabras;

end;

//Por ultimo el código donde se llama a esta función:

2:begin
writeln('Media de caracteres');
writeln;
total_caracteres:=0;
mediacar:=media_car(vector,total_caracteres,contador_palabras); // Aqui llaamamos a la funcion para calcular la media de caracteres
writeln;
writeln('La media exactamente es: ',mediacar:0:2);
writeln;
write('Seguimos? ');
answer:=respuesta;

end;

Lo siento, y gracias por la aclaración!

Casimiro Notevi
11-01-2012, 18:54:33
No se entiende bien qué quieres, ¿qué es la media de caracteres?

guillek5
11-01-2012, 20:04:49
El caso es que yo he resuelto el ejercicio de la manera que os muestro, pero el profesor me pide que en vez de hacerlo así, coja la cadena y la meta en el vector y una vez ahí este cuente las palabras en la propia cadena, no sé si sigo sin explicarme bien...yo es que no lo entiendo bien tampoco.

Sé que va en contra de las normas del foro, pero es un caso urgente ya que me juego la asignatura de aquí al lunes, si alguien supiera como ayudarme me gustaría poder pasarle todo el código para que lo mirase, y si consigo una solución me comprometo a reflejar en el foro la solución dada, para seguir así con las transparencia de éste.

Casimiro Notevi
11-01-2012, 20:12:21
.. me pide que en vez de hacerlo así, coja la cadena y la meta en el vector y una vez ahí este cuente las palabras en la propia cadena

A ver si lo entiendo, metes una cadena en un vector.
Después el vector tiene que contar las palabras que hay en la cadena.

¿Cómo cuenta un vector? :confused:
¿Seguramente quieres decir que cuentes las palabras una vez almacenadas (la cadena) en el vector?

mamcx
11-01-2012, 22:04:59
no sé si sigo sin explicarme bien...yo es que no lo entiendo bien tampoco.


El primer paso, siempre, es entender bien el problema. Si no lo sabes explicar, es que no lo entiendes. Asi de simple. Si no lo entiendes, no puedes resolverlo ni puedes saber si lo que tienes se acerca o no a la solucion.

El problema de los programadores novatos es que tratan de resolver el problema con herramientas y comandos. Eso son solo herramientas, no soluciones.

Primero, trata (en un papel, un tablero, etc) de resolver el problema "manualmente" con dibujitos, rayas, lo que sea. Si no lo logras articular, pidele a alguien de tu familia o amigo que te escuche - y no importa que no entienda de programacion! -, y mientras les hablas, trata de expresar lo que intentas hacer. La mayoria de las veces, sera suficiente.

Luego que entiendes el problema, y su solucion, veras que implementarlo en codigo es muy facil.

Neftali [Germán.Estévez]
12-01-2012, 11:02:25
A mi me pasa algo parecido a los compañeros; Primero no se lo que estás haciendo tú y luego no acabo de entender muy bien lo que quiere tu profesor. Tal vez para entender lo segundo sea necesario saber cómo lo estás haciendo...

Planteamiento.

ENTRADA: Frase de de 25 palabras máximo y cada palabra con 15 caracteres máximo. Las palabras estarán separadas por espacios.
RESULTADO: Tienes que devolver la media de caracteres de todas las palabras.
PROCEDIMIENTO:
1) Separar palabras de la frase.
2) Contar las palabras de cada frase.
3) Calcular la media de todas ellas.

Ahora me puedes explicar con palabras, de forma sencilla cómo lo has hecho tú.