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 intaxe de ''''raizes'''' inclui chaves, mas é uma ''''struct''' e não é uma função. É por isso que termina com ponto e vírula.
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.