[Solucionado] Problema en un for con variables

Iniciado por Mario Olivera, 18 Mayo 2015, 17:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Mario Olivera

 Hola gente, tengo un problema en un for, dejo el codigo y el error que me tira :)

Código (cpp) [Seleccionar]
#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 ==========

Peregring-lk

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 (c++) [Seleccionar]

#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;
}

Mario Olivera

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!