NEXT_Prime; PREV_PRIME; DISPLAY_PRIMES



  • Ja! Nimm als Quelle next_prime!



  • Belli schrieb:

    Ja! Nimm als Quelle next_prime!

    Einfach nur den Gegenteil?



  • Du solltest darüber nachdenken, Dir eine andere Beschäftigung zu suchen.



  • Ich weiss das ist nicht meine stärkste Seite aber hab nur seit zwei Wochen damit angefangen.



  • Kann mir irgendjemand weiterhelfen??

    Es geht um die Prev_prime, also die letzte Primzahl und Display_prime, also die Primzahlen zwischen [1,N].

    Wäre sehr dankbar!!!



  • Harry1990 schrieb:

    Kann mir irgendjemand weiterhelfen??

    Es geht um die Prev_prime, also die letzte Primzahl und Display_prime, also die Primzahlen zwischen [1,N].

    Wäre sehr dankbar!!!

    Jetzt funktioniert Prev_prime!



  • Kann irgendjemand mir weiterhelfen?
    Prev_prime funktioniert nicht richtig wie es sollte....

    #include <iostream>
    
    using namespace std;
    const int EXIT = 5;
    
    //Forward declare menu function
    bool test_prime (int number);
    int prev_prime (int number);
    int next_prime (int number);
    void menu();
    
    int main()
    {
    
        int option = EXIT;
        int number;
    
        //Declare any other needed variables and constants here
    
        do
        {
    
            //Display the menu
    
            menu();
            cin >> option;
    
            //Read user option
    
            switch (option) {
                case 1: cout << "Test prime? ";
                    cin >> number;
                    if(test_prime(number))
                        cout << "Number is prime\n";
                    else
                        cout << "Number is not prime\n";
                    break;
                case 2: cout << "Next Prime? ";
                    cin >> number;
                    cout << "\nNext prime: " << next_prime(number) << '\n';
                    break;
                case 3: cout << "Prev Prime? ";
                    cin >> number;
                        cout << (prev_prime(number));
                        cout << "There's no previous prime";
                        cout << "\nPrevious prime of " << number << " is " << next_prime(number) << '\n';
                    break;
                case 4: cout << "N? ";
    
                    break;
                case 5: cout << "Exiting ...";
                    break;
                default:cout << "Wrong choice!!!";
                    break;
            }   //End of switch
    
            //Handle user option
        }
    
        while (option != EXIT);
        return 0;
    }
    
    void menu(){
        cout << "=================\n"
        "1. Test Prime\n"
        "2. Next Prime\n"
        "3. Prev Prime\n"
        "4. Display Primes\n"
        "5. Exit\n"
        "=================\n";
    
        cout << "\nYour Choice: ";
    }
    
    bool test_prime (int number)
    {
        if (number)
        {
            return false;
        }
    
        for (int i = 2; i <=number/2; i++){
            if (number%i == 0){
                return false;
    
            }}
    
            return true;
    }
    
    int next_prime (int number)
    {
        for(++number; !test_prime(number); ++number);
    
        return number;
    }
    
    int prev_prime (int number)
    {
        int oldPrime = number;
    
        if (number <= 2)
        {
            return false;
        }
            else {
                while (true) {
                if (test_prime (number) && number < oldPrime ){
                    return number;
                } --number;
            }
        }
    }
    


  • Du hast, warum auch immer, Deine test_prime - Funktion verhunzt.
    Damit funktioniert auch Test Prime und Next Prime natürlich nicht mehr.

    Sag mal: Was von dem ganzen Zeug hast Du selbst geschrieben und was hast Du von woanders her bekommen?
    Ich rate mal: Die main - Funktion und die menu - Funktion sind nicht von Dir.



  • Du solltest das wirklich in das C++-Forum schreiben:
    https://www.c-plusplus.net/forum/f15

    Wenn du regelmässig Probleme mit einer kritischen Funktion bekommst, würdest du üblicherweise automatisch prüfen, ob sie noch richtig funktioniert. Zum Beispiel etwa so:

    #define UNIT_TEST(e) \
        if (!(e)) { cout << "Unit test " << #e << " failed in line " << __LINE__ << endl; return 1; }
    
    int main()
    {
        ...
        UNIT_TEST(test_prime(1) == false);
        UNIT_TEST(test_prime(2) == true);
        UNIT_TEST(test_prime(100) == false);
        UNIT_TEST(test_prime(101) == true);
    }
    

    Auf diese Weise wäre dir aufgefallen, wo das Problem liegt.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten