• Sábado 4 de Mayo de 2024, 18:07

Autor Tema:  Evitar Repeticiones  (Leído 1530 veces)

powers

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Evitar Repeticiones
« en: Viernes 9 de Abril de 2004, 07:55 »
0
Hello. En el siguien programa (hecho en borland c++) como hago para evitar q cuente las letras que se repiten??
ejemplo: escribo -> kiko
resultado q muestra-> k=2, i=1, k=1, o=1
este es el quiero -> k=2, i=1, o=1

#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include<conio.h>
#include<stdio.h>
void main()
{
char cad[100],op;
int cont,cont2,cont3,q;
printf("\n\tPrograma de manejo de cadena v.1.0\n\n");          
printf("Escriba una cadena (40 caracteres max.)\n ");
gets(cad);
q=strlen(cad);
printf("%i",q);

cont3=1;
for(cont=0;cont<q;cont++)
{
for(cont2=1;cont2<=q;cont2++)
{
if(cad[cont]==cad[cont2]){cont3=cont3+1;}
if(cont2==q){printf("\n\nLa letra %c está presente %i vez/veces",cad[cont],cont3);if(cont2==q)cont3=0;}
}
}
}


gracias ! ! ! !

Oliverio

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Evitar Repeticiones
« Respuesta #1 en: Viernes 9 de Abril de 2004, 12:45 »
0
hola, primero lo primero, tu problema esta en el diseño del algoritmo, no en el codigo.
Si estas empesando con C/C++ primero trata de resolver el problema con pseudocodigo y dejar la implementacion para despues.

Suerte


PD:
cambiar
Código: Text
  1. cont3=1;
  2.   for(cont=0;cont&#60;q;cont++){
  3.     for(cont2=1;cont2&#60;=q;cont2++){
  4.  
por
Código: Text
  1. cont3=0;
  2.   for(cont=0;cont&#60;q;cont++){
  3.     for(cont2=0;cont2&#60;=q;cont2++){
  4.  
resuelve el problema de que tu segunda cuenta del caracter no es correcta

piyey

  • Miembro MUY activo
  • ***
  • Mensajes: 101
  • Nacionalidad: ni
    • Ver Perfil
    • Piyeycorp® - La imaginación es el límite
Re: Evitar Repeticiones
« Respuesta #2 en: Miércoles 5 de Mayo de 2004, 03:57 »
0
Hola Powers, lo que pasa con ese codigo es que en cada repeticion de una letra ira diciendo las veces que se repite a partir de ella o algo mas o menos asi, esto es:

papapapa

p se repite 4
a se repite 4
p se repite 3
a se repite 4
p se repite 3
a se repite 4
p se repite 3
a se repite 4

Con lo que te entendi quieres algo asi:

papapapa

p se repite 4
a se repite 4

Si eso es lo que quieres tienes que hacer un arreglo que represente a cada una de las letras

Código: Text
  1. int letras[26]={0};
  2.  

esto sera un contador para cada una de ellas y luego hacer la comparacion para cada letra en un for y si encuentra la letra aumentar el contador de dicha letra
Código: Text
  1. for(i='a';i&#60;='z';i++)
  2. { for(j=0;j&#60;tamaño;j++)
  3.    {  if(cadena[j]=='a')
  4.            letras[i-'a']++;
  5.    }
  6. }
  7.  
  8.  

 :comp:

o algo asi, si no entiendes me lo dices ya que puede tener algunos errores, lo que pasa es que estoy en un cyber y no tengo el compilador, asi que lo estoy haciendo al aire... :blink:

luego de eso para visualizar lo haces en otro for o en el cuerpo del primero pero despues del segundo, si letra[i-'a']!=0 entonces visualizas la letra i y el numero de repeticiones...
 :smartass:

see you!!! :devil:


Piyey.
Si no vives para servir...
no sirves para vivir.


No soy el dueño del mundo...
pero si el hijo del dueño.


Entre la linea que divide la realidad de la ilusión...
se encuentra la imaginación

IlusionLand - Piyey