SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: jose_c27 en Sábado 1 de Septiembre de 2007, 04:32

Título: Puntero, Cantidad De Caracteres En Una Cadena
Publicado por: jose_c27 en Sábado 1 de Septiembre de 2007, 04:32
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
Título: Re: Puntero, Cantidad De Caracteres En Una Cadena
Publicado por: Karman en Sábado 1 de Septiembre de 2007, 04:58
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
Título: Re: Puntero, Cantidad De Caracteres En Una Cadena
Publicado por: Bond en Sábado 1 de Septiembre de 2007, 09:58
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
Título: Re: Puntero, Cantidad De Caracteres En Una Cadena
Publicado por: jose_c27 en Sábado 1 de Septiembre de 2007, 14:55
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.