Unamonos los programadores de taringa y compartamos nuestros codigos, ya sea java, C, C++, php, jsp, html, css, python.... etc etc etc.. Enterate tambien de las innovaciones en el software y nuevas distribuciones de Microsoft, Linux y MacOS

Ver más
  • 1,702 Miembros
  • 560 Temas
  • 308 Seguidores
  • 0

[Ayuda] Que error tube?

Estoy aprendiendo C++ en este curso c.conclase.com. Y nos dijeron que teniamos que crear un programa que descomponga numores que el usuario introdujer para saber si era factores primos o no, y luego te pregunte para cerrar el programa

Mi codigo:
http://www.copypastecode.com/170608/


Me aparecieron estos errores
error 1: name lookup of ‘n’ changed for ISO ‘for’ scoping
error o warning 2: (if you use ‘-fpermissive’ G++ will accept your code)
error 3: (este me aparecio en todos los if) ‘else’ without a previous ‘if’
error 4: EsPrimo was not declares (lo cree en el bucle lo encuentran en el bucle ‘for’)
error 5: ‘y’ was not declared in this scope (lo encuentran en el ultimo ‘if’)
warning 1: suggest parentheses around assignment used as truth valor
  • 0
  • 0Calificación
  • 0Seguidores
  • 92Visitas
  • 0Favoritos

10 respuestas

@Blitzkraft dijo Hace más de 3 meses:

ok, aun no analizo bien el código, pero resaltan muchas cosas:

* La declaración de variables tienes q hacerlas antes de entrar al bucle sino cada vez que el while haga un loop te las declarará nuevamente y t puede traer problemas.

* Trata de indentar mejor el código para poder entenderlo mejor, por ejemplo:

dijo:


for (i=0; i<100; i++)
{
//Aquí iría el código de tu for


}


Esto te ayuda a ti y a nosotros a comprender mejor lo que estás codificando.

* En cuanto al error de la variable "y" en este caso no es una variable "y" debes tratarlo como un string y debes colocarlo entre comillas para que te lo tome como tal sino el compilador lo comprenderá como una variable y como no está declarada te generará un error.

Eso fue lo que vi por encima en estos 2 minutos, estoy en la oficina y debo empezar a trabajar xD!
Luego le echo otro vistazo

@Blitzkraft dijo Hace más de 3 meses:

Otra cosa cuando escribes "for" e "if" una vez asignados los parámetros y condiciones de esas funciones no debes colocar ";", es decir, la sintaxis de un "for" va como te la describí en el comentario anterior y el "if" es muy parecido

@cxs00 dijo Hace más de 3 meses:

deverias inicializar todas las variables al comienzo, estas comparando usando = en ves de ==, te faltan las comillas simples al comparar un char.

@Blitzkraft dijo Hace más de 3 meses:

el error de los "else" sin "if" se debe a que luego del if colocaste ";" seguido de otra instrucción y luego el else.
Intenta esto

dijo:


if (Esprimo == true)
{
cout << "Este numero es Primo" << endl; // Si 'bool EsPrimo == true' muestre "este numero es primo"
}
else
{
cout << "Este numero no es Primo" << endl;
}



en este caso las llaves no son necesarias porque es una instrucción nada más, pero es para que veas como indentar.

t contesto de a pedazos para q no se me olviden los comentarios q tengo jajaja

pero t recomiendo q t leas un libro de c para que aprendas las sintaxis de las instrucciones y sepas de q van los errores q se t generan

@rrnum7 dijo Hace más de 3 meses:

Pero todavía tienes dos errores, que son precisamente los que te marca como warnings. El primero, de la línea 25 es porque las cadenas no se comparan con == sino con la función strcmp. Pero aún más simple: ya que en d sólo almacenas un caracter ('y' o 'n'), decláralo no como cadena sino como un simple char:
char d;
y cambias el if de modo que 'y' esté entre comillas simples:
if (d == 'y')
Por último, el de la línea 28:
while (cerrar = false);

debe ir con doble signo de igual: ==:

Nunca debes ignorar los warnings. El hecho de que el programa compile, no significa que sea correcto. El compilador únicamente marca como errores cosas como violaciones a las reglas del lenguaje. Los errores lógicos debe encontrarlos el programador.

Conviene ver los warnings como la forma del compilador de decirte: "Es muy probable que esto sea un error, pero no puedo verificarlo". Y en la gran mayoría de los casos, se tratará de un error, por eso no se deben ignorar.

Tienes que ser miembro para responder en este tema