Enviado em 04/09/2019 - 00:01h
Fiz uma pesquisa na documentação a respeito do tipo "long double" em C e verifiquei que, para ler e escrever seus valores, devo usar o formato "%Lf".Enviado em 04/09/2019 - 01:58h
Você pode mostrar a listagem exata do trecho de código em questão?#include <stdio.h> int main(void){ long double x=3.0L; int a=1; printf("%Lf :: %d\n", x, a); printf("%zu %p :: %zu %p\n", sizeof x, &x, sizeof a, &a); }
3.000000 :: 1 16 0x7fff69d65af0 :: 4 0x7fff69d65aec
Enviado em 04/09/2019 - 16:33h
printf( "\tDigite o numero de linhas: " ); scanf( " %u", linha ); fflush( stdin ); printf( "\tDigite o numero de colunas: " ); scanf( " %u", coluna ); fflush( stdin ); if( ( M = calloc( linha, sizeof *M ) ) == NULL ) printf( "\tERRO EM ALOCACAO DE MEMORIA." ); for( i = 0; i < linha; i++ ) { if( ( M[i] = calloc( coluna + 1, sizeof **M ) ) == NULL ) printf("\tERRO EM ALOCACAO DE MEMORIA."); for( j = 0; j < coluna; j++ ) { printf( "\n\tDigite o %do. coeficiente da %da. equacao: ", j+1, i+1 ); scanf( " %Lf", &M[i][j] ); fflush( stdin ); } printf( "\n\tDigite o resultado da %da. equacao: ", i+1 ); scanf( " %Lf", &M[i][j] ); fflush( stdin ); } for( i = 0; i < linha; i++ ) { printf( "\n\t" ); for( j = 0; j < coluna - 1; j++ ) printf( "(%Lf)*X%d + ", M[i][j], j ); printf("(%Lf)*X%d = ", M[i][j], j ); printf( "%Lf", M[i][++j] );
Enviado em 04/09/2019 - 19:35h
Eu raramente usei long double, mas nunca tive problemas nas poucas vezes em que usei tal tipo.Enviado em 05/09/2019 - 14:32h
Enviado em 05/09/2019 - 22:22h
Enviado em 07/09/2019 - 02:17h
Enviado em 07/09/2019 - 02:35h
Em tempo, aconteceu uma mensagem de erro que antes não aparecia:void ExibirMatriz( long double** matriz, unsigned int nLin, unsigned int nCol ) { int linha, coluna; for( linha = 0; linha < nLin; linha++ ) { printf( "\n\t" ); for( coluna = 0; coluna < nCol; coluna++ ) printf( "\t%Lf ", matriz[linha][coluna] ); } } long double* FatoracaoLU( long double** matriz, unsigned int tamanho ) { long double* X = calloc( tamanho, sizeof *X ), Y[tamanho], **Lower = NULL; int linha, coluna, pivo; if( ( Lower = calloc( tamanho, sizeof *Lower ) ) == NULL ) { printf( "\n\t_____ ERRO EM ALOCACAO DE MEMORIA _____" ); return NULL; } for( pivo = 0; pivo < tamanho; pivo++) if( ( Lower[pivo] = calloc( tamanho - 1, sizeof **Lower ) ) == NULL ) { printf( "\n\t_____ ERRO EM ALOCACAO DE MEMORIA _____" ); return NULL; } for( pivo = 0; pivo < tamanho - 1; pivo++ ) { for( linha = pivo + 1; linha < tamanho; linha++ ) { if( matriz[pivo][pivo] == 0 ) { for(pivo = 0; pivo < tamanho; pivo++) free(Lower[pivo]); free(Lower); free(X); return NULL; } Lower[linha][pivo] = matriz[linha][pivo]/matriz[pivo][pivo]; for( coluna = pivo; coluna < tamanho; coluna++ ) matriz[linha][coluna] += - Lower[linha][pivo]*matriz[pivo][coluna]; } } for( pivo = 0; pivo < tamanho; pivo++ ) Lower[pivo][pivo] = 1.0; for( linha = 0; linha < tamanho - 1; linha++ ) for( coluna = tamanho - 1; coluna > linha; coluna-- ) Lower[linha][coluna] = 0.0; printf( "\n\n\tMatriz L: " ); ExibirMatriz( Lower, tamanho, tamanho - 1 ); printf( "\n\n\tMatriz U: " ); ExibirMatriz( matriz, tamanho, tamanho - 1 ); //A EXECUÇÃO FOI ATÉ AQUI, EM VERDADE, EXIBIU APENAS PARTE DA MATRIZ E RETORNOU O ERRO. for( linha = 0, coluna = 0; linha < tamanho; linha++, coluna = 0 ) { Y[linha] = 0.0; while( coluna < linha ) { Y[linha] += Lower[linha][coluna]*Y[coluna]; coluna++; } if( Lower[linha][coluna] == 0 ) { for(pivo = 0; pivo < tamanho; pivo++) free(Lower[pivo]); free(Lower); free(X); return NULL; } Y[linha] = ( matriz[linha][tamanho] - Y[linha] )/Lower[linha][coluna]; } for( linha = tamanho - 1, coluna = tamanho - 1; 0 <= linha; linha--, coluna = tamanho - 1 ) { X[linha] = 0.0; while( coluna > linha ) { X[linha] += matriz[linha][coluna]*X[coluna]; coluna--; } if( matriz[linha][coluna] == 0 ) { for(pivo = 0; pivo < tamanho; pivo++) free(Lower[pivo]); free(Lower); free(X); return NULL; } X[linha] = ( Y[linha] - X[linha] )/matriz[linha][coluna]; } for(pivo = 0; pivo < tamanho; pivo++) free(Lower[pivo]); free(Lower); return X; }
Enviado em 09/09/2019 - 01:28h
Algumas coisas no código não estão combinando.long double* FatoracaoLU( long double** matriz, unsigned int tamanho ) { long double* X = calloc( tamanho, sizeof *X ), Y[tamanho], **Lower = NULL; int linha, coluna, pivo; if( ( Lower = calloc( tamanho, sizeof *Lower ) ) == NULL ) { printf( "\n\t_____ ERRO EM ALOCACAO DE MEMORIA _____" ); return NULL; } for( pivo = 0; pivo < tamanho; pivo++) if( ( Lower[pivo] = calloc( tamanho - 1, sizeof **Lower ) ) == NULL ) { printf( "\n\t_____ ERRO EM ALOCACAO DE MEMORIA _____" ); return NULL; } /* ... bloco suprimido ... */ for( pivo = 0; pivo < tamanho; pivo++ ) /* Possivelmente você quis dizer “tamanho-1”. */ Lower[pivo][pivo] = 1.0; for( linha = 0; linha < tamanho - 1; linha++ ) for( coluna = tamanho - 1; coluna > linha; coluna-- ) /* Possivelmente você quis dizer “tamanho-2”. */ Lower[linha][coluna] = 0.0; printf( "\n\n\tMatriz L: " ); ExibirMatriz( Lower, tamanho, tamanho - 1 ); printf( "\n\n\tMatriz U: " ); ExibirMatriz( matriz, tamanho, tamanho - 1 ); //A EXECUÇÃO FOI ATÉ AQUI, EM VERDADE, EXIBIU APENAS PARTE DA MATRIZ E RETORNOU O ERRO. /* Creio que deu para ver por quê. */ }
FloatType *LU_Factorization(FloatType **M, size_t n){ FloatType **L=NULL, *X=NULL; if(!(L=calloc(n, sizeof *L)) || !(X=malloc(n*sizeof *X)) goto error; for(size_t l=0; l<n; l++) if(!(L[l]=malloc(n*sizeof *L[l])) goto error; /* ... seu código aqui ... */ if(situacao_de_erro_1) goto error; /* ... seu código aqui ... */ if(situacao_de_erro_2) goto error; /* ... seu código aqui ... */ if(situacao_de_erro_3) goto error; /* ... seu código aqui ... */ /* Se chegou neste ponto, executou sem erro, retorna o valor de X. */ goto common_exit; // Pula o código de tratamento de erro. error: /* Em caso de erro, desaloca X e o faz novamente nulo. */ free(X); X=NULL; common_exit: /* Esta desalocação tem ser feita sempre, com ou sem erro. */ for(size_t l=n; l>0;) free(L[--l]) free(L); return X; }
Enviado em 10/09/2019 - 00:41h
Paulo, o senhor se importaria em me dizer quanto tempo de janela é preciso para ter um olho arguto desse seu? rsrsrsdouble* FatoracaoLU( double** matriz, unsigned int numero_equacoes, unsigned int dimensao, FILE* arquivoSaida ) ... for( pivo = 0; pivo < dimensao - 1; pivo++ ) /* Loop original */ Lower[pivo][pivo] = 1.0; ...
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Instalação do programa IRPF 2025 - Dificuldade (12)
Duvida em tunel de ligação VPN (2)