PDA

Ver la versión completa : La ventana desaparece




jairogon
06-25-2010, 11:07 PM
El siguiente programa corre sin problemas en el Dev-C++, pero la ventana del ejecutable desaparece aún asi le haya colocado dos getchar() para evitar ese problema, de igual forma cambie los getchar() por cin.get() y tampoco funciono, la verdad no se que sucede?



#include <iostream>
#include <cstdlib>
#include <ctime>
#include<cstdio>

using namespace std;

int f;

int aleatorio() //Funcion para generar aleatorios para llenar la matriz

{
int r=0,z;

srand((unsigned) time(NULL));

do{
z=rand()%20;
if(z==0)r=0;
else r=1;

}while(r!=1);
return z;
}

void calculos(int e[3]) //Función encargada de los calculos y procedimientos
{
for(int i=0;i<f;i++)
{
e[i]=aleatorio();

for(int t=i-1;t>=0;t--)
{
if(e[i]==e[t])
{
i--;

break;
}
}
}

}

void impresion(int g[3]) //Función que imprime los resultados.
{
cout<<"\n\n";

for(int m=0;m<f;m++)
{
cout<<g[m]<<"\t";
}
}

int main()
{
int a[3]={0,0,0},b[3]={0,0,0},c[3]={0,0,0},sumaa=0,sumab=0,z=0;

int h=0;

system("cls");

cout<<"\n\nDE QUE DIMENSIONES QUIERE EL CUADRADO MAGICO?"<<endl<<endl;

cout<<"1. PARA 3x3"<<endl<<endl;

cin>>z;

if(z<=0||z>=2)cout<<" \n\nERROR, EL CUADRADO NO ES EL INDICADO"<<endl<<endl;

if(z==1)f=3;

do{

sumaa=0,sumab=0;

calculos(a);

for(int k=0;k<f;k++)
{
sumaa=sumaa+a[k];
}

calculos(b);

for(int m=0;m<f;m++)
{
sumab=sumab+b[m];
}


if(sumaa==sumab)h=1;


}while(h!=1);

impresion(a);

cout<<"= "<<sumaa;

impresion(b);

cout<<"= "<<sumab;

for(int x=0;x<f;x++)
{
c[x]=sumaa-a[x]-b[x];
}

impresion(c);

cout<<"= "<<sumaa;

cout<<"\n\n========================";

cout<<"\n\n";

cout<<sumaa<<" "<<sumaa<<" "<<sumaa<<endl;

getchar();
getchar();

return 0;
}
Gracias

Ortek
06-27-2010, 03:57 AM
Pon esto:

system('PAUSE')

Antes de return 0;



Saludos :)

León
07-25-2010, 03:48 AM
Bueno disculpa pero me han dicho que usar system("pause"); es una mala práctica además no es portable, mejor usa:

#include <limits> //para usar numeric_limits


std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //limpia el buffer
std::cin.get(); //pausa el programa


puedes sustituir el std::cin.ignore por std::cin.sync(); para limpiar el buffer, es mas corto pero eso no es portable así que de momento te recomiendo usar el ignore, si llegas a usar el sync puedes eliminar la libreria limits de tu codigo