Fehler: Mehr als eine Instanz von überladene Funktion "sqrt" entspricht der argument-Liste. Was das?

In meine Hausaufgaben für meine C-Klasse haben wir ein Programm schreiben, dass prüft, ob eine ganze Zahl eine Primzahl ist. Ich bin immer ein Fehler bei der sqrt () - Funktion. Mein professor sagte mir, dass num muss ein integer sein, und wir müssen mit der sqrt () - Funktion. Ich dachte, das problem war, dass die sqrt () - Funktion kann nicht verwendet werden, die auf ein integer, aber mein professor hat mir gesagt, dass es kann, und das war ich immer ein Fehler von etwas anderem. Seid Ihr das problem sehen?

int primality(int num)
{

int isprime;

    /*check if num is prime*/
    for (int i = 2; i <= sqrt(num); i++)
    {
        if (num % i == 0)
            isprime = 0; /*is not prime*/
        else 
            isprime = 1; /*is prime*/
    }

    if (isprime == 0)
        return 0;
    elseif (isprime == 1)
        return 1;
}

BEARBEITEN:
Ja, ich bin mit Mathe.h und kompilieren als C-code.

Den Fehler msg "Fehler: Mehr als eine Instanz von überladene Funktion "sqrt" entspricht der argument-Liste.

  • Und die Fehlermeldung, die Sie bekommen haben, war... ? Ohne zu sehen, dass (a) Sie beinhalten math.h? (b) hast du den link mit libm? (Ich Ignoriere alle anderen Fehler im Programm, @CarlNorum hat darauf hingewiesen, man)
  • In diesem code kommen Sie zurück aus jeder iteration der Schleife. In anderen Worten, man wird nur eine iteration. Diesen code einfach prüft, ob Ihre Anzahl gerade oder ungerade ist. Durch die Art und Weise, die korrigierte Funktion benannt werden sollten isprime. Und kann Sie nicht verwenden bool eher als int für eine logische Wert?
  • Wie sind Sie mit dem kompilieren? Ich bin riechen C++ in der Fehlermeldung.
  • Ich bin mit Visual C++ schreiben und kompilieren meines Codes. Könnte das das problem sein? Ich hatte noch nie irgendwelche Probleme mit es vor.
  • Schreiben Sie i <= sqrt(num) als i * i <= num
  • Vorschlag: Wenn es nicht auf die Logik des Programms, können Sie beseitigen die if / elseif-block an das Ende der Funktion und ersetzen Sie es mit einer einzigen Zeile C++ - code aus einem reservierten Wort, einen einzigen Variablennamen und ein Semikolon. Das reservierte Wort-und Variablen-Namen sollten durch ein Leerzeichen getrennt werden.

InformationsquelleAutor Petefic | 2011-10-31
Schreibe einen Kommentar