Funções que devolvem um struct: Difference between revisions
From Applied Science
(Created page with "* '''Função que devolve ambas as raízes de uma equação polinomial de segundo grau:''' <source lang="c"> →Struct para guardar dois valores: struct raizes { float x1, x2; }; →Função que recebe os coeficientes a, b e c e devolve as raízes do polinômio de segundo grau (não inclui o caso do delta ser negativo): struct raizes Bhaskara (int a, int b, int c) { struct raizes x; float delta; delta = b*b - 4*a*c; x.x1 = (-b + sqrt(delta))/(...") Tag: wikieditor |
No edit summary Tag: wikieditor |
||
Line 23: | Line 23: | ||
Funções também podem ter o tipo ''''struct'''' e devolver um ''''struct''''. Assim como ''''int'''' e ''''float''''. Dentro da função ''"Bhaskara"'' temos que declarar uma outra ''''struct'''' para armazenar ambas as raízes. | Funções também podem ter o tipo ''''struct'''' e devolver um ''''struct''''. Assim como ''''int'''' e ''''float''''. Dentro da função ''"Bhaskara"'' temos que declarar uma outra ''''struct'''' para armazenar ambas as raízes. | ||
A | A sintaxe de ''''raizes'''' inclui chaves, mas é uma ''''struct''' e não é uma função. É por isso que termina com ponto e vírula. | ||
'''Nota:''' a função não está devolvendo duas variáveis. Está devolvendo os valores guardados na ''''struct'''' ''"x"'', que é do tipo ''"raizes"''. | '''Nota:''' a função não está devolvendo duas variáveis. Está devolvendo os valores guardados na ''''struct'''' ''"x"'', que é do tipo ''"raizes"''. |
Latest revision as of 02:23, 24 January 2025
- Função que devolve ambas as raízes de uma equação polinomial de segundo grau:
/* Struct para guardar dois valores */ struct raizes { float x1, x2; }; /* Função que recebe os coeficientes a, b e c e devolve as raízes do polinômio de segundo grau (não inclui o caso do delta ser negativo) */ struct raizes Bhaskara (int a, int b, int c) { struct raizes x; float delta; delta = b*b - 4*a*c; x.x1 = (-b + sqrt(delta))/(2*a); x.x2 = (-b - sqrt(delta))/(2*a); return x; }
Funções também podem ter o tipo 'struct' e devolver um 'struct'. Assim como 'int' e 'float'. Dentro da função "Bhaskara" temos que declarar uma outra 'struct' para armazenar ambas as raízes.
A sintaxe de 'raizes' inclui chaves, mas é uma 'struct e não é uma função. É por isso que termina com ponto e vírula.
Nota: a função não está devolvendo duas variáveis. Está devolvendo os valores guardados na 'struct' "x", que é do tipo "raizes".
- Chamando a função acima:
/* Primeiro modo */ printf("%f, %f", Bhaskara(1, 2, -3).x1, Bhaskara(1, 2, -3).x2); /* Segundo modo*/ struct raizes x; x = Bhaskara(1, 2, -3); printf("%f, %f", x.x1, x.x2);
Ambos devem produzir o mesmo resultado: imprimir as raízes -3 e 1.