Jump to content
Rafael Holanda

Como calcular o cubo de número inteiro usando função

Recommended Posts

Rafael Holanda

Bom dia

Pessoal

algume pode me ajudar ? quero programar o cubo de numero inteiro usando função mas nao consegui...

Attc,

Rafael Holanda

Share this post


Link to post
Share on other sites
HappyHippyHippo

sabes como calcular o cubo de um número ?

sabes como criar uma função ?

sabes como retornar um valor de uma função ?

sabes como guardar/usar um valor de retorno de uma função ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
rodrigolima

Rafael Holanda, Bom dia

Já faz algum tempo que não programo em C, mas segue o que entendi em relação a sua pergunta:

#includes

int main(){

int valor = 0;
int cubo = 0;

valor = 3;

// Chamada da função RetornaCubo
// Retorno da função para a variavel cubo
cubo = RetornarCubo(valor);

// cubo será igual a 3 elevado a 3 = 27

return 0;

}

// Função RetornarCubo
int RetornarCubo(int n){
return (n * n * n);
}

Acredito que isto lhe dará um caminho a seguir.

Grande abraço do Brasil

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

Rafael Holanda, Bom dia

Já faz algum tempo que não programo em C, mas segue o que entendi em relação a sua pergutna:

#includes

int main(){

int valor = 0;
int cubo = 0;

valor = 3;

// Chamada da função RetornaCubo
// Retorno da função para a variavel cubo
cubo = RetornarCubo(valor);

// cubo será igual a 3 elevado a 3 = 27

return 0;

}

// Função RetornarCubo
int RetornarCubo(int n){
return (n * n * n);
}

Acredito que isto lhe dará um caminho a seguir.

Grande abraço do Brasil

já ouviste este ditado : "dá a um homem um peixe, ele come o dor um o dia, ensina um homem pescar, ele come para a vida." ?

o que o Rafael aprendeu : a vir ao fórum e tem a resposta sem pensar ...

bem ... já que o código apareceu, fica então a solução (sem usar a função pow) :

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

int cube(int n) {
 return n * n * n;
}

