Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Consulta - Ej 27 (guia nueva) Modulo 1
Autor Mensaje
locopro333 Sin conexión
Empleado de Fotocopiadora
Pura Vida!!!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 3
Agradecimientos: 4 en 3 posts
Registro en: May 2011
Mensaje: #1
Consulta - Ej 27 (guia nueva) Modulo 1 Ejercicios Algoritmos y Estructuras de Datos
Hola a todos los q tengan ganas de ayudarme....
bue vamos a los bifes, el programa me funka bien sin problemas hasta q llega a la parte 'c' del ejercicio,
no se xq cuenta un caracter de mas siempre Confused ... no se q esta mal ...
ustedes q dicen... thumbup3 o thumbdown

enunciado:
Ej. MI-27: Dada una serie de caracteres que conforman una oración, donde cada palabra está separada de la siguiente por un carácter blanco y la oración finaliza con un punto. Se pide informar:
a) cantidad de veces que apareció cada vocal
b) cantidad de palabras que contiene la oración
c) cantidad de letras que posee la palabra más larga.

aca va my codigo:



program Ejercicio_27;

{$APPTYPE CONSOLE}

uses
SysUtils,console;


var s:string;
var n,i,k,contA,contE,contI,contO,contU:integer;
var contLetra,contPalabra,maxLetra:integer;

begin
/// se ingresa s ---> oracion
readln(s);

n:=length(s);

i:=1;
k:=1;
contA:=0;
contE:=0;
contI:=0;
contO:=0;
contU:=0;
contPalabra:=1;
maxLetra:=0;

while (i <= n) do begin
contLetra:=0;

if (s[i] = 'a') then begin
contA:=contA + 1;
end;
if (s[i] = 'e') then begin
contE:=contE + 1;
end;
if (s[i] = 'i') then begin
contI:=contI + 1;
end;
if (s[i] = 'o') then begin
contO:=contO + 1;
end;
if (s[i] = 'u') then begin
contU:=contU + 1;
end;
if (s[i] = ' ') then begin
contPalabra:=contPalabra + 1;
end;

repeat
if ( k <= n) then begin
contLetra:=contLetra + 1;
if (contLetra > maxLetra) then begin
maxLetra:=contLetra;
end;
end;
k:=k+1;
until ( (s[k]=' ') OR (s[k]='.' ) );

i:=i+1;

end;

writeln('La cantidad de veces que aparecen las vocales son:');
writeln('La vocal a: ',contA,' veces');
writeln('La vocal e: ',contE,' veces');
writeln('La vocal i: ',contI,' veces');
writeln('La vocal o: ',contO,' veces');
writeln('La vocal u: ',contU,' veces');
writeln('La cantidad de palabras que aparecen son: ',contPalabra);
writeln('La palabra mas larga tiene: ',maxLetra,' letras');

readkey();
end.

Otros adjuntos en este tema
.jpg  algogif.JPG ( 35,75 KB / 264) por Anirus
30-05-2012 02:07
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nacho_car89 Sin conexión
Empleado del buffet
si todo lo q sube baja => s...
*

Ing. Mecánica
Facultad Regional Delta

Mensajes: 8
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Aug 2010
Mensaje: #2
RE: Consulta - Ej 27 (guia nueva) Modulo 1
buenas..a 'k' lo consideras como un contador de las letras verdad?proba definiendolo como cero para el ciclo repeat
saludos
30-05-2012 09:09
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #3
RE: Consulta - Ej 27 (guia nueva) Modulo 1
creo que tu problema esta en sumar 1 a la cantidad de letras antes del if.

te paso mi programa, en la guia vieja es el ej 31. (sisis, uso un array, hace de cuenta que que tenes 5 contadores)



type
ar=array [1..5] of integer;


procedure pro(pal:string[50];var a:ar;i:integer;var contle:integer;var contpal:integer;var max:integer);
begin

case pal[i] of
'a','A' : begin a[1]:=a[1]+1; end;
'e','E' : begin a[2]:=a[2]+1; end;
'i','I' : begin a[3]:=a[3]+1; end;
'o','O' : begin a[4]:=a[4]+1; end;
'u','U' : begin a[5]:=a[5]+1; end;
end;

contle:=contle+1;
if (pal[i]=' ') then begin
contpal:=contpal+1;
if (contle>max) then
max:=contle;

contle:=0;
end;

end;

procedure res(a:ar;max:integer;contpal:integer);
begin

writeln ('Hay ',a[1],' vocales a');
writeln ('Hay ',a[2],' vocales e');
writeln ('Hay ',a[3],' vocales i');
writeln ('Hay ',a[4],' vocales o');
writeln ('Hay ',a[5],' vocales u');
writeln('La palabra mas larga tiene ',max,' letras');
writeln ('Hay ',contpal,' palabras');

end;

var
pal:string[50];
a:ar;
contpal,i,contle,l,max:integer;

begin

contle:=0; max:=0; contpal:=1;
for i:= 1 to 5 do begin
a[i]:=0; //inicializa el array en 0
end;

write ('Ingrese una oracion: ');
readln(pal);

l:=length(pal);

for i:=1 to l do begin
pro(pal,a,i,contle,contpal,max); //procesa
end;

res(a,max,contpal); //muestra la resolucion

end.


edit:
referencias: contle = contador de letras
contpal = contador de palabras

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
(Este mensaje fue modificado por última vez en: 30-05-2012 15:29 por el pibe.)
30-05-2012 15:28
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] el pibe recibio 1 Gracias por este post
locopro333 (30-05-2012)
locopro333 Sin conexión
Empleado de Fotocopiadora
Pura Vida!!!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 3
Agradecimientos: 4 en 3 posts
Registro en: May 2011
Mensaje: #4
RE: Consulta - Ej 27 (guia nueva) Modulo 1
Gracias k-po tenias razon thumbup3

