elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problemas con else no puedo compilar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problemas con else no puedo compilar  (Leído 2,523 veces)
myblade2011

Desconectado Desconectado

Mensajes: 1


Ver Perfil
problemas con else no puedo compilar
« en: 19 Marzo 2014, 16:51 pm »

Código
  1.  
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
//Realice un programa en C++ que lea un numero N, entero y positivo, que diga si N es un numero primo o no. Los números primos son aquellos que solo son divisibles por 1 y por ellos mismos. .//
int n,i,c;
cout<<"ingrese un numero"<<endl; cin>>n;
for( i=1; i<=n;i++);
if (n%i==0)c++;

      if(c==2);{
          cout<<"el numero es primo"<<endl;
          }
else {
         cout<<"no es un numero primo "<<endl;
          }

system("pause");
return EXIT_SUCCESS;

}
Código:
[code][code][code][code][code][code][code]
[/code][/code][/code][/code][/code][/code][/code]


En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: problemas con else no puedo compilar
« Respuesta #1 en: 19 Marzo 2014, 17:05 pm »

hola myblade2011 antes de todo el código debes insertarlo dentro de las etiquetas geshi, a groso modo, sobra el ; en las líneas:
Código:
for( i=1; i<=n;i++);   

(haría el loop y luego seguría las sentencias siguientes)

y en
 
Código:
 if(c==2);{ 

(luego de la condición, no haría nada; después seguiría el curso normal del programa)

saludos


En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con else no puedo compilar
« Respuesta #2 en: 19 Marzo 2014, 17:30 pm »

Como te comentó Gh057 el problema por el que no compila se encuentra en la línea

Código
  1. if(c==2);{

Al tener ese punto y coma el if, simplemente, termina ahí, luego se abren unas llaves que ya no están relacionadas con el if y el else se queda huérfano.

Hay que tener bastante cuidado al poner los ';' en C y C++... ya que si no el compilador da errores que pueden llegar a ser bastante complicados de encontrar.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: problemas con else no puedo compilar
« Respuesta #3 en: 19 Marzo 2014, 18:36 pm »

Antes que nada, cuando le das a GeSHi elige las etiquetas de C++, así el código sale coloreado y es más fácil de seguir y justito en medio de las dos etiquetas code que te salen, repito, justito en medio, pegas tu código.

Además de lo que ya te han comentado sólo un par de observaciones:

* Si un for, if else...se componen de una sola instrucción, no son necesarias las llaves, sólo consigues recargar el códigó

Por ejemplo en:


Código
  1. if(c==2);{
  2.          cout<<"el numero es primo"<<endl;
  3.          }
  4. else {
  5.         cout<<"no es un numero primo "<<endl;
  6.          }

te sobran las llaves. No están mal, no, pero lo que te dije, recargas el código innecesariamente, además te falla la indentación sin ninguna necesidad.

* Y si el "cuerpo" del for, while, if, ....se componen de varias líneas entonces es obligado el poner las llaves.

Por ejemplo en tu código:


Código
  1. for( i=1; i<=n;i++);
  2. if (n%i==0)c++;
  3.  

además de sobrarte, como ya te comentaron el punto y coma del for, sólo te queda por separa en líneas diferentes, para una mejor claridad:

Código
  1. for( i=1; i<=n;i++);
  2. if (n%i==0)c++;
  3.  

amén de que no es buena praxis el usar la misma línea para lo que en realidad son dos  juegos de instrucciones:así no:

Código
  1. f (n%i==0)c++;

así sí:

Código
  1. for( i=1; i<=n;i++)
  2.      if (n%i==0)
  3.        c++;
  4.  



Un último detalle, la variable "c" es lo que podríamos denominar un acumulador ya que "partiendo de un valor inicial" se le van sumando incrementos en este caso concreto, c++, y sin embargo tú en la declaración no tienes inicializada  esta variable:


Código
  1. int n,i,c;

deberías haberle dado a "c" el valor inicial de cero para luego ir sumando con "c++". Al no hacerlo así es muy probable, todo depende del compilador ya que algunos por defecto inicializan las variables a cero por defecto, aunque no es lo usual, como decía es muy probable que la variable tome lo que se llama un valor basura o aleatorio y ahí te fallará siempre la condición de c==2 por culpa de haber tomado c un valor inicial extraño.

Además no dejes de indentar o sangrar todo el código con el mismo criterio.

Te paso el código con todas las observaciones:


Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. //Realice un programa en C++ que lea un numero N, entero y positivo, que diga si N es un numero primo o no. Los números primos son aquellos que solo son divisibles por 1 y por ellos mismos. .//
  8.  int n,i,c=0;
  9.  cout<<"ingrese un numero"<<endl;
  10.  cin>>n;
  11.  for( i=1; i<=n;i++)
  12.    if (n%i==0)
  13.      c++;
  14.  if(c==2)
  15.      cout<<"el numero es primo"<<endl;
  16.  else
  17.    cout<<"no es un numero primo "<<endl;
  18.  system("pause");
  19.  return EXIT_SUCCESS;
  20. }

Otra cosa es el criterio que has seguido para comprobar si el número es o no primo. Si quieres mejorarlo busca en este mismo foro o googlea un poco y obtendrás códigos más eficientes que el que estas usando.

¡¡¡¡ Saluditos! ..... !!!!



EDITADO con la observación de ivancea96
« Última modificación: 19 Marzo 2014, 19:56 pm por leosansan » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: problemas con else no puedo compilar
« Respuesta #4 en: 19 Marzo 2014, 19:35 pm »

al componerse el for de dos líneas sí son necesarias y obligatorias las llaves, así no:
Código
  1. for( i=1; i<=n;i++);
  2. if (n%i==0)c++;

En realidad, el "IF", y todo el código que entra dentro de este, es como solo 1 instrucción para el "FOR". Ya tiene sus propias llaves. Era correcto.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: problemas con else no puedo compilar
« Respuesta #5 en: 19 Marzo 2014, 19:45 pm »

En realidad, el "IF", y todo el código que entra dentro de este, es como solo 1 instrucción para el "FOR". Ya tiene sus propias llaves. Era correcto.

Bien visto ivancea96 . Ya he editado el código con tu observación.

¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 22 Marzo 2014, 08:34 am por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C++]Registros - No puedo compilar
Programación C/C++
VCore 4 2,386 Último mensaje 15 Junio 2010, 15:07 pm
por VCore
No puedo compilar!
Programación C/C++
markosliveup 2 8,825 Último mensaje 7 Marzo 2011, 16:05 pm
por Gunit
No puedo compilar con make
Programación C/C++
chica_23 3 12,571 Último mensaje 25 Marzo 2011, 05:34 am
por D4RIO
No puedo compilar esto.
Programación C/C++
0xDani 2 2,428 Último mensaje 3 Junio 2012, 12:58 pm
por 0xDani
No puedo crear y compilar proyectos en Mac c++
Programación C/C++
yoyefej298 1 3,149 Último mensaje 9 Marzo 2021, 21:58 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines