Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ramona98 en 19 Agosto 2013, 14:06 pm



Título: Error con el while
Publicado por: ramona98 en 19 Agosto 2013, 14:06 pm
Hola,
Estoy haciendo un programa que me calcule el numero de palabras en una cadena, lo he disenado calculando el numero de espacios y sumandole +1, el primer problema que puedo tener si tenemos dos espacios entre palabras ya no sera realista el calculo.... pero el pricipal problema es con el while me da error y no logro avanzar (he probado igualmente con for(...) y lo mismo.

Código:
#include <stdio.h>
#include <string.h>

int index, espacio;
char line[100];

int main()
{

strcpy(line,"hola sam, hola sam.");
index=0;

while (line[index] != '/0')
{
    if (line[index] == ' ') {
    ++espacio; }
    ++index;
}

   
   printf("%d palabras/n", espacio+1);


return (0);
}

y el error que da:
Código:
Compiling the source code....
$g++ main.cpp -o demo -lm -pthread -lgmpxx -lgmp -lreadline 2>&1
main.cpp:13:23: warning: multi-character character constant [-Wmultichar]
main.cpp:4:5: error: 'int index' redeclared as different kind of symbol
In file included from main.cpp:2:0:
/usr/include/string.h:471:22: error: previous declaration of 'const char* index(const char*, int)'
main.cpp: In function 'int main()':
main.cpp:11:7: error: overloaded function with no contextual type information
main.cpp:13:18: error: invalid types 'char [100][]' for array subscript
main.cpp:15:19: error: invalid types 'char [100][]' for array subscript
main.cpp:17:7: error: no pre-increment operator for type

Alguna ayuda?


Título: Re: Error con el while
Publicado por: Eternal Idol en 19 Agosto 2013, 15:03 pm
Ya que estas en C++ mejor inclui cstring y cstdio, si seguis teniendo problemas por redeclarar index cambiale el nombre a indice a tu variable ... segui vos.


Título: Re: Error con el while
Publicado por: Alien-Z en 19 Agosto 2013, 15:09 pm
Utiliza un puntero para iterar dentro de la cadena:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6. char cadena[] = "hola sam, hola sam.";
  7. char *pCadena = cadena;
  8. int numEspacios = 0;
  9.  
  10. while (*pCadena != '\0') {
  11. if (*pCadena == ' ') numEspacios++;
  12. pCadena++;
  13. }
  14.  
  15.    printf("%d palabras/n", numEspacios+1);
  16.  
  17.    return 0;
  18. }


Tu código tiene un error: En el caso de la cadena vacía (char cadena[] = "") el programa imprimirá numEspacios+1 palabras, es decir, 0+1 palabras lo cual está mal.

Por tu registro de errores puedo suponer que estás programando en C++: main.cpp: In function 'int main()': ... así que te recomiendo el tipo String para manejar cadenas.

Un saludo.


Título: Re: Error con el while
Publicado por: do-while en 19 Agosto 2013, 15:34 pm
El error no venia de ahí. El compilador le estaba diciendo que tenia una constante caracter que tenía mas de un caracter. Había puesto '/0' en lugar de '\0'

Y no llames a la variable index, te está diciendo que hay un conflicto con alguna función definida en string.h (Como ya había dicho Eternal)

¡Saludos!