Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rubywoo

Programa é executado porém não aberto

Recommended Posts

Boa tarde!

Utilizei um programa para geração aleatória e criação de .dat que utilizava no Dev C, em 2012 até começo de 2013.

Porém, formatei o computador, coloquei windows 8, baixei Dev C 5,9,2 e...Meu programa compila, aparece que está sendo executado, no gerenciador aparece como processo e eu me pergunto: onde foi parar a tela preta que abria e eu digitava as sementes pro gerador aleatório?

 

 

Testei em um computador com windows 7 e um com windows 8 e tenho o mesmo problema. Peço desculpas se for uma coisa muito simples mas não faço idéia de como resolver.

 

Código:

 

//Libraries
#include <limits.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//Capacidade
double CapT = 144;
//Tempo de Setup
double Tsetup = 4;
//Semente do gerador de números aleatórios
long seed;
int Unif(long *lSeed,int iLow,int iHigh)
{
double dValue_0_1;
long lm=LONG_MAX,lb=127773;
int ia=16807,ic=2836;
*lSeed=ia*((*lSeed)%lb) - ((*lSeed)/lb)*ic;
if (*lSeed < 0)
*lSeed += lm;
dValue_0_1 = ((double) *lSeed)/lm;
return (iLow + (int)(dValue_0_1 * (iHigh-iLow+1)));
}
void write(FILE *arq, int J, int T, int SubT, int M)
{
int j,t;
//numero de períodos
fprintf(arq,"periodos = %d;\n", T);
//numero de bebidas
fprintf(arq,"bebidas = %d;\n", J);
//numero de maquinas
fprintf(arq,"subperiodos = %d;\n", SubT);
//numero de subperíodos
fprintf(arq,"maquinas = %d;\n\n", M);
//Matriz de demanda
int **dem;
dem = (int**)malloc(J*sizeof(int*));
for(j=0; j<J; j++)
dem[j] = (int*)malloc(T*sizeof(int));
//Soma da demanda total
double soma;
int infactivel;
do
{
//Zera a matriz de demanda
for (j=0; j<J; j++)
for (t=0; t<T; t++)
dem[j][t]=0;
for (soma = 0.0; soma < 0.8*CapT*T; soma += dem[j][t]*0.47)
{
do
{
//escolhendo posições aleatoriamente
j =Unif(&seed,0,J-1);
t =Unif(&seed,0,T-1);
} while (dem[j][t]>0); //checa se a posição está livre
dem[j][t] = Unif(&seed,110,216); //gera demanda
}//fecha for
soma = 0.0;
infactivel = 0;
for (t=0; t<T && infactivel == 0; t++)
{
for (j=0; j<J; j++)
{
//Se demanda positiva soma o tempo de processamento da demanda e o tempo de setup.
if (dem[j][t] > 0)
{
soma += dem[j][t]*(0.47)+ Tsetup;
}
} //fecha for J
//Se o tempo necessário extrapola a capacidade acumulada o problema é infactível.
if (soma > CapT*(t+1))
infactivel = 1;
} //fecha for T
}while (infactivel == 1); //fecha do while 1 */
//Demanda
fprintf(arq, "\nd = \n");
fprintf(arq,"[ \n");
for (j=0; j<J; j++)
{
fprintf(arq,"[");
for (t=0; t<T; t++)
fprintf(arq,"%d ",dem[j][t]);
fprintf(arq,"],\n");
}
fprintf(arq,"];");
// Processamento das combinações de máquinas
fprintf(arq,"\na = [%.3lf,%.3lf,%.3lf,%.3lf,%.3lf,%.3lf,%.3lf,%.3lf,%.3lf,%.3lf];",1.000,0.670,0.615,0.470,1.07, 0.52,0.41, 0.64,0.39,0.326);
//Tempo de Setup
fprintf(arq,"\nb = %.3lf;",Tsetup);
//Combinação das Máquinas
fprintf(arq, "\nMaquinas = [{1,2},{1,2,3},{1,2,4},{1,2,3,4},{5}{1,2,5},{1,2,3,5},{4,5},{1,2,4,5},{1,2,3,4,5}];"); //evita soluções simétricas
//Produção Mínima
fprintf(arq,"\nq = [1.25 2.5 2.084 3.334 2.5];");
/*//custo de estoque
fprintf(arq,"\nH = [ ");
for(j=0; j<J; j++)
fprintf(arq,"%.2lf,",1.00);
fprintf(arq,"];");
//custo de atraso
fprintf(arq,"\nL = [");
for(j=0; j<J; j++)
fprintf(arq,"%d,",10);
fprintf(arq,"];");
//custo de setup
fprintf(arq,"\nB = [");
for(j=0; j<J; j++)
fprintf(arq,"%d,",100);
fprintf(arq,"];");*/
//Capacidade considerando 24*6 dias
fprintf(arq,"\nK = %.3lf;",CapT);
//Estoque Inicial
fprintf(arq,"\nEInicial = [");
for(j=0; j<J; j++)
fprintf(arq,"%d,",0);
fprintf(arq,"];");
//Lote Máximo
fprintf(arq,"\nLoteMax = %d;",48);
}
int main ()
{
int J[] = {5,5,5,5,5, 5, 5, 5, 6, 7, 8, 9, 10};
int T[] = {6,7,8,9,10,11,12,13,13,13,13,13,13};
int it, comb;
printf("Digite a semente = \n");
scanf("%ld", &seed);
for (comb=0; comb<13; comb++)
{
for (it=0; it<5; it++)
{
//Nome do problema
char dados[100];
sprintf(dados,"P%d_%d_%d.dat", J[comb],T[comb],it);
//Ponteiro para o Arquivo
FILE *fd;
if ((fd = fopen (dados, "w")) == NULL)
{
printf ("Erro na abertura do arquivo de dados escrita!!!\n");
exit (0);
}
write(fd,J[comb], T[comb],10,10);
fclose(fd);
}
}
system ("PAUSE");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

 

Olha não sei se ainda lhe interessa, mas eu testei o codigo aqui, não sei direito o que exatamente ele deve fazer mas até onde pude perceber ele parece funcionar!

 

Após a compilação quando ele é executado a tela preta aparece com a seguinte mensagem: Digite a semente:

eu então digito um numero qualquer 2 e aperto ENTER, o programa então finaliza a execução.

 

Na pasta onde o programa foi salvo aparecem uma serie de arquivos .DAT, 65 para ser exato, não cheguei a abrir todos mas ao que parece os valores aleatorios que deveriam ser gerados nos arquivos o foram, não sei se tais valores deveriam ser alterados a cada nova execução e sementes inseridas, não cheguei a prestar atenção nisso.

 

Já tive alguns problemas similares que não consegui resolver no Dev-c++, por isso já não o uso mais. acho que você pode conseguir resolver o problema se entrar no forum do Dev-c++.

 

 

Ubuntu 14.04 GCC 4.8 Codeblocks 13.12

 

 

Espero ter Ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Felipe, obrigada por me escrever.

Se ele gerou 65 arquivos .dat, o programa está funcionando perfeitamente! Agora porque a tela preta não aparece pra mim (testei em dois computadores diferentes!) permanece um mistério. Será que é configuração do Dev C?

Eu só uso windows e sempre usei o DevC, não me dou bem com o Borland, rs. Tem algum outro compilador que vc possa me indicar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

 

Olha sou incinate em C e em computação por isso não acredito que vou ser muito util.

 

 

Eu acredito que possa ser realmente alguma configuração que foi alterada no Dev-c++ ou em alguma parte do Codigo, não acredito que seja este o problema, mas já aconteceu comigo quando eu usava o Dev-c++ de a janela fechar quase que imediatamente apos iniciar a execução mesmo usando system("PAUSE"), tente usar a função getchar() no lugar de system("PAUSE") ! Se isto não funcionar não acredito que serei capaz de lhe ajudar muito mais.

 

Quanto a outra pergunta, existem dois compiladores que eu usava bastante no windows, um deles é GCC compiler:

http://tdm-gcc.tdragon.net/

 

e o outro o Open watcom: http://www.openwatcom.org/index.php/Main_Page

 

Ambos podendo ser baixados e instalados no windows, apenas a configuração deles no Dev-c++ que eu não sei como fazer manualmente, mas se lhe interessa após instala-los você pode instalar a IDE codeblocks, pois eu tenho certeza que ela vai reconhecer os dois compiladores se eles estiverem instalados, e principalmente você pode facilmente alterar qual deles você vai usar para compilar seus projetos!

 

 

Obs:. Acabei de pensar em outra possibilidade talvez possar ser algum problema de compatibilidade do dev-c++ com o windows, tente clicar com o botao direito do mouse sobre o executavel do Dev-c++ e alterar a compatibilidade para com outra versão do windows, alem disso você tambem pode tentar mudar a permissao de execução para administrador!

 

 

Espero ter Ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.