Pascal/Turbo Pascal - Media de caracteres!

   
Vista:

Media de caracteres!

Publicado por Ricardo (1 intervención) el 11/01/2012 16:17:18
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!
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

Media de caracteres!

Publicado por ramon (2072 intervenciones) el 13/01/2012 22:27:12
{A ver si esto te sirve sino dime la entrada la realizáis con read todo el testo contando tanto las frases como los espacios o te permite realizar este tipo de entradas}

program medidacar;
uses
crt;
type
string15 = string[15];

texto = record
tex : array[1..25] of string15;
cont : integer;
end;

var
dato : texto;
i : integer;
longi : longint;

function readln1(x1, y1 : integer) : string15;
var
tec : char;
h : integer;
texo : string15;
begin
h := 1;
gotoxy(x1,y1);
repeat
tec := readkey;
if tec in[#32..#126,#164,#165] then
begin
texo[h] := tec;
texo[0] := chr(h);
gotoxy(x1 + h,y1);write(texo[h]);
h := h + 1;
if h > 15 then
begin
h := 15;
tec := #32;
texo[h] := tec;
texo[0] := chr(h);
gotoxy(x1 + h,y1);write(texo[h]);
end;
end;
if tec = #8 then
begin
h := h - 1;
if h < 1 then
h := 1;
texo[h] := ' ';
texo[0] := chr(h);
gotoxy(x1 + h,y1);write(texo[h]);
end;
until tec = #32;
readln1 := copy(texo,1,length(texo));
end;


procedure entratesto;
var
long : integer;
x, y : integer;
begin
i := 1;
gotoxy(1,1);write('Entre testo y Espacio [Linea N§] ');
x := 1;
y := 2;
repeat
gotoxy(34,1);write(i);
dato.tex[i] := readln1(x,y);
i := i + 1;
y := y + 1;
x := 1;
until (i > 25);
dato.cont := i - 1;
end;

function lamediaes : longint;
var
cot : integer;
begin
longi := 0;
for cot := 1 to dato.cont do
longi := longi + length(dato.tex[cot]);
lamediaes := longi div dato.cont;
end;


begin
clrscr;
entratesto;
clrscr;
for i := 1 to dato.cont do
writeln('Linea ',i,' ',dato.tex[i]);
writeln;
writeln('La Media Es De = ',lamediaes,' Caracteres');

repeat until keypressed;
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