2017-06-01 1 views
2

J'ai une question en C où j'ai besoin d'insérer des coefficients d'une équation quadratique dans une fonction et de renvoyer le nombre de solutions et le résultat.Renvoie une valeur en tant que paramètre de sortie

Ecrire un programme qui accepte une série de 3 nombres réels, qui sont les coefficients d'une équation du second degré, et le programme va imprimer des solutions à l'équation et les solutions elles-mêmes. Directives:

  • Les fonctions doivent être travaillé avec l'une des fonctions qui renvoie le nombre de solutions en tant que valeur retournée et renvoie eux-mêmes les solutions grâce à des paramètres de sortie.
  • 3 numéros doivent être reçus à chaque fois. L'entrée sera à partir d'un fichier (prendra fin en EOF)

En attendant, je construit la fonction sans la lecture d'un fichier juste pour voir que ça marche pour moi, j'ai construit la fonction qui renvoie le nombre des solutions, mais je me suis empêtré dans la façon de retourner le résultat en tant que paramètre de sortie voici mon code pour l'instant:


int main() 
{ 

    double a, b, c, root1,root2,rootnum; 

    printf("Enter coefficients a, b and c: "); 

    scanf("%lf %lf %lf",&a, &b, &c); 

    rootnum=(rootnumber(a,b,c); 

    printf("the number of roots for this equation is %d ",rootnum); 
} 


int rootnumber (double a,double b, double c) 
{ 

    formula=b*b - 4*a*c; 

    if (formula<0) 

     return 0; 

    if (formula==0) 

     return 1; 
    else 
     return 2; 
} 
+0

'else return 2' =>' else return 2, 'et' printf ("le nombre de racines pour cette equationis") '= > 'printf (" le nombre de racines pour cette équation ");' aussi 'rootnum = (numéro de racine (a, b, c);' => 'rootnum = numéro de racine (a, b, c);' – Badda

Répondre

0

Outre une parenthèse capricieuse dans l'appel et d'autres erreurs de syntaxe, ce que vous avez jusqu'à présent, ça va bien. Pour imprimer le nombre de racines, vous avez besoin de mettre un format specifier et un argument dans votre déclaration printf:

printf("the number of roots for this equation is %d\n", rootNum); 

Le %d est le spécificateur de format pour un int.

0

Voici votre code de travail:

#include <stdio.h> 

int rootnumber (double a,double b, double c) 
{ 
    double formula = (b*b) - (4*(a)*(c)); 
    if (formula > 0) { 
     return 2; 
    } 
    else if (formula < 0) { 
     return 0; 
    } 
    else { 
     return 1; 
    } 
} 

int main (void) 
{ 
    double a, b, c; 
    printf("Enter coefficients a, b and c: "); 
    scanf("%lf %lf %lf",&a, &b, &c); 
    printf("The number of roots for this equation is %d ", rootnumber(a,b,c)); 
    return 0; 
} 
1

En C, fournissant un « paramètre de sortie » revient généralement à fournir un argument qui est un pointeur. La fonction dereferences qui pointent et écrit le résultat. Par exemple;

int some_func(double x, double *y) 
{ 
    *y = 2*x; 
    return 1; 
} 

L'appelant doit généralement fournir une adresse (par exemple d'une variable) qui recevra le résultat. Par exemple;

int main() 
{ 
    double result; 
    if (some_func(2.0, &result) == 1) 
     printf("%lf\n", result); 
    else 
     printf("Uh oh!\n"); 
    return 0; 
} 

J'ai délibérément donné un exemple qui illustre ce qu'est un « paramètre de sortie » est, mais n'a pas rapport avec le code que vous avez réellement besoin d'écrire. Pour votre problème, vous devrez fournir deux (soit un total de cinq arguments, trois que vous fournissez déjà, et deux autres pointeurs qui sont utilisés pour renvoyer des valeurs à l'appelant).

Puisqu'il s'agit d'un exercice de devoirs, je n'expliquerai pas quelles sont les valeurs que votre fonction doit renvoyer via les paramètres de sortie. Après tout, cela fait partie de l'exercice, et le but est que vous appreniez à le faire.

0

Il faut juste vérifier la santé d'esprit, son travail maintenant:

#include<stdio.h> 
int rootnumber(double a, double b, double c); 
int main() 
{ 

    double a, b, c, root1,root2; 
    int rootnum; 

    printf("Enter coefficients a, b and c: "); 

    scanf("%lf %lf %lf",&a, &b, &c); 

    rootnum=rootnumber(a,b,c); 

    printf("the number of roots for this equation is %d", rootnum); 

    return 0; 
} 


int rootnumber(double a, double b, double c) 
{ 

    int formula= (b*b) - (4*a*c); 

    if (formula<0) 

     return 0; 

    if (formula==0) 

     return 1; 
    else 
     return 2; 
} 
+0

merci, je corrigé le ";" mais ce n'est pas mon problème –