Pascal/Turbo Pascal - determinar que caracteres se repitieron y cuantas veces

 
Vista:

determinar que caracteres se repitieron y cuantas veces

Publicado por sebastian (13 intervenciones) el 11/09/2013 04:04:22
hola gente! como están? tengo una duda que quizás me puedan ayudar, necesito un programa que a partir de una cadena de caracteres cualquiera y que termina en un punto me determine que caracteres se repitieron y cuantas veces,yo lo habia pensado hacer con while con centinela (while not)
pero no se muy bien como,si me pueden dar una mano se agradece!
desde ya muchas gracias ,
saludos
sebastian
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

determinar que caracteres se repitieron y cuantas veces

Publicado por sebastian (13 intervenciones) el 11/09/2013 17:10:36
bueno pude realizar este codigo pero no me funciona , si alguien me puede decir que tengo mal se agradece!!!



var caracter:string;
inicio,largo:integer;
caractera,caracterb:char;


begin

writeln('ingrese una cadena de caracteres que finalice en [.]');
readln(caracter);

while(caracter <> '.') and caractera = caracterb do
begin
largo:= largo + 1;
end

wtriteln ('el caracter ',caractera 'se repitio ',largo);

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

determinar que caracteres se repitieron y cuantas veces

Publicado por ramon (2158 intervenciones) el 11/09/2013 19:42:08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{Mira esto}
 
 program cuentaletras;
   uses
      crt;
   type
     letras = array['A'..'Z'] of integer;
 
   var
     cuent : letras;
     i : integer;
     cadena : string;
     letra : char;
 
   begin
      clrscr;
      i := 1;
      fillchar(cadena,256,' ');
      cadena[0] := chr(255);
      write('   Entre Cadena : ');
      readln(cadena);
     while i < length(cadena) do
     begin
        cuent[upcase(cadena[i])] := cuent[upcase(cadena[i])] + 1;
        i := i + 1;
     end;
     clrscr;
     writeln;
     for letra := 'A' to 'Z' do
     if cuent[letra] > 0 then
     writeln('    ',letra,'  = ',cuent[letra]);
     readkey;
   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

determinar que caracteres se repitieron y cuantas veces

Publicado por sebastian (13 intervenciones) el 11/09/2013 20:29:42
muchas gracias ramon,lamentablemente omiti una parte muy importante y es que no puedo usar: uses, crlscr, gotoxy, crt, readkey, longint, string, break, etcétera y la solución que me recomendas (que funciona perfecto!)no la podre tomar para resolver mi problema.disculpa por mi error,si podes recomendarme otra forma sin usar lo antes mencionado se te agradece mucho!
saludos
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

determinar que caracteres se repitieron y cuantas veces

Publicado por ramon (2158 intervenciones) el 11/09/2013 21:22:51
Perdona me puedes decir que puedes usar para ajustarlo a tu sistema puedes usar array char
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

determinar que caracteres se repitieron y cuantas veces

Publicado por sebastian (13 intervenciones) el 11/09/2013 21:32:26
se puede usar :
tipos de datos : Integer,Boolean,Char . Instrucciones:Asignación,Entrada y Salida(read, write, WriteLn, ReadLn),Secuencia,Selección (if, case),Repetición (for, while, repeat)
No está permitido utilizar facilidades de Free Pascal que no forman parte del estándar y no se dan en el curso. Así, por ejemplo, no se puede utilizar ninguna de las palabras siguientes: uses, crlscr, gotoxy, crt, readkey, longint, string, break, etcétera. todo eso
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

determinar que caracteres se repitieron y cuantas veces

Publicado por ramon (2158 intervenciones) el 11/09/2013 22:41:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{A ver si esto sirve de ayuda}
 
 program letras;
   type
      let = array['A'..'Z'] of integer;
      letra = array[1..255] of char;
   var
     texto : letra;
     cuenta : let;
     i, t : integer;
     le : char;
 
   begin
     i := 1;
     write(' Entre texto : ');
     while le <> '.' do
     begin
     read(le);
     if le = '.' then
   else
     begin
     texto[i] := le;
     cuenta[upcase(le)] := cuenta[upcase(le)] + 1;
     i := i + 1;
     end;
   end;
     for le := 'A' to 'Z' do
     if cuenta[le] > 0 then
     writeln('   ',le,'    ',cuenta[le]);
     readln;
     readln;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

determinar que caracteres se repitieron y cuantas veces

Publicado por sebastian (13 intervenciones) el 11/09/2013 23:11:47
muchas gracias!!funciona perfecto! se agradece y valora mucho tu ayuda!
saludos
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

determinar que caracteres se repitieron y cuantas veces

Publicado por horacio (6 intervenciones) el 18/09/2013 02:28:52
Ramon, que tal? Como adecuo esto si solamente puedo usar
Tipos de datos: Integer, Boolean, Char
Instrucciones: Asignación Entrada y Salida(read, write, WriteLn, ReadLn)
Secuencia Selección (if, case)
Repetición (for, while, repeat)
no se puede usar subprogramas ni arreglos... como lo hago, desde ya muchas gracias!!!
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

determinar que caracteres se repitieron y cuantas veces

Publicado por ramon (2158 intervenciones) el 18/09/2013 13:14:10
{Espero puedas usar stringes pues sino lo tienes mal los caracteres entrados en una
variable char se anulan al entrar otro valor por lo tanto mal puedes comparar ninguna
letra,
Por lo tanto tendrías que usar una de las dos un typo de array char o un string pascal
tiene la posibilidad de crear tu typo de dato para ello usa el type,
Pero una variable char no puede compararle con algo que se anulo por ejemplo:
var
letra : char;
begin
readln(letra);
letra solo tomara una aunque read te permita entrar 100 por lo tanto imagina pulsas
[A] esta sera la letra que tendrás en letra,
al volver a entrar otra por ejemplo [D] la [A] desaparece y en su lugar queda la [D] por
lo tanto no puedes comparar si es igual o no.
Si tuvieras otra variable por ejemplo [Ante] y la pusieses ante := letra te daría lo mismo
puesto que solo contaras la actual si fuera igual.
Sino tendrías que crear tantas variables como texto o caracteres entrados no es normal.
Algo esta fallando en ese tema míralo bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

determinar que caracteres se repitieron y cuantas veces

Publicado por horacio (6 intervenciones) el 18/09/2013 17:04:57
Muchas gracias por la ayuda!!! :D
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