Lo habia revisado pero no me di cuenta de eso Confused
Es alto choclo el mio.... pero el profe no queria q usemos arrays, subprogramas, etc... lo queria base.
30-05-2012 19:25
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nanuiit Ausente
♫ I'm Blue ...
... Da ba dee, da ba da ♫
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8.880
Agradecimientos dados: 216
Agradecimientos: 572 en 201 posts
Registro en: Aug 2010
Mensaje: #5
RE: Consulta - Ej 27 (guia nueva) Modulo 1
Claro, porque en el Módulo 1 no se ve arrays, entonces no hay que usarlo

ALGORITMOS

Apuntes: Mem. Dinámica - Mem. Estática - Proc. y Funciones || Guías: Módulos + 83 Ejercicios || Finales: 2004-2013


[Imagen: digitalizartransparent.png]

[Imagen: firmananiv2.png]
30-05-2012 19:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.162
Agradecimientos dados: 77
Agradecimientos: 194 en 69 posts
Registro en: Nov 2009
Mensaje: #6
RE: Consulta - Ej 27 (guia nueva) Modulo 1
Me parece que lo que se desea para el ejercicio es que aprendas a hacer corte de control.

   


program Ejercicio_27;

var oracion:string;
var contA,contE,contI,contO,contU:integer;
var contPalabras,maxLetras,letras: integer;
var i:integer;

begin

readln(oracion);

//Inicialización oracion
contA:=0;
contE:=0;
contI:=0;
contO:=0;
contU:=0;
contPalabras:=0;
maxLetras:=0;
i := 1;

while (oracion[i]<>'.') do begin //Ciclo que corta cuando termina la oración


//Inicialización palabra
contPalabras := contPalabras +1;
letras := 0;

while( (oracion[i]<>' ') and (oracion[i]<>'.') ) do begin //Ciclo que corta cuando termina la palabra y/o oracion

letras:=letras+1;

case oracion[i] of
'a','A' : contA:=contA+1;
'e','E' : contE:=contE+1;
'i','I' : contI:=contI+1;
'o','O' : contO:=contO+1;
'u','U' : contU:=contU+1;
end;
i:=i+1;

end;

//Finalización palabra
if letras>maxLetras then maxLetras:=letras;
if oracion[i]=' ' then i:=i+1;

end;

//Finalización oracion
writeln('La cantidad de veces que aparecen las vocales son:');
writeln('La vocal a: ',contA,' veces');
writeln('La vocal e: ',contE,' veces');
writeln('La vocal i: ',contI,' veces');
writeln('La vocal o: ',contO,' veces');
writeln('La vocal u: ',contU,' veces');
writeln('La cantidad de palabras que aparecen son: ',contPalabras);
writeln('La palabra mas larga tiene: ',maxLetras,' letras');

end.



Los cortes de control se usan cuando tenés cosas dentro de otras(ejemplo: palabras dentro de una oración), son siempre iguales: Tenés varios ciclos anidados y para cada uno tenés acciones de inicialización (por ejemplo en este fue inicializar las variables que importan para toda la oración antes del ciclo que recorre la oración, y las que importan para la palabra antes del ciclo de palabra) y de finalización (en la finalización de la oración imprimís, al final del ciclo que recorre la palabra te fijás si es la que tiene más letras)

Si en vez de una oración te pasaran un párrafo(y te pidieran por ejemplo contar la cantidad de oraciones) se agregaría un ciclo más.



program Ejercicio_27;



var parrafo:string;
var contA,contE,contI,contO,contU:integer;
var contPalabras,contOraciones,maxLetras,letras: integer;
var i:integer;
begin

readln(parrafo);

//Inicialización párrafo
contOraciones:=0;
i:=1;


while(i < Length (parrafo)) do begin

//Inicialización oracion
contA:=0;
contE:=0;
contI:=0;
contO:=0;
contU:=0;
contPalabras:=0;
maxLetras:=0;

contOraciones:= contOraciones+1;

while ( (parrafo[i]<>'.')) do begin


//Inicialización palabra
contPalabras := contPalabras +1;
letras := 0;

while( (parrafo[i]<>' ') and (parrafo[i]<>'.')) do begin

letras:=letras+1;

case parrafo[i] of
'a','A' : contA:=contA+1;
'e','E' : contE:=contE+1;
'i','I' : contI:=contI+1;
'o','O' : contO:=contO+1;
'u','U' : contU:=contU+1;
end;
i:=i+1;

end;

//Finalización palabra
if letras>maxLetras then maxLetras:=letras;
if parrafo[i]=' ' then i:=i+1;

end;

//Finalización oracion
writeln('Oracion nro: ',contOraciones);
writeln('La cantidad de veces que aparecen las vocales son:');
writeln('La vocal a: ',contA,' veces');
writeln('La vocal e: ',contE,' veces');
writeln('La vocal i: ',contI,' veces');
writeln('La vocal o: ',contO,' veces');
writeln('La vocal u: ',contU,' veces');
writeln('La cantidad de palabras que aparecen son: ',contPalabras);
writeln('La palabra mas larga tiene: ',maxLetras,' letras');
writeln('==========================================================');
writeln();
i:=i+2;//Avanzo el . y el espacio.
end;

//Finalización párrafo
writeln('La cantidad de oraciones es: ',contOraciones);


end.

(Este mensaje fue modificado por última vez en: 02-06-2012 23:57 por Anirus.)
02-06-2012 23:11
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.