rubywoo 0 Denunciar post Postado Março 22, 2015 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
Felipe-Petrópolis 11 Denunciar post Postado Março 23, 2015 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
rubywoo 0 Denunciar post Postado Março 23, 2015 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
Felipe-Petrópolis 11 Denunciar post Postado Março 23, 2015 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