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.

