Dúvida com script escrito em C

Use esta categoria para postar tudo referente a C ou C++ (não utilize para C#, para isto vá até o fórum INTERNET)

Dúvida com script escrito em C

Mensagempor NerdBigHead em 05 Mar 2010, 22:39

Iae pessoal, to estreiando aqui no forum com uma dúvida:

Seguinte...

To fazendo um script em C sem intenção de ser um software ou algo pra outros usarem, é simplesmente um cálculo envolvendo vetores e matrizes. A questão é que em determinado momento eu precisei declarar uma matriz T[21][2001], até aí tudo bem. No entanto, quando essa matriz vai ser utilizada numa estrutura de repetição, dá um problema e o programa é fechado. =[

Segue o trecho problemático do código.
Código: Selecionar tudo
           /*Declarando vetores de tempo, temperatura e posicão*/
                     float t[nnt+1], x[nnx+1], T[nnx+1][nnt+1];
                     printf("\nmatrizes declaradas\n");   
                     
                     /*Valores iniciais*/
                     for (i=0 ; i<=nx ; i++)
                     {
                         x[i]=i*dx;
                         T[i][0]=300;
                     } 
                         
                     /*Iniciando o metodo das diferenças finitas*/
                     for (j=0 ; j<=nt ; j++)
                     {
                         t[j]=j*dt;
                         fprintf(tempo, "%.5f\n",t[j]);
                         printf("antes de entrar no loop interno\n");
                         for(i=0 ; i<=nx ; i++)
                         {
                                 if(i==0)
                                 {
                                      printf("se i==0\n");
                                      T[i-1][j]=T[i+1][j];/*condicão de contorno em x=0*/
                                      T[i][j+1]=(1-2*r)*T[i][j]+r*(T[i+1][j]+T[i-1][j]);
                                 }
                                 else if(i==nx)
                                 {
                                      T[i+1][j]=-2*dx*(h/k)*(T[i][j]-400)+T[i-1][j]; /*condicão de contorno em x=L*/
                                      T[i][j+1]=(1-2*r)*T[i][j]+r*(T[i+1][j]+T[i-1][j]);
                                      printf("se i==nx\n");
                                 }
                                 else
                                 {
                                     T[i][j+1]=(1-2*r)*T[i][j]+r*(T[i+1][j]+T[i-1][j]);
                                     printf("else\n");
                                 }
                                 fprintf(temperatura, "%.5f ",T[i][j]); /*Escrevendo a temperatura*/
                                 if (j==0)
                                 fprintf(posicao,"%.5f\n", x[i]); /*escrevendo a posição*/
                                 printf("rodou\n");
                         }
                         fprintf(temperatura,"\n");
                     }
              }
              fprintf(parametros,"Numero de dados de tempo: %d\n Numero de dados de espaço: %d",nnt+1,nnx+1);

Em um trecho anterior as variáveis nnx e nnt recebem seus valores, no caso tá dando problema com nnx e nnt iguais a 20 e 2000, respectivamente. Eu vinha executando o mesmo script anteriormente sem problemas, nesse caso as variáveis nnx e nnt valiam 20 e 200, respectivamente.

Bom, como antes vinha funcionando perfeitamente com um valor de nnt=200, suponho que o que está ocorrendo não esteja relacionado ao script em sí. Alguem pode dar uma luz? to precisando muito fazer isso.

PS.: Esses printf() aí meio sem sentido era só uma forma de eu diagnosticar onde o problema acontecia, nada demais.
NerdBigHead
 
Mensagens: 1
Data de registro: 05 Mar 2010, 22:26

Re: Dúvida com script escrito em C

Mensagempor Denys em 09 Mar 2010, 09:44

Bem, seu código tem bastantes variáveis que executam várias operações aritméticas.
Confesso que não sei que contas são essas, mas isso não vem ao caso.
A princípio a única coisa que posso lhe dizer é se você está apontando corretamente para o arquivo que você está tentando escrever, se você tem permissão de gravar ou alterar este arquivo na pasta em que ele está, coisas desse tipo. Pois pelo o que eu entendi, o erro ocorre em tempo de execução (runtime).
Trocando informações, ensinando, aprendendo e moderando

fórum: http://forum.tiexpert.net
site: http://www.tiexpert.net
Avatar de usuário
Denys
Site Admin
 
Mensagens: 12
Data de registro: 13 Jun 2008, 14:21


Retornar para C/C++

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante

cron