Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aikanáro Anário en 28 Mayo 2010, 05:31 am



Título: No se ejecuta el programa compilado en Dev-c++
Publicado por: Aikanáro Anário en 28 Mayo 2010, 05:31 am
No se lo que pasa, al principio se se ejecutaban, pero despues no, probe desintalando y volviendo a instalar, pero el unnistaller del programa dejo todos los archivos igual, a pesar de que decia que se habia desintalado y no se podia desintalar por agregar o quitar programar porque no aparecia, asi que lo volvi a instalar encima, pero no funciono.

El caso es que por ejemplo, este codigo:
Código:
#include <stdio.h>
int x,y;
main()
{
printf("Introduce un numero");
scanf("%d%d",&x,&y);
if(x==y)
{
printf("%d y %d son iguales",x,y);
system("pause");
}
else
{
printf("%d y %d no son iguales",x,y);
system("pause");
}
}

No aparece si quiera la ventana de ms-dos, se compila sin problema y sin dar errores, pero no se muestra la ventana, ni por un segundo.

Pero con este codigo:
Código:
#include <stdio.h>
int long x,y;
main()
{
printf("Este programa le muestra a partir de dos cantidades dadas,\ncual es mayor y cual es menor. Presione Enter para continuar");
getchar();
Inicio:
printf("\tIntroduzca la primera cantidad ");
scanf("%d",&x);
printf("\tIntroduzca la segunda cantidad ");
scanf("%d",&y);
if(x<y) //10 menor que 20 por ej.
{
printf("\t\t%d Es menor que %d\n",x,y); //segundo numero (10) mayor que el primero (20)
printf("\t\t%d Es mayor que %d\n",y,x);
goto Inicio;
}
else if(x>y)
{
printf("\t\t%d Es menor que %d\n",y,x); //segundo numero (20) mayor que el primero (10)
printf("\t\t%d Es mayor que %d\n",x,y);
goto Inicio;
}
else(x=y);
{
printf("\t\t%d Es igual a %d\n",x,y);
printf("\t\tLas dos cantidades son iguales\n");
goto Inicio;
}
}

Si se ejecuta y se muestra, no se porque, parece como si solo fuera con codigos pequeños. Lo que hace deducir que si se ejecutan, pero tan rapido que la ventana ni se muestra?, pero para eso puse system("pause");

No entiendo que pasa


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: MasterPM2 en 28 Mayo 2010, 05:35 am
ponele un
Código:
return = 0;


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: @synthesize en 28 Mayo 2010, 05:54 am
Prueba lo del return.

Pero no te comento por eso, si no por que, la instrucción 'goto' no es para nada aconsejable en programación modular... Te lo digo como consejo, para que vayas aprendiendo ^^


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: MasterPM2 en 28 Mayo 2010, 06:02 am
tiene razon, y si nos vamos a la buena practica del programador, te recomiendo inicializar siempre tus variables en cero al momento de declararlas, de lo contrario podria almacenarte "basura" en esos espacios de memoria reservados, y alterar el resultado o hacer, como vos decis "que el programa se comporte extraño".


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: Aikanáro Anário en 28 Mayo 2010, 06:35 am
A donde debo poner el return=0 ?
me da error

Pues acabo de leer por ahi que cuando se empieza con main() (como yo lo hice) el programa espera ningun resultado, pero cuando se inicia con void main(), no. Entonces puse void main() al principio y al final return 0; y se compilo, pero no pasa nada de todas formas.

Ademas al principio no tenia que poner el return...

Y bueno, lei por ahi, si, que goto da muchos problemas, pero no encontraba otra forma de poner para que el programa volviera a comenzar


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: @synthesize en 28 Mayo 2010, 07:13 am
int main() = devuelves un entero

void main() = NO devuelves nada

Es aconsejable que main() SIEMPRE devuelva un valor, pues es lo que espera el sistema operativo, por lo cual, haz siempre int main() y return (valor).

Y para hacer que se ejecute varias veces, puedes usar un bucle...

Código
  1.  
  2. ...
  3. int sw =0;
  4.  
  5. do
  6. {
  7.    funciones();
  8.    funciones();
  9.    si (pedir_numero()!=0)
  10.    {
  11.        sw =1;
  12.    }
  13. } while (sw==0);
  14.  
  15. ...
  16.  
  17.  

Repite el bucle mientras que sw sea igual a 0. en el momento que sw sea distinto que 0, sale del bucle. Lee sobre estructuras de control, así te evitas usar goto ^^

http://es.wikipedia.org/wiki/Estructura_de_control_%28computaci%C3%B3n%29 (http://es.wikipedia.org/wiki/Estructura_de_control_%28computaci%C3%B3n%29)

Y siempre intenta evitar bucles infinitos

http://es.wikipedia.org/wiki/Bucle_infinito (http://es.wikipedia.org/wiki/Bucle_infinito)

Y por último, con system("pause"); condicionas el uso del programa en sistemas Windows. Para mejorar la portabilidad y el funcionamiento, puedes usar getchar(); o similar...





Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: Littlehorse en 28 Mayo 2010, 07:27 am
getch(); tampoco es portable. getchar(); en todo caso.

Saludos


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: @synthesize en 28 Mayo 2010, 07:29 am
getch(); tampoco es portable. getchar(); en todo caso.

Saludos

Vale, no me acordé de que estaba definido en conio... Gracias por avisar, ya modifiqué


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: Aikanáro Anário en 28 Mayo 2010, 16:33 pm
Pero el programa no se ejecuta todavia, por ahora mi principal problema


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: @synthesize en 28 Mayo 2010, 20:06 pm
¿Qué compilador usas? A mi con GCC me va perfectamente (Quitando los system("pause"))

(http://i45.tinypic.com/qx5ro4.jpg)

Prueba una cosa, scanf puede dar problemas al ensuciar el buffer, pide las 2 variables por separado en vez de en el mismo scanf, y haz fflush (No es muy recomendado, como dijimos) para limpiar el buffer.

Código
  1.  
  2. int a,b;
  3. fflush(stdin);
  4. scanf("%d", &a);
  5. fflush(stdin);
  6. scanf("%d", &b);
  7.  
  8. if (...)
  9.  
  10.  


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: Aikanáro Anário en 28 Mayo 2010, 22:30 pm
Al parecer el programa Dev-C++ se averio. Lo borre, volvi a instalar y ya funciona normal.

Ahora aparece la ventana, pero se cierra muy pronto, incluso con getchar();
Código:
#include <stdio.h>
int x=0,y=0;
main()
{
printf("Introduce un numero");
scanf("%d%d",&x,&y);
if(x==y)
{
printf("%d y %d son iguales",x,y);
[b]getchar();[/b]
}
else
{
printf("%d y %d no son iguales",x,y);
[b]getchar();[/b]
}
}

La ventana solo se queda si pongo otro getchar(); despues del primero
Código:
getchar();
getchar();


Título: Re: No se ejecuta el programa compilado en Dev-c++
Publicado por: Akai en 28 Mayo 2010, 22:42 pm
eso pasa porque el primer getchar coge basura del buffer, prueba lo siguiente:

Código
  1. setbuf(stdin,NULL)

Eso debería funcionarte. Sin embargo, eso sería innecesario en consola, o con codeblocks, que retiene el final de la ejecución del programa indicándote valores de retorno del mismo y tiempo empleado.