2017-06-01 4 views
2

Ich habe eine Frage in C, wo ich Koeffizienten einer quadratischen Gleichung in eine Funktion einfügen und die Anzahl der Lösungen und Ergebnisse zurückgeben muss.Gibt einen Wert als Ausgangsparameter zurück

Schreiben ein Programm, das eine Reihe von 3 reellen Zahlen annimmt, die die Koeffizienten einer quadratischen Gleichung sind, und das Programm wird einige Lösungen für die Gleichung auszudrucken und die Lösungen selbst. Richtlinien:

  • Funktionen mit einer der Funktionen gearbeitet werden muß, die die Anzahl der Lösungen als einen Rückgabewert zurückgibt, und gibt die Lösungen sich durch den Ausgangsparametern.
  • 3 Nummern müssen jeweils empfangen werden. Die Eingabe aus einer Datei sein wird (wird in EOF Ende)

In der Zwischenzeit habe ich die Funktion gebaut, ohne aus einer Datei zu lesen, um zu sehen, dass es funktioniert für mich, baute ich die Funktion, die die Zahl zurückgibt wurde von Lösungen, aber ich verstrickt, wie das Ergebnis als Ausgabeparameter zurück hier ist mein Code für jetzt:


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

'sonst Rückkehr 2' =>' else return 2; 'und' printf ("die Anzahl der Wurzeln für diese equationis") '= > 'printf (" die Anzahl der Wurzeln für diese Gleichung ");' auch 'rootnum = (Wurzelzahl (a, b, c);' => 'rootnum = Wurzelzahl (a, b, c);' – Badda

Antwort

0

Neben einer unberechenbaren Klammer in dem Aufruf und einige andere Syntaxfehler, was Sie haben, soweit sieht gut aus. Um die Anzahl der Wurzeln auszudrucken, müssen Sie ein format specifier setzen und ein Argument in Ihrer printf Aussage:

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

Die %d sind die Formatangabe für ein int.

0

Hier ist Ihr Arbeitscode:

#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

In C, einen „Ausgangsparameter“ bietet in der Regel beträgt ein Argument zu bieten, die ein Zeiger ist. Die Funktion dereferenziert diesen Zeiger und schreibt das Ergebnis. Beispielsweise;

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

Der Anrufer muss eine Adresse im allgemeinen (z.B. einer Variablen), die das Ergebnis erhalten. Beispielsweise;

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

Ich habe vorgesehen bewusst ein Beispiel, das ein „Ausgangsparameter“ zeigt, was ist, aber hat man tatsächlich auf den Code nicht Beziehung schreiben müssen. Für Ihr Problem müssen Sie zwei (d. H. Insgesamt fünf Argumente, drei, die Sie bereits bereitstellen, und zwei weitere Zeiger, die zum Zurückgeben von Werten an den Aufrufer verwendet werden) angeben.

Da dies eine Hausaufgabe ist, werde ich nicht erklären, welche Werte Ihre Funktion über Ausgabeparameter zurückgeben muss. Schließlich ist das ein Teil der Übung, und der Zweck ist, dass Sie lernen, indem Sie das herausarbeiten.

0

Es müssen nur einige geistige Gesundheit überprüft, seine Arbeit jetzt:

#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

Danke, i behebt das fehlende ";" aber das ist nicht mein Problem –

Verwandte Themen