Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jairogon en 26 Junio 2010, 05:11 am



Título: La ventana desaparece
Publicado por: jairogon en 26 Junio 2010, 05:11 am
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?

Código:
#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 ;-)


Título: Re: La ventana desaparece
Publicado por: nicolas_cof en 26 Junio 2010, 10:44 am
La verdad no conozco mucho el ide Dev-C++, pero podrias intentar con system( "PAUSE" );

Te recomiendo leer este tema...

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Pd: Ojo que no recomiendo su uso para nada, ya que no tiene sentido hacer llamadas al sistema para hacer una pausa.

Salu10.


Título: Re: La ventana desaparece
Publicado por: Horricreu en 26 Junio 2010, 13:54 pm
La verdad no conozco mucho el ide Dev-C++, pero podrias intentar con system( "PAUSE" );

Te recomiendo leer este tema...

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Pd: Ojo que no recomiendo su uso para nada, ya que no tiene sentido hacer llamadas al sistema para hacer una pausa.

Salu10.

También puedes probar a vaciar el buffer. En C se utiliza fflush() (http://www.cplusplus.com/reference/clibrary/cstdio/fflush/) (pero en el enlace que te pasó nicolas_cof, te explica los problemas de fflush() y cómo solucionarlos) y, en C++ se utiliza sync() (http://www.cplusplus.com/reference/iostream/istream/sync/).

Saludos :P