Hausaufgabe zu Schleifen (Uni)



  • Hallo, es geht um eine Hausaufgabe an der Uni. Die Aufgabenstellung lautet wie folgt: Schreiben Sie eine Funktion, die für eine Zahl n folgendes untersucht: Kann ich aus der Folge der Zahlen von 1 bis n, zwei Zahlen so herausnehmen, dass ihr Produkt gleich der Summe der restlichen Zahlen ist.
    Beispiel: 6 * 7 = 1 + 2 + 3 + 4 + 5 + 8 + 9 + 10
    Wir wollen diese Zahlen Splitzahlen nennen.
    Schreiben Sie eine Funktion countSplit(int n1, int n2), die ermittelt, wie viele solche Zahlen es zwischen n1 und n2 gibt (n1, n2) eingeschlossen.

    Da Mein erster Lösungsversuch nicht zielführend war, habe ich noch einmal alles über den Haufen geworfen und neu angefangen.
    Ich bekomme das Programm so allerdings nicht zum laufen, bin allerdings auch noch blutiger Anfänger und bin für jede Hilfe dankbar.

    #include <iostream>
    
    
    
    int sumSplit(int n1,int n2)
    {	
        int sum = 0;
        int i = 0;
        for (i = n1; i <= n2; i++) {
          sum += i;
        }
      return sum;
    }
    
    
    int countSplit(int n1,int n2)
    {
        std::cin>>n1;
        std::cin>>n2;
        int produkt;
        int summe;
        int sumprodukt,count;
        int x1 = n1;
        int x2 = n2;
        count = 0;
        do{
        if (x1 < x2){
        for(int i = 1 ; i < x2; i++) {
            sumprodukt = 0;
            summe = 0;
            produkt = 0;
            sumprodukt = x1 + x2;
            summe = sumSplit(n1, n2) - sumprodukt;
            produkt = x1 * x2;
            if (summe == produkt) {
                printf("Summe = %d Produkt = %d \t %d \t %d \n", summe, produkt, x1 ,x2);
                count++;
                x2--;
            } else {
             x1++;
            }
        }
        }else {
            x1= 1;
            x2--;
        }
        } while (x2 != 1);
        if (count == 0){
            return 0;
        }else{
            return count;
        }
    
    }
    
    

    Ich hab auch schon probiert eine Eingabe für n1 und n2 zu definieren, aber nicht mal das hat funktioniert, da ich glaube die int main noch irgendwo reinpacken muss, allerdings nicht so wirklich einen Plan habe wie 😅



  • Ich bekomme das Programm so allerdings nicht zum laufen

    Das heißt was?



  • @manni66 sagte in Hausaufgabe zu Schleifen (Uni):

    Ich bekomme das Programm so allerdings nicht zum laufen

    Das heißt was?

    Ich habe den Code durch den Compiler geschickt (mit meiner reingebastelten Eingabe)
    der läuft durch, aber lässt mich eben keine Eingaben machen.


  • Mod

    @Dommasch sagte in Hausaufgabe zu Schleifen (Uni):

    Ich habe den Code durch den Compiler geschickt (mit meiner reingebastelten Eingabe)
    der läuft durch, aber lässt mich eben keine Eingaben machen.

    Das heißt, du hast irgendeinen anderen Code, den du uns nicht gezeigt hast, und der funktioniert nicht. Du brauchst Hilfe?



  • @SeppJ danke du hast natürlich recht, ich habe die Eingabe wie oben gezeigt mal wieder eingebaut, ich befürchte nur an die falsche Stelle.



  • Ich verstehe die Aufgabe so, dass countSplit(10,13) ermittelt, wieviel Splitzahlen es jeweils für 10, 11, 12 und 13 gibt und deren Gesamtzahl ausgibt.

    Für die Splitzahlen wird nicht nur der Bereich von 10 bis 13 betrachtet sondern jeweils von 1-10, 1-11, 1-12, 1-13.

    Sagt dir „der kleine Gauß“ etwas?

    Wenn du nicht weißt, wie man Werte eingibt, dann mach das erstmal mit Konstanten.
    Du musst ja erstmal den Test mit 10 -> 6,7 bestehen.


  • Mod

    @Dommasch sagte in Hausaufgabe zu Schleifen (Uni):

    @SeppJ danke du hast natürlich recht, ich habe die Eingabe wie oben gezeigt mal wieder eingebaut, ich befürchte nur an die falsche Stelle.

    Du verstehst mich nicht. Du hast schon ein Problem mit deiner Eingabe. Du zeigst uns nicht den Code den du dazu geschrieben hast. Du hast die Frage, wieso deine Eingabe nicht funktioniert¹. Wie sollen wir dir so helfen können?

    ¹: Genauer gesagt: Du stellst gar keine Frage und überlässt es uns, zu raten, was du überhaupt wissen möchtest. Das macht die Sache nicht unbedingt einfacher.


Anmelden zum Antworten