Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Mario Olivera en 18 Mayo 2015, 17:10 pm



Título: [Solucionado] Problema en un for con variables
Publicado por: Mario Olivera en 18 Mayo 2015, 17:10 pm
 Hola gente, tengo un problema en un for, dejo el codigo y el error que me tira :)

Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4.  
  5. int main()
  6. {
  7. // Variables
  8. int palindromo;
  9. bool respuesta= true;
  10.  
  11.  
  12. cout <<"palindromo: ";
  13. cin >> palindromo;
  14.  
  15.  
  16. for(int divisorMayor=10000,int divisorMenor=10; divisorMenor <= 10000,divisorMayor >= 10; divisorMenor*=10, divisorMayor/=10)
  17. {
  18. if ((palindromo / divisorMayor) != (palindromo / divisorMenor))
  19. {
  20. respuesta= false;
  21. break;
  22. }
  23.  
  24. palindromo%= divisorMayor;
  25. palindromo/= divisorMenor;
  26. }
  27.  
  28. if (respuesta == true)
  29. {
  30. cout <<"\nEl numero es un palindromo.";
  31. }
  32.  
  33. else
  34. {
  35. cout <<"\nEl numero no es un palindromo.";
  36. }
  37.  
  38. cin.get();
  39. return 0;
  40. }

ERROR:

Citar
1>------ Operación Generar iniciada: proyecto: Deitel-Ejer4.26, configuración: Debug Win32 ------
1>  main.cpp
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(31): error C2062: tipo 'int' inesperado
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(31): error C2065: 'divisorMenor' : identificador no declarado
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(31): error C2065: 'divisorMenor' : identificador no declarado
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(31): error C2143: error de sintaxis : falta ';' delante de ')'
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(31): error C2143: error de sintaxis : falta ';' delante de ')'
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(32): error C2143: error de sintaxis : falta ';' delante de '{'
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(33): error C2065: 'divisorMenor' : identificador no declarado
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(36): error C2043: instrucción break no válida
1>c:\users\mario\desktop\programacion c++\deitel-ejer4.26\deitel-ejer4.26\main.cpp(40): error C2065: 'divisorMenor' : identificador no declarado
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Título: Re: problema en un for con variables
Publicado por: Peregring-lk en 18 Mayo 2015, 17:36 pm
En la sección de inicialización del `for` solo puedes tener una declaración compuesta. Es decir, tantas variables como quieras, pero del mismo tipo, separadas por comas:
 
Código
  1. #include <iostream>
  2.  
  3. using namespace std; // Mas comodo incluir todo el espacio de nombres.
  4.  
  5. int main()
  6. {
  7.   // Variables
  8.   int palindromo;
  9.   bool respuesta = true;
  10.  
  11.   cout << "palindromo: ";
  12.   cin >> palindromo;
  13.  
  14.   // He borrado el segundo `int`. En la sección de "tests", puedes tener varias expresiones separadas
  15.   // por comas, pero tu quieres que se cumplan todas, asi que utiliza un `and`.
  16.   for(int divMayor = 10000, divMenor = 10; divMenor <= 10000 and divMayor >= 10; divMenor *= 10, divMayor /= 10)
  17.   {
  18.      if ((palindromo / divMayor) != (palindromo / divMenor)) {
  19.         respuesta = false;
  20.         break;
  21.      }
  22.  
  23.      palindromo %= divMayor;
  24.      palindromo /= divMenor;
  25.   }
  26.  
  27.   // Con poner `if (respuesta)` es suficiente.
  28.   // Por otro lado, estructuras de control (`if/else`, `while`, `for` y `do-while`) que solo
  29.   // tengan una sentencia, no necesitan llaves.
  30.   // Por ultimo, puedes utilizar `std::endl` en vez de `\n`.
  31.   cout << endl;
  32.  
  33.   if (respuesta)
  34.      cout << "El numero es un palindromo.";
  35.   else
  36.      cout << "El numero no es un palindromo.";
  37.  
  38.   // No necesitas `cin.get();` aqui.
  39.   return 0;
  40. }


Título: Re: problema en un for con variables
Publicado por: Mario Olivera en 18 Mayo 2015, 18:34 pm
En la sección de inicialización del `for` solo puedes tener una declaración compuesta. Es decir, tantas variables como quieras, pero del mismo tipo, separadas por comas....

Muchas gracias, solucionado!, Saludos!