Hola gente, tengo un problema en un for, dejo el codigo y el error que me tira :)
#include <iostream>
using std::cin;
using std::cout;
int main()
{
// Variables
int palindromo;
bool respuesta= true;
cout <<"palindromo: ";
cin >> palindromo;
for(int divisorMayor=10000,int divisorMenor=10; divisorMenor <= 10000,divisorMayor >= 10; divisorMenor*=10, divisorMayor/=10)
{
if ((palindromo / divisorMayor) != (palindromo / divisorMenor))
{
respuesta= false;
break;
}
palindromo%= divisorMayor;
palindromo/= divisorMenor;
}
if (respuesta == true)
{
cout <<"\nEl numero es un palindromo.";
}
else
{
cout <<"\nEl numero no es un palindromo.";
}
cin.get();
return 0;
}
ERROR:
Citar1>------ 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 ==========
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:
#include <iostream>
using namespace std; // Mas comodo incluir todo el espacio de nombres.
int main()
{
// Variables
int palindromo;
bool respuesta = true;
cout << "palindromo: ";
cin >> palindromo;
// He borrado el segundo `int`. En la sección de "tests", puedes tener varias expresiones separadas
// por comas, pero tu quieres que se cumplan todas, asi que utiliza un `and`.
for(int divMayor = 10000, divMenor = 10; divMenor <= 10000 and divMayor >= 10; divMenor *= 10, divMayor /= 10)
{
if ((palindromo / divMayor) != (palindromo / divMenor)) {
respuesta = false;
break;
}
palindromo %= divMayor;
palindromo /= divMenor;
}
// Con poner `if (respuesta)` es suficiente.
// Por otro lado, estructuras de control (`if/else`, `while`, `for` y `do-while`) que solo
// tengan una sentencia, no necesitan llaves.
// Por ultimo, puedes utilizar `std::endl` en vez de `\n`.
cout << endl;
if (respuesta)
cout << "El numero es un palindromo.";
else
cout << "El numero no es un palindromo.";
// No necesitas `cin.get();` aqui.
return 0;
}
Cita de: 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....
Muchas gracias, solucionado!, Saludos!