/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Puntero Contar cantidad de caracter en una cadena

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
jose_c27



Registrado: 31 Ago 2007
Mensajes: 10

MensajePublicado: 31/08/2007 6:24 pm
Título: Puntero Contar cantidad de caracter en una cadena

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:

#include <stdlib.h>
#include <stdio.h>
int main(void)
{ char s[100];
  char t[100];
       int *ptr;
       int i;
       int contador=1;
       ptr=&contador;
       
       printf("Escriba una cadena: ");
       gets(s);
       printf("Escriba la letra:");
       gets(t);
             
       for (i=0; s[i]!=0; i++){
              if(s[i]==s){
              //if(s[i+1]!=' ')
              contador++;
              }
              }
       
       printf("La cadena tiene repetida: ");
       printf("%d Veces.",*ptr);
       system("pause");
       
}

Esto me da el error de ISO C++ forbids comparison between pointer and integer
Si alguien me podria ayudar se los agradeceria
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 31/08/2007 7:11 pm
Título:

El error se encuentra en el bucle principal ya que no puedes comparar un entero (en tu caso "s[i]") con un puntero (en tu caso el nombre del array "s").

El programa modificado para que compile sin errores como C++:
Código:
#include <cstdio>
#include <cstdlib>

using namespace std;

int main()
{
   char s[100];
   char t[100];
   char *p;
   char *q;
   int repeticiones;
   
   printf("Escriba una cadena: ");
   fflush(stdout);
   gets(s);
   
   printf("Escriba la letra: ");
   fflush(stdout);
   gets(t);
   
   repeticiones = 0;
   for (p = s, q = t; *p != '\0'; p++)
      if (*p == *q)
         repeticiones++;
   
   printf("Repeticiones == %d\n", repeticiones);
   
   return 0;
}



Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
jose_c27



Registrado: 31 Ago 2007
Mensajes: 10

MensajePublicado: 01/09/2007 5:01 am
Título:

Yo lo hice de una manera mas sencilla

Código:

#include <stdlib.h>
#include <stdio.h>
int main(void)
{ char s[100];
char t;
int *ptr;
int i;
int contador=1;
ptr=&contador;

printf("Escriba una cadena: ");
gets(s);
printf("Escriba la letra:");
t=(char) getchar();

for (i=0; s[i]!=0; i++){
if(s[i]==t){
contador++;
}
}

printf("La cadena tiene repetida: ");
printf("%d Veces.",*ptr-1);
system("pause");

}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 01/09/2007 7:40 am
Título:

Si como indicas en otro tema estas aprendiendo C++ los nombres correctos de los archivos de inclusion son <cstdio> y <cstdlib>.

Y es mejor inicializar la variable "contador" a cero para no tener despues que decrementar el valor cuando se llame a printf.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
jose_c27



Registrado: 31 Ago 2007
Mensajes: 10

MensajePublicado: 01/09/2007 7:44 am
Título:

Gracias por los consejos Wink

rir3760 escribió:
Si como indicas en otro tema estas aprendiendo C++ los nombres correctos de los archivos de inclusion son <cstdio> y <cstdlib>.

Y es mejor inicializar la variable "contador" a cero para no tener despues que decrementar el valor cuando se llame a printf.

Un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com