Ir para conteúdo
Fórum Script Brasil

Rony melo

Membros
  • Total de itens

    8
  • Registro em

  • Última visita

Tudo que Rony melo postou

  1. Resolvido!!! navegando por ai achei uma coisa que me ensina a direção do caminhos da pedra... pra quem estiver interessado, eis aqui o link: http://www.math.ucla.edu/~anderson/JAVAcla...aInterface.html
  2. cara porq você está dizendo que sua matriz tem tamanho 0? declara como um ponteiro.... e qual é o tipo de erro? eu estou com problema também com matrizes, e no Linux é reportado um segmetation fault, quanto no windows o programa é simplesmente encerrado .
  3. aqui no meu trabalho faz-se muitos programas em matlab e fortram para moer números. E estamos com vontade de fazer uma interface gráfica pra esses programas. Seria possível através do java chamar os programas em fortram? ou teria que reescrever todo o programas, o que seria inviável....
  4. cara pra você plotar esses pontos é so fazer isso: x=[x1,x2,x3....xn]; y=[y1,y2,y3....xn]; plot(x,y,'+'); pra ajustar uma curva dá um certo trabalho no matlab, eu tenho o programinha escrito aqui mas agora to sem tempo de te explicar. Acoselho você fazer no origin ou no excel. qualquer coisa posta novamente que tento te ajudar...
  5. Rony melo

    Segmetation Fault

    olha aqui flávio os códigos do alocar e liberar float **Alocar (int m, int n) { float **v; /* ponteiro para a matriz */ int i; /* variavel auxiliar */ if (m < 1 || n < 1) { /* verifica parametros recebidos */ printf ("** Erro: Parametro invalido **\n"); return (NULL); } /* aloca as linhas da matriz */ v = (float **) calloc (m, sizeof(float *)); if (v == NULL) { printf ("** Erro: Memoria Insuficiente **"); return (NULL); } /* aloca as colunas da matriz */ for ( i = 0; i < m; i++ ) { v[i] = (float*) calloc (n, sizeof(float)); if (v[i] == NULL) { printf ("** Erro: Memoria Insuficiente **"); return (NULL); } } return (v); /* retorna o ponteiro para a matriz */ } e aqui tá o código para liberar float **Liberar (int m, int n, float **v) { int i; /* variavel auxiliar */ if (v == NULL) return (NULL); if (m < 1 || n < 1) { /* verifica parametros recebidos */ printf ("** Erro: Parametro invalido **\n"); return (v); } for (i=0; i<m; i++) free (v[i]); /* libera as linhas da matriz */ free (v); /* libera a matriz */ return (NULL); /* retorna um ponteiro nulo */ } detalhe, esse código eu pegquei de uma apostilha da UFMG.... esse negocio de migra de linguagem tá dando um trabalho!!!
  6. Rony melo

    Segmetation Fault

    Veleu flavio pela ajuda, demorei a responder pois tava sem net em casa. O erro era de execução, dai eu me arretei e fui estudar esse negocio de alocação dinâmica(ainda não sei como funciona) nuns livros de C que eu tenho e casa, e lá possuia um script de alocação para matrizes bidimensionais, o qual resolveu o meu problema parcialmente. suponhamos o seguinte código: #include <stdio.h> #include "lfixo.h" extern long int a,m; extern float nad[7]; float Tgl0 = 580; float Tr0 = 590; void ci(float **Tgl,float **Ts,float **Tr) { Tgl = Alocar(a,m);Ts = Alocar(a,m);Tr = Alocar(a,m); long int i,j,k; for(j=0;j<m;j++) { // inicialização das temperaturas Tgl[0][j]=Tgl0; //condições iniciais de temperatura na fase fluida Ts[0][j]=Tgl0; //condições iniciais de temperatura na fase sólida Tr[0][j]=Tr0; //condições iniciais de temperatura na fluido refrigerante } Liberar(a,m,Tgl);Liberar(a,m,Ts);Liberar(a,m,Tr);} onde as funções Alocar e Liberar funcionam perfeitamente alocando a minha matriz 2D. Agora considerando o seguinte main: #include <stdio.h> #include "lfixo.h" long int a=2400,m=6; float nad[7],dt; void main(void) { float **Tgl, **Ts, **Tr; ci(Tgl,Ts,Tr); } esse código funciona perfeitamente. no entanto se eu alterar a função ci(mantendo o mesmo main) para: #include <stdio.h> #include "lfixo.h" extern long int a,m; extern float nad[7]; float Tgl0 = 580; float Tr0 = 590; void ci(float **Tgl,float **Ts,float **Tr) { Tgl = Alocar(a,m);Ts = Alocar(a,m);Tr = Alocar(a,m); long int i,j,k; for(j=0;j<m;j++) { // inicialização das temperaturas Tgl[0][j]=Tgl0; //condições iniciais de temperatura na fase fluida Ts[0][j]=Tgl0; //condições iniciais de temperatura na fase sólida Tr[0][j]=Tr0; //condições iniciais de temperatura na fluido refrigerante } for(k=0;k<a;k++){ for (j=1;j<=m-1;j++) { // nós internos Tgl[k+1][j]=Tgl[k][j]*(1-2*nad[1]-nad[2]-nad[3])+Tgl[k][j-1]*(nad[0]+nad[1])+Tgl[k][j+1]*(-nad[0]+nad[1])+nad[2]*Ts[k][j]+nad[3]*Tr[k][j]; } } Liberar(a,m,Tgl);Liberar(a,m,Ts);Liberar(a,m,Tr); } o programa não roda até o valor final de a, por exemplo, para a=240, o programa só roda até a=226 e é retornado um segmentation fault. Se eu disser que a=226, ele so rodará para um valor de a=200, irá me rotornará um segmentation faul também, ou seja, não importa o valor de o for nunca chega até o final.....e eu prciso fazer esse programa rodar de todo jeito. isso será um trabalho que vai para um congresso de engenharia química. help me please?!?!?!?!?
  7. Rony melo

    Segmetation Fault

    valeu Flavio, na verdade eu estava puxando n de txt que não mostrei aqui no código, no entanto este estar com valores distorcidos. Portanto comecei a especificar o valor de n no programa principal mesmo, so pra testar o meu código.....dai esbarrei em outro segmentation fault, só que pra valores de "a" bem mais alto pra ser exato "a=17310", no entanto eu troquei os float por double e ainda continuou dando este erro..... eu preciso que minhas matrizes sejam as maiores possíveis, pois a simulação que irei fazer vai requerer matrizes enormes mesmo. Pelo que eu andei lendo, um double e long int já seria suficiente, mas o erro persistiu. e agora?
  8. ae pessoa estou tentando trocar um programa que eu tenho em matlab pra c, mas estou encontrado vários problemas, e o que mais está roubando o meu tempo é esse segmetation fault. já li aguns tópicos aqui no forum, mas não consegui resolver o meu problema. aqui está o programa principal #include <stdio.h> #include "lfixo.h" int n; const int a=4; float nad[7]; void main(void) { float Tgl[ 100][n],Ts[ 100][n],Tr[ 100][n],Ccos[ 100][n],Ccol[ 100][n],Ccog[ 100][n]; float CH2s[ 100][n],CH2l[ 100][n],CH2g[ 100][n],Ctoll[ 100][n],Ctols[ 100][n]; d 100dos(); ci(Tgl,Ts,Tr,Ccos,Ccol,Ccog,CH2s,CH2g,CH2l,Ctoll,Ctols); } e aqui a minha função #include <stdio.h> #include "lfixo.h" extern int a,n; extern float nad[7]; float Tgl0 = 580; float Tr0 = 590; void ci(float Tgl[ 100][n],float Ts[ 100][n],float Tr[ 100][n],float Ccos[ 100][n],float Ccol[ 100][n],float Ccog[ 100][n], float CH2s[ 100][n],float CH2l[ 100][n],float CH2g[ 100][n],float Ctoll[ 100][n],float Ctols[ 100][n]) { int i,j,k; for(k=0;k<=a;++k) {for(j=0;j<=n;++j) { // inicialização das temperaturas Tgl[k][j]=Tgl0; //condições iniciais de temperatura na fase fluida Ts[k][j]=Tgl0; //condições iniciais de temperatura na fase sólida Tr[k][j]=Tr0; //condições iniciais de temperatura na fluido refrigerante // incialização das concentrações Ccos[k][j]=0; Ccol[k][j]=0; Ccog[k][j]=0; CH2s[k][j]=0; CH2l[k][j]=0; CH2g[k][j]=0; Ctols[k][j]=0; Ctoll[k][j]=0; } } Ctoll[0][0]=1; } pra valores de a ou n maiores que 4, eu obtenho um segmetation fault... e ai, aguel tem alguma ideia
×
×
  • Criar Novo...