Enviado em 11/11/2012 - 07:59h
E ai pessoal, tudo bem? Estou fazendo um programa aqui, e estou com um problema de leitura das variáveis nas funções, eu entro com os dados em uma função, e quando "chamo" eles em outra função, eles não estão carregando os dados que eu "inputei" nelas na função anterior, será que tem como alguém me ajudar? (Já fiz o teste de retirar as funções e fazer tudo em uma só, e quando eu faço isso da certo!)Enviado em 11/11/2012 - 13:00h
... int entrada(){ struct variaveis X; printf ("Entre com o valor do produto 'à vista':"); scanf ("%f", &X.vv); printf ("Entre com o valor da entrada: "); scanf ("%f", &X.entrada); printf ("Entre com o valor de cada prestacao: "); scanf ("%f", &X.pm); printf ("Entre com a quantidade de parcelas: "); scanf ("%f", &X.p); printf ("\n\n\n"); printf ("Controle_1\n"); printf ("vv = %0.1f\n", X.vv); printf ("entrada = %0.1f\n", X.entrada); printf ("prestacao = %0.1f\n", X.pm); printf ("parcelas = %0.1f\n", X.p); } ... int calculos_1(){ struct variaveis X; int i; float teste; printf ("\n\n\n"); printf ("Controle_2\n"); printf ("vv = %0.1f\n", X.vv); printf ("entrada = %0.1f\n", X.entrada); printf ("prestacao = %0.1f\n", X.pm); printf ("parcelas = %0.1f\n\n\n\n", X.p); int main(){ controle(); entrada(); calculos_1(); saida_1(); system("pause"); return 0; }
Enviado em 11/11/2012 - 08:21h
#include <stdio.h> #include <stdlib.h> #include <math.h> #define MAX 1000 #define ERRO pow(10,-5) struct variaveis{ int cont; float vv, vf, entrada, pm, p, k; float x[MAX], f1x[MAX], f2x[MAX], g1x[MAX], g2x[MAX], h1x[MAX], h2x[MAX]; }; int controle(){ struct variaveis X; X.cont = 0; X.vv = 0; X.vf = 0; X.entrada = 0; X.pm = 0; X.p = 0; X.k = 0; } int entrada(){ struct variaveis X; printf ("Entre com o valor do produto 'à vista':"); scanf ("%f", &X.vv); printf ("Entre com o valor da entrada: "); scanf ("%f", &X.entrada); printf ("Entre com o valor de cada prestacao: "); scanf ("%f", &X.pm); printf ("Entre com a quantidade de parcelas: "); scanf ("%f", &X.p); printf ("\n\n\n"); printf ("Controle_1\n"); printf ("vv = %0.1f\n", X.vv); printf ("entrada = %0.1f\n", X.entrada); printf ("prestacao = %0.1f\n", X.pm); printf ("parcelas = %0.1f\n", X.p); } int calculos_1(){ struct variaveis X; int i; float teste; printf ("\n\n\n"); printf ("Controle_2\n"); printf ("vv = %0.1f\n", X.vv); printf ("entrada = %0.1f\n", X.entrada); printf ("prestacao = %0.1f\n", X.pm); printf ("parcelas = %0.1f\n\n\n\n", X.p); X.x[0] = 0.9; printf ("x[0] = %f\n", X.x[0]); X.vf = (X.vv - X.entrada); printf ("vf = %f\n", X.vf); X.k = X.vf/X.pm; printf ("k = %f\n", X.k); X.g1x[0] = X.k*pow(X.x[0],(X.p+1)); printf ("g1x[0] = %f\n", X.g1x[0]); X.g2x[0] = ((X.k+1)*(pow(X.x[0],X.p))) - 1; printf ("g2x[0] = %f\n", X.g2x[0]); /*f1x é a função original*/ X.f1x[0] = (X.g1x[0] - X.g2x[0]); printf ("f1x[0] = %f\n", X.f1x[0]); X.h1x[0] = (X.p+1)*(X.k*pow(X.x[0],X.p)); printf ("h1x[0] = %f\n", X.h1x[0]); X.h2x[0] = X.p*((X.k+1)*pow(X.x[0], X.p-1)); printf ("h2x[0] = %f\n", X.h2x[0]); /*f2x é a derivada da função*/ X.f2x[0] = X.h1x[0] - X.h2x[0]; printf ("f2x[0] = %f\n", X.f2x[0]); for (i=1; i<=MAX; i++){ X.x[i] = X.x[i-1] - (X.f1x[i-1]/X.f2x[i-1]); teste = abs ((X.x[i] - X.x[i-1])/X.x[i]); if (teste <= ERRO){ break; exit(0); } else if(teste >= ERRO){ X.g1x[i] = X.k*pow(X.x[i],(X.p+1)); X.g2x[i] = ((X.k+1)*(pow(X.x[i],X.p))) - 1; /*f1x é a função original*/ X.f1x[i] = X.g1x[i] - X.g2x[i]; X.h1x[i] = (X.p+1)*(X.k*pow(X.x[i],X.p)); X.h2x[i] = X.p*((X.k+1)*pow(X.x[i], X.p-1)); /*f2x é a derivada da função*/ X.f2x[i] = X.h1x[i] - X.h2x[i]; } X.cont = X.cont + 1; } } int saida_1(){ struct variaveis X; printf ("A funcao alcanca o 'zero' em: %f \n", X.x[X.cont]); printf ("A resolucao foi alcancada depois de %d interacoes.\n\n", X.cont); } int main(){ controle(); entrada(); calculos_1(); saida_1(); system("pause"); return 0; } Tela de saída: Entre com o valor do produto 'à vista':21 Entre com o valor da entrada: 21 Entre com o valor de cada prestacao: 21 Entre com a quantidade de parcelas: 21 Controle_1 vv = 21.0 entrada = 21.0 prestacao = 21.0 parcelas = 21.0 Controle_2 vv = 0.0 entrada = 0.0 prestacao = 0.0 parcelas = 0.0 x[0] = 0.900000 vf = -0.000000 k = -0.007810 g1x[0] = -0.007029 g2x[0] = -0.007810 f1x[0] = 0.000781 h1x[0] = -0.007810 h2x[0] = 0.000000 f2x[0] = -0.007810
Enviado em 11/11/2012 - 08:25h
O problema ocorre na função "calculo_1", repara que eu coloquei dois "controles", cada um imprimindo os valores das variáveis em suas respectivas funções, o "controle_1" imprime o valor na função "entrada", e o "controle_2" imprime o valor na função "calculo_1", e os valores simplesmente somem! (Aproveitando o tópico, como você fez pra postar meu código fonte desse jeito aqui no VOL?)Enviado em 11/11/2012 - 10:44h
para postar codigo usar a tag ( code )assim:"seu codigo aqui"
Enviado em 15/11/2012 - 19:19h
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
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)
Problema no boot do Linux Mint Cinnamon 22 (3)
Atualização do Google Chrome do Ubuntu [RESOLVIDO] (2)
Instalei Windows 11 e não alterou o Grub do Debian (1)
Jogos baixados na Central de Aplicativos mas que não abrem (0)