int main(int argc, char ** argv) {
 int valor = 0;

 if (argc < 2) {
   printf("command : cube <number>\n");
   exit(-1);
 }

 if ((sscanf(argv[1], "%d", &valor) == 0) {
   printf("valor invalido\n");
   printf("command : cube <number>\n");
   exit(-1);
 }

 printf("O cubo de %d e : %d\n", valor, cube(valor));

 return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Rafael Holanda

Valeu pessoal....ficou assim...

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

float cubo (float n){
float m;
m=n*n*n;
return m;
}

main( void){
float z;
printf("digite um numero para saber seu cubo: ");
scanf("%f", &z);
printf(" o cubo de %0.f e: %.0f", z, cubo(z));
printf("n\n");

system("pause");
return 0;
}

Edited by thoga31
Tags code + GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

está errado ...

dizes no teu primeiro post que é de um número inteiro e depois usas virgula flutuante (ainda por cima um float em vez de um double)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
thoga31

Aliás, duplamente errado: o main não tem tipo, mas tem valor de retorno...

Acredito que isto lhe dará um caminho a seguir.

Um caminho? Rephrase, a solução!

No P@P fomentamos não a "dádiva" de soluções feitas mas sim a troca de conhecimentos e o esclarecimento de dúvidas.

Seguindo o provérbio citado pelo @Happy, nós ensinamos a pescar e não damos o peixe, muito menos já cozinhado e sem espinhas.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Rui Carlos

Aliás, duplamente errado: o main não tem tipo, mas tem valor de retorno...

Penso que tal é válido em ANSI C C89 (que por acaso costumava ser o standard usado por omissão na generalidade dos compiladores de C), visto que o tipo int era assumido por omissão. Não é que seja aconselhável omitir o tipo de retorno, mas também não é propriamente um erro.

Edited by Rui Carlos
Clarificação sobre a que versão do C me referia.

Share this post


Link to post
Share on other sites
Rafael Holanda

está errado ...

dizes no teu primeiro post que é de um número inteiro e depois usas virgula flutuante (ainda por cima um float em vez de um double)

Meu caro...

compilou normal aqui,,,, no meu Dev C++...

Share this post


Link to post
Share on other sites
HappyHippyHippo

Meu caro...

compilou normal aqui,,,, no meu Dev C++...

eu não disse que o código está errado, o que eu disse foi que a resolução está errada

são coisas difetentes


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
rodrigolima

Boa tarde a todos

Em relação a usar ou não o int main ou void main, vai da cabeça de cada um.Como aprendi a programar C/C++ no Linux e não no Windows, certas particularidades são intrínsecas(como se fossem coisas de sangue).Não tem como negar e nem esquecer.

No mais é isso.

E Rafael Holanda, sempre que for pedir ajuda no fórum, mesmo que não saiba a sintaxe da linguagem, existe o bom e velho algoritmo.É genérico e serve para explanar nossas dúvidas.Ou seja, pratique ALGORITMO.

Grande abraço a todos.

Edited by rodrigolima
  • Vote 1

Share this post


Link to post
Share on other sites
pwseo

rodrigolima,

Não, o que acontece é que a maioria dos compiladores é extremamente tolerante relativamente ao código que lê e compila, e por isso é que void main é aceite em muitos compiladores (maus, ou então bons, mas mal configurados). Se, no entanto, ligares as opções -Wall -Wextra -pedantic -std=c99 do GCC (ou Clang) receberás avisos relativamente a várias situações:

  • declarar main sem tipo de retorno
  • declarar main com retorno diferente de int
  • não fazer return da função main (não se aplica ao C99, apenas ao C89, via parâmetro -std=c89)

Existem problemas mais profundos no caso de C89 (o que o GCC usa por defeito), como por exemplo o de não atribuir um tipo de retorno à main -- assume-se que é int e depois não fazer return; o que é devolvido ao sistema operativo? Não se sabe, é indefinido (e, portanto, deve ser evitado).

Isto não tem nada a ver com programar no Windows ou no Linux, mas sim com a configuração e grau de suporte do compilador para a linguagem C como ela é actualmente. Estamos em 2013, parece-me ridículo continuarmos a escrever C como em 1990.

Rui Carlos,

Com o C99 a declaração errada da main exige a emissão de um aviso por parte do compilador (não é um erro fatal, mas o objectivo é deprecar esse hábito com o tempo).

Share this post


Link to post
Share on other sites
Rui Carlos

Por ANSI C referia-me ao C89 (mas já vi que o termo não é muito consensual, por isso vou editar o meu post anterior).

A questão de se faz sentido escrever C89 é complexa. Antes de mais, aquilo que referi é que omitir o int não é propriamente um erro (e como também referi, concordo que seja algo que não deve ser incentivado). Voltando ao que interessa, esta questão é complexa pois o C89 era (é?) o standard usado por omissão na generalidade dos compiladores. Havia funcionalidades do C99 que não eram suportadas pelos compiladores, e outras para as quais era necessário activar explicitamente o standard C99. Ou seja, para se ter mais garantias de portabilidade, convinha escrever o código em C89. E não é escrever C como em 1990, pois muito provavelmente em 1990 o suporte para C89 também era mau, e poucos escreviam C89.

É claro que neste caso escrever C99 também ia funcionar no C89, e eu também não gosto de ver funções sem o tipo de retorno, até porque muitas vezes as pessoas assumem erradamente que tal corresponde a void. Mas, como referi, o meu ponto é que isto não é um erro.


Relativamente ao main retornar void (que não é o caso do código que motivou a discussão) tenho ideia que esse hábito começou com alguns compiladores que aceitavam tal declaração. Aparentemente o C99 é pouco claro quanto à necessidade da função main devolver int, como argumentado aqui.

Share this post


Link to post
Share on other sites
pwseo

O standard usado por defeito pelos compiladores não é verdadeiramente importante, uma vez que tanto para C89 como para os posteriores são emitidos avisos quando a main é mal declarada. Activar essas opções de aviso é que é verdadeiramente importante, e algo que poucas vezes é feito/ensinado aos alunos.

Quanto ao código de 1990, não me referia a C89 mas sim ao código daquela altura, que ainda é o que se vê em muitos dos tutoriais e bastante documentação online e mesmo em literatura em papel. Hoje em dia temos obrigação de escrever código de outra forma... A declaração da main é apenas um dos pontos importantes :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.