C/Visual C - Puntero,Cantidad de Caracteres en cadena

 
Vista:

Puntero,Cantidad de Caracteres en cadena

Publicado por Jose Ramon (4 intervenciones) el 01/09/2007 03:55:59
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
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

RE:Puntero,Cantidad de Caracteres en cadena

Publicado por rubens (6 intervenciones) el 01/09/2007 08:49:48
tu problema solucionado esta en http://www.ksis.com.ar/?id=23
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

RE:Puntero,Cantidad de Caracteres en cadena

Publicado por NeoMitnick (11 intervenciones) el 02/09/2007 10:52:35
Mira mmm el código de la página que mandó Rubens, efectivamente hace lo que debe hacer tu programa, pero sinceramente no me parece correcto que la duda no se conteste y sólo te mande a copiar la idea de otra persona si el error por el que preguntabas no tiene nada que ver con el código expuesto en dicha página... este tipo de programas que seguramente te están dejando en la escuela son para practicar y aprender a programar y diseñar algoritmos y pensar para buscar soluciones no buscar las soluciones en internet, sería entonces más conveniente que te aferraras a tus ideas si ya llevas algo con ellas y sólo modificarlas a poco para que funcionen...

El error claramente está en esta línea:

if(s[i]==s)

Esto es debido a que s[i] es un tipo char y s como tal es un tipo char* , aparte supongo que lo que querías hacer era esto

if(s[i]==t)

Para comprobar cuántas veces se repetía el caracter que debió haber sido guardado en t pero aún así es el mismo error de comparación entre tipos distintos por lo que lo que debiste haber hecho era

if(s[i]==t[0])

Así compruebas el caracter de s[i] con el caracter guardado en en el primer caracter de la cadena t

Una mejor opción en lugar de haber delcarado a t como char [] gubiera sido declararlo como char únicamente, para pedirlo en lugar de usar gets usarías

t=getchar() ;

y entonces en el if sí sería correcto poner

if(s[i]==t)

Bueno creo que eso sería todo, exceptuando por que la variable contador debe ser inicializada a 0 y ademas tu función debe regresar un entero según tu definición de main

#include <stdlib.h>
#include <stdio.h>
int main(void)
{

char s[100];
char t[100];
int *ptr;
int i;
int contador=0; ///Contador igual a cero para que cuente bien
ptr=&contador;

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

for (i=0; s[i]!=0; i++){
if(s[i]==t[0]){ //Así funciona como debería... comparando dos datos del mismo tipo
contador++;
}
}

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

return 0;
}

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