• Lunes 16 de Diciembre de 2024, 11:58

Autor Tema:  Puntero, Cantidad De Caracteres En Una Cadena  (Leído 1786 veces)

jose_c27

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Puntero, Cantidad De Caracteres En Una Cadena
« en: Sábado 1 de Septiembre de 2007, 04:32 »
0
Hola de nuevo a todos, ahora estoy haciendo lo siguiente introduzco una cadena por ejemplo hola mundo y un caracter que en este caso seria 'o' el resultado tendria que devolverme un 2 por que es la cantidad de veces que se repite dentro de esa cadena hasta ahora tengo lo siguiente:

Código:
Código: Text
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. int main(void)
  5. { char s[100];
  6. char t[100];
  7. int *ptr;
  8. int i;
  9. int contador=1;
  10. ptr=&contador;
  11.  
  12. printf("Escriba una cadena: ");
  13. gets(s);
  14. printf("Escriba la letra:");
  15. gets(t);
  16.  
  17. for (i=0; s[i]!=0; i++){
  18. if(s[i]==s){
  19. //if(s[i+1]!=' ')
  20. contador++;
  21. }
  22. }
  23.  
  24. printf("La cadena tiene repetida: ");
  25. printf("%d Veces.",*ptr);
  26. system("pause");
  27.  
  28. }
  29.  
  30.  
  31.  
Esto me da el error de ISO C++ forbids comparison between pointer and integer
Si alguien me podria ayudar se los agradeceria

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Puntero, Cantidad De Caracteres En Una Cadena
« Respuesta #1 en: Sábado 1 de Septiembre de 2007, 04:58 »
0
tu problema está acá:

Código: Text
  1.  
  2. if(s[i]==s){
  3.  
  4.  

primero, guardás el caracter a buscar en un string: gets(t);
gets almacena un estring, no un caracter, entonces estás comparando un caracter (s) con un string (s) que en realidad tendría que ser t, pero que no deja de ser un string, la forma correcta de hacerlo sería:

Código: Text
  1.  
  2. char t;
  3. ...
  4. t= (char)getchar();
  5. ...
  6. if(s[i]==t){
  7. ...
  8.  
  9.  

Saludos

Bond

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Puntero, Cantidad De Caracteres En Una Cadena
« Respuesta #2 en: Sábado 1 de Septiembre de 2007, 09:58 »
0
Recuerda que el nombre de un array, en este caso s, actua como un puntero conteniendo la dirección de inicio de ese array en memoria, por lo tanto al hacer esto:

if(s==s)

comparas un entero, con un puntero por lo que el compilador se queja.

Un saludo

jose_c27

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Puntero, Cantidad De Caracteres En Una Cadena
« Respuesta #3 en: Sábado 1 de Septiembre de 2007, 14:55 »
0
Muchas gracias :D

Aqui esta el codigo final

Código: Text
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. int main(void)
  5. { char s[100];
  6. char t;
  7. int *ptr;
  8. int i;
  9. int contador=1;
  10. ptr=&contador;
  11.  
  12. printf("Escriba una cadena: ");
  13. gets(s);
  14. printf("Escriba la letra:");
  15. t=(char) getchar();
  16.  
  17. for (i=0; s[i]!=0; i++){
  18. if(s[i]==t){
  19. contador++;
  20. }
  21. }
  22.  
  23. printf("La cadena tiene repetida: ");
  24. printf("%d Veces.",*ptr-1);
  25. system("pause");
  26.  
  27. }
  28.