função em C

1. função em C

wilcliton sousa de oliveira
k1t0n

(usa Mandrake)

Enviado em 17/09/2008 - 22:30h

Olá galera da VOL! eu estou estudando a pouco tempo a linguagem C, achei interessante. Queria apenas tirar uma dúvida com um código q eu tava testando as funções. Não consigo identificar o problema.


#include <stdio.h>
#include <stdlib.h>
//#include <string.h>

int soma (float a, float b) {
return (a+b);
}

int subtrai (float a, float b) {
return (a-b);
}

int multiplica (float a, float b) {
return (a*b);
}

int divide (float a, float b) {
return (a/b);
}

int main() {

int valor1, valor2;
char operacao;
do {
printf("\nDigite o primeiro valor:");
scanf("%d",&valor1);
if (valor1 != 0)
{
printf("\nDigite o segundo valor:");
scanf("%d", &valor2);
printf("\nEscolha a operação [+,-,*,/]");
scanf("%c", &operacao);
if (operacao == '+') {
printf("\nResultado: %d", soma (valor1, valor2));
}
else if(operacao == '-') {
printf("\nResultado: %d", subtrai (valor1, valor2));
}
else if (operacao == '*') {
printf("\nResultado: %d", multiplica (valor1, valor2));
}
else if(operacao == '/') {
printf("\nResultado; %f", divide (valor1, valor2));
}
else {
printf("\nOperacao inválida!");
}
}
}while (valor1>0);
}


  


2. Re: função em C

Denis Doria
thuck

(usa Debian)

Enviado em 17/09/2008 - 23:33h

Mas pq vc acha q está errado? Fale qual é a sua suspeita, ou poste o erro, só falar q existe algo errado é muito vago.


3. Re: função em C

Denis Doria
thuck

(usa Debian)

Enviado em 17/09/2008 - 23:44h

Abaixo segue o código corrigido. Cuidado com as conversões de tipo. Misturar float com int, pode gerar diversos erros se não forem tratados. E lembrando, sempre que for pedir ajuda, coloque o máximo de informações possíveis.


#include <stdio.h>
#include <stdlib.h>
//#include <string.h>

float soma (float a, float b) {
return (a+b);
}

float subtrai (float a, float b) {
return (a-b);
}

float multiplica (float a, float b) {
return (a*b);
}

float divide (float a, float b) {
return (a/b);
}

int main() {

float valor1, valor2;
char operacao;
do {
printf("\nDigite o primeiro valor:");
scanf("%f",&valor1);
if (valor1 != 0)
{
printf("\nDigite o segundo valor:");
scanf("%f", &valor2);
printf("\nEscolha a operação [+,-,*,/]");
scanf("%s", &operacao);
if (operacao == '+') {
printf("\nResultado: %f", soma (valor1, valor2));
}
else if(operacao == '-') {
printf("\nResultado: %f", subtrai (valor1, valor2));
}
else if (operacao == '*') {
printf("\nResultado: %f", multiplica (valor1, valor2));
}
else if(operacao == '/') {
printf("\nResultado; %f", divide (valor1, valor2));
}
else {
printf("\nOperacao inválida!");
}
}
}while (valor1>0);
}



4. Re: função em C

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 18/09/2008 - 01:40h

Cara, tu também pode utilizar o SWITCH para fazer a escolha da operação.
Na minha opinião o SWITCH fica bem mais elegante e de mais fácil manutenção nesse caso.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

float soma (float a, float b) {
return (a+b);
}

float subtrai (float a, float b) {
return (a-b);
}

float multiplica (float a, float b) {
return (a*b);
}

float divide (float a, float b) {
return (a/b);
}

int main() {
float valor1, valor2;
char operacao;
do {
printf("\nDigite o primeiro valor:");
scanf("%f",&valor1);
if (valor1 != 0)
{
printf("\nDigite o segundo valor:");
scanf("%f", &valor2);
printf("\nEscolha a operação [+,-,*,/]");
scanf("%s", &operacao);
switch (operacao)
{
case '+':
printf("\nResultado: %.2f", soma (valor1, valor2));
printf("\n\n");
break;
case '-':
printf("\nResultado: %.2f", subtrai (valor1, valor2));
printf("\n\n");
break;
case '*':
printf("\nResultado: %.2f", multiplica (valor1, valor2));
printf("\n\n");
break;
case '/':
printf("\nResultado; %.2f", divide (valor1, valor2));
printf("\n\n");
break;
default:
printf("\nOperacao inválida!");
printf("\n\n");
}
}
}
while (valor1>0);
return 0;
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------


5. Re: função em C

Jackson Schmitz Weber
jackson_sw

(usa Debian)

Enviado em 18/09/2008 - 05:44h

tente mudando o retorno de suas funções, colocando-as como tipo de dado float.
ficaria mais ou menos assim

float soma (float a, float b) {
return (a+b);
}



6. Re: função em C

Fagner Amaral de Souza Candido
f_Candido

(usa Ubuntu)

Enviado em 18/09/2008 - 07:48h

Somente mais uma observação:
Abaixo do cabeçalho, você colocou suas funções bonitinhas. Mas, não segue o padrão ANSI. Tente, prototipa-las, ou seja, apenas as declarações, e após a main()(função principal), coloque o corpo das funções.

Abraços






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts