No se ejecuta el programa compilado en Dev-c++

Iniciado por Aikanáro Anário, 28 Mayo 2010, 05:31 AM

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

Aikanáro Anário

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:
#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:
#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
Lo que faltaba en internet: http://binar10s.blogspot.com/

MasterPM2

ANBU暗部   Ansatsu Senjutsu Tokushu Butai暗殺戦術特殊部隊 Fuerza militar especial táctica de eliminación........MyDarker Sid3

<firma retirada, no la vuelvas a poner o se te sancionara>  <- - Amenazas

@synthesize

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 ^^

MasterPM2

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".
ANBU暗部   Ansatsu Senjutsu Tokushu Butai暗殺戦術特殊部隊 Fuerza militar especial táctica de eliminación........MyDarker Sid3

<firma retirada, no la vuelvas a poner o se te sancionara>  <- - Amenazas

Aikanáro Anário

#4
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
Lo que faltaba en internet: http://binar10s.blogspot.com/

@synthesize

#5
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...



...
int sw =0;

do
{
   funciones();
   funciones();
   si (pedir_numero()!=0)
   {
       sw =1;
   }
} while (sw==0);

...



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

Y siempre intenta evitar bucles infinitos

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...




Littlehorse

getch(); tampoco es portable. getchar(); en todo caso.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

@synthesize

Cita de: Littlehorse en 28 Mayo 2010, 07:27 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é

Aikanáro Anário

Pero el programa no se ejecuta todavia, por ahora mi principal problema
Lo que faltaba en internet: http://binar10s.blogspot.com/

@synthesize

¿Qué compilador usas? A mi con GCC me va perfectamente (Quitando los system("pause"))



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.



int a,b;
fflush(stdin);
scanf("%d", &a);
fflush(stdin);
scanf("%d", &b);

if (...)