Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marrows

Ajuda função

Recommended Posts

Olá pessoal, sou novo aqui e estou procurando uma ajuda, eu fiz uma prova de C esses dias e queria saber o que eu fiz de errado nesse exercício e até me ajudar a completar o final porque ainda não manjo muito dessa linguagem. Ele não tem enunciado, é só o exercício e umas lacunas para preencher.

 

main () {

int a, __, __, __; // aqui eu coloquei int a, c, d, e;

float __ // float f;

printf("entre 1 valor: "); scanf("%d",__); getchar(); // scanf("%d",&a);

__ = __ = __ = __; // a = c = d = e;

__ = __ __ // f = (float) a;

do { printf("entre proximo valor ou digite 0 para finalizar: ");

scanf("%d",__); getchar(); //scanf("%d", a);

if(__) break; // if(a == 0)

c = __; d = __; // c = somaf(a, f). d = subf(a, f);

e = __; f = __; // e = mulf(a, f); f = divf(a, f);

} while (__); }

int somaf(int a, int b )

{ __ } // a + b;

int subf(int a, int b )

{ __} // a - b;

int mulf(int a, int b )

{ __ } //a * b;

float divf(float a, int b )

{ __ __ __ } // aqui eu não sabia o que escrever, são 3 lacunas

Compartilhar este post


Link para o post
Compartilhar em outros sites

o programa deveria fazer o que? certeza que não tem enunciado, ficaria mais fácil ajudar

Sim, sem enunciado. Já que é uma prova eu não sei o que ele deveria fazer, é mais para medir o conhecimento do que aprendeu do que rodar o programa. Se ficou difícil de entender é que nos comentários é o que eu coloquei e a prova é aquilo lá mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu vou tentar rodar aqui e daqui a pouco eu posto o que deu:

 

até agora detectei um erro:

a=c=d=e está errado, pois está dizendo: "a recebe vazio" e assim por diante. se fizer: e=d=c=a funcionaria normalmente.

 

vou continuar olhando e vou editar aqui a resposta

 

achei outra coisa:

tem três funções: soma, sub, mult e div:

nelas está faltando o retorno, no caso da soma:

int soma(int a, int b )

{

return a+b;

}

só com o return quando você disser:

c = soma(a, b ) ; estará dizendo a = a+b

 

o mesmo acontece com a multiplicação e subtração.

 

já na função da divisão ele tem um float como parâmetro, então talvez devesse ser assim:

 

return (float) a/b;

 

 

fora isso, a parte em que a, d, e e f recebem valores, a não importa para o do while, o unico cuidado é que c, d e e são int, então talvez se recebessem o valor da função div, daria algum problema, talvez.

 

e quando você invoca a função soma os dois valores devem ser int, mas você colocou o f que é um float. a mesma coisa na mult e na sub

 

isso é tudo que eu consigo reparar, qualquer coisa, me pergunta aí, pode ser que eu me confundi ou não fui claro em alguma parte

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu vou tentar rodar aqui e daqui a pouco eu posto o que deu:

 

até agora detectei um erro:

a=c=d=e está errado, pois está dizendo: "a recebe vazio" e assim por diante. se fizer: e=d=c=a funcionaria normalmente.

 

vou continuar olhando e vou editar aqui a resposta

 

achei outra coisa:

tem três funções: soma, sub, mult e div:

nelas está faltando o retorno, no caso da soma:

int soma(int a, int b )

{

return a+b;

}

só com o return quando você disser:

c = soma(a, b ) ; estará dizendo a = a+b

 

o mesmo acontece com a multiplicação e subtração.

 

já na função da divisão ele tem um float como parâmetro, então talvez devesse ser assim:

 

return (float) a/b;

 

 

fora isso, a parte em que a, d, e e f recebem valores, a não importa para o do while, o unico cuidado é que c, d e e são int, então talvez se recebessem o valor da função div, daria algum problema, talvez.

 

e quando você invoca a função soma os dois valores devem ser int, mas você colocou o f que é um float. a mesma coisa na mult e na sub

 

isso é tudo que eu consigo reparar, qualquer coisa, me pergunta aí, pode ser que eu me confundi ou não fui claro em alguma parte

Certo, então a ordem e=d=c=a realmente importa ? Eu não sabia disso

A parte das funções eu sabia que faltava alguma coisa, só não sabia que era "return", obrigado

A parte do float já tirou uma grande dúvida, bastante gente da sala errou essa.

Eu coloquei float porque já que tem uma função de divisão ele acabaria pedindo, mas acho que foi um erro. Como ficaria ? Na 4ª linha ele pede um número, ficaria "scanf("%d", - qualquer variável int ? - ) E na 8ª também

Por fim só saber se eu acertei no "f = (float) a" e no "if( a== 0)"

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre a ordem: é porque vai da direita pra esquerda.

o scanf() da quarta e oitava linha, server para controlar se o while vai repetir ou não então desde que sejam a mesma variavel acho que está tudo bem

 

"Eu coloquei float porque já que tem uma função de divisão ele acabaria pedindo, mas acho que foi um erro" que parte é essa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre o f = (float) a;

 

até funciona, mas se colocasse só: f = a daria no mesmo. estranho que tenha duas posições para preencher

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre a ordem: é porque vai da direita pra esquerda.

o scanf() da quarta e oitava linha, server para controlar se o while vai repetir ou não então desde que sejam a mesma variavel acho que está tudo bem

 

"Eu coloquei float porque já que tem uma função de divisão ele acabaria pedindo, mas acho que foi um erro" que parte é essa?

Parando pra pensar... Bom, como a divisão é um "float", as variáveis geralmente são float. Mas voltando, são 4 funções, soma, sub, mult e div, Eu coloquei a variável float porque no final tem uma função de divisão, mas acaba que essa variável será usada nas outras funções também, não ? Então acho que foi um erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parando pra pensar... Bom, como a divisão é um "float", as variáveis geralmente são float. Mas voltando, são 4 funções, soma, sub, mult e div, Eu coloquei a variável float porque no final tem uma função de divisão, mas acaba que essa variável será usada nas outras funções também, não ? Então acho que foi um erro

desculpa, eu realmente não entendi.

a coisa é que:

as funções soma multiplicação e subtração não podem receber float como parametro(a não ser que vc mude elas, mas não pode porque é uma questão né?)

mesmo assim elas podem retornar um float, só que não numa variável int.

 

eu realmente não entendi essa ultima duvida rs. tenta explicar melhor aí

Compartilhar este post


Link para o post
Compartilhar em outros sites

XD Acho que eu falei tanta besteira que nem eu vou conseguir explicar. Mas de qualquer forma já tirou minha dúvida e até ajudou a resolver o que faltava. O que realmente pegava era os "scanf", entre o "do" e "while" por consequência e a "função divf" mesmo que todos (em negrito pra enfatizar) erraram na sala com relação ao bendito "float".

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

o prof foi sacana, se ele tivesse dito a descrição do problema e pedido pra a a turma fazer o codigo era bem melhor, mas blz, se tiver mais alguma duvida pode dizer, eu tambem to fazendo computação, sei como é se enrolar em detalhes assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Descomplica Consultoria
      Oi Pessoal, preciso de ajuda com um portfolio academico
    • Por 4Unknow
      Bom dia comunidade Imasters.

      Venho aqui tratar de um problema dúvida que estou tendo com um layout que estou tentando usar o formulário php dele.
      Quando clico em enviar ele me enviar para um arquivo .php  (assets/vendor/simple-forms/sendmail.php)

      Ele não envia o e-mail, acredito que deveria aparecer uma mensagem que o contato foi enviado corretamente.
      Vou deixar os arquivos aqui em anexo quem puder me ajudar nessa, ficaria muito grato.
       
      Link Website (wetransfer.com)
    • Por Mauricio Molina
      Ola pessoal, será que podem me dar uma força?
       
      Preciso fazer um calculo de subtração de valores, onde o administrador seleciona o mes, pego pelo ID, método GET, para edição.
       
      Como normalmente tem vários meses pagos, o script a seguir só esta funcionando no primeiro item da tabela.
       
      Como posso fazer para funcionar em todos os itens da tabela?
       
      Teria que dar um nome diferente no getValor (id no HTML) para cada um, mas como posso fazer isso?
       
      <!-- Calculo Devolucao--> <script type="text/javascript"> function id(valor_campo) { return document.getElementById(valor_campo); } function getValor(valor_campo) { var valor = document.getElementById(valor_campo).value.replace(',', '.'); /*document.write("Valor: " - valor);*/ return parseFloat( valor ) * 1; } function sub() { var total = getValor('v_recebido') - (getValor('v_devolvido')); id('resultadoDev').value = (total * 1) .toFixed(2, "."); } </script> <!-- Calculo Devolucao--> <div class="toggle"> <input name="v_devolvido" type="checkbox" id="foo<?php echo $rows_aluno['id']; ?>" value="<?php echo $rows_aluno['v_recebido']; ?>"> <label for="foo<?php echo $rows_aluno['id']; ?>"></label> </div> <input type="text" id="v_recebido" value="<?php echo $rows_aluno['v_recebido']; ?><?php echo $rows_aluno['v_receb_parc']; ?>" onblur="sub()" > <div class="form-row"> <div class="form-group col-md-6"> <label for="validationCustomUsername">Valor Parcial:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text" id="inputGroupPrepend">R$</span> </div> <input name="v_dev_parc" type="text" class="form-control" id="v_devolvido" placeholder="Digite o Valor" aria-describedby="inputGroupPrepend" onblur="sub()"> </div> </div> <input name="id_user" type="hidden" value="<?php echo $rows_aluno['id_user']; ?>"> <input name="id_prof" type="hidden" value="<?php echo $rows_aluno['id_prof']; ?>"> <input name="status" type="hidden" value="Devolvido"> <input name="mes" type="hidden" value="<?php echo $rows_aluno['mes']; ?>"> <input name="v_recebido" type="text" id="resultadoDev"> </div>  
    • Por Dcdbbvb
      Faça um código que deverá ter uma matriz de qualquer tamanho(Você define o tamanho) no qual o usuário irá digitar os números que serão armazenados na matriz. Construa uma função que deverá somar todos os números digitados. No final o programa mostrará a matriz e o valor total da somatória.
       
      por favorrrr alguém me ajuda
    • Por mateus.andriollo
      Boa tarde,
      Tenho alguns campos numéricos q ao fazer uma select gostaria q retornasse uma legenda
       
      exemplo:
      Status: 0=Inativo / 1=Ativo Condição: 1=Funcionando / 2=Em manutenção / 3=Manutenção Interna   
      Seria algo assim, tenho varias tabelas com estes campos... mas tenho q ficar usando replace.
      Existe uma forma de criar uma função para isso? Nem q na função eu tenha que setar nome do campo, ficando assim:
      Legenda('Status',cadastro.status) 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.