?Hilfe? Ausgabe Befreundeter Zahlen \ Amicable Numbers ?Hilfe?



  • Entwickeln Sie ein Programm in C, welches die ersten 13 befrundeten Zahlenpaare auf dem Bildschirm ausdrueckt! 😡 😕

    # 1 220 284
    # 2 1184 1210
    # 3 2620 2924
    # 4 5020 5564
    # 5 6232 6368
    # 6 10744 10856
    # 7 12285 14595
    # 8 17296 18416
    # 9 63020 76084
    #10 66928 66992
    #11 67095 71145
    #12 69615 87633
    #13 79750 88730

    Verwenden Sie keine for() Schleife 😮
    Verwenden Sie do, while, do-while or if.

    Kann mir jemand vieleicht den Code in C fuer das Programm geben? Es waere schoen wenn es fuer ein Anfaenger 😕 verstaendlich kommentiert ist. Vielen Dank fuer eure Hilfe.


  • Mod



  • Wie hättest du das Problem denn gelöst, wenn du eine for()-Schleife nutzen dürftest?

    Wenn du das geschafft hast, kannst du die for()-Schleife (fast) verlustfrei durch eine while-Schleife ersetzen:

    for( init; check; update )
    {
      action;
    }
    
    =>
    
    init;
    while( check )
    {
      action;
      update;
    }
    


  • Nachdem ich nicht davon ausgehe, dass du weißt, was "befrundete" Zahlen sind --> http://de.wikipedia.org/wiki/Befreundete_Zahlen



  • for( init; check; update ) was bedeutet check update?
    {
    action; action?
    }

    =>

    init;
    while( check ) while check?
    {
    action;
    update;
    }

    die umsetzung verstehe ich nicht???

    ich habe eine zahl 284 z.Bsp diese teile ich

    284 / 1 = 284
    284 / 2 = 142 - Ganze Zahl(Teilerzahl)
    284 / 3 = 94.666
    284 / 4 = 71 - Ganze Zahl(Teilerzahl)
    284 / 5 = 56.8
    284 / 6 = 47.3
    284 / 7 = 40.57
    284 / 8 = 35.5
    284 / 9 = 31.55
    284 / 10 = 28.4
    284 / 11 = 25.8
    284 / 12 = 23.6
    284 / 13 = 21.84
    284 / 14 = 20.28
    " " = """"
    284 / 71 = 4 - Ganze Zahl (Teilerzahl)
    284 /142 = 2 - Ganze Zahl (Teilerzahl)
    284 /284 = 1 - Ganze Zahl (Teilerzahl)

    So nun addiere ich Ganszahligen Teiler 1+2+4+71+142 = 220

    Das bedeutet das somit 220 befreundet mit 284 ist 220=284

    Umgeschrieben 220 = Teilersumme der ganzen Zahlen von 284.

    So wie verpacke ich das in diese schleife? Was ist do? und was ist while?

    Erstmal Zahl einlesen oder? Variablen deklarieren?

    int i (Laufzahl) = i++
    int zahl1 = 0 (284)
    int zahl2 = 0 (220)
    int teilersumme = zahl1 Oder Zahl 2 % 1,2,3,4?
    oder schreibt man das so?
    teilersumme = zahl1 | zahl2 % i++

    do was?
    while was?

    Danke fuer eure Hilfe



  • Erstmals zu den Schleifen 😉

    For:

    for (i=0; i<5; i++)
    {    ergebnis = 0+i;
    }
    

    D.h. er läuft von i=0 bis i=4 (also 5 mal) durch und zählt jeweils i zu 0 dazu und speichert das Ergebnis in "ergebnis" (musst du vorher deklarieren).

    Do while bedeutet, er macht etwas (do), bis ein bestimmtes Ereignis eintritt (while).

    Also z.B.
    do {dividieren von 1 bis n=deine Zahl} while (Teiler<2).



  • ballu schrieb:

    was bedeutet check update?
    action?
    ...
    die umsetzung verstehe ich nicht???
    ....

    oder schreibt man das so?
    teilersumme = zahl1 | zahl2 % i++

    do was?
    while was?

    🙄
    Fang dein Tutorial nochmal von vorne an. Oder leih dir ein Buch aus der (öffentlichen) Bibliothek.

    Schreib erstmal ein paar kleine Programme:
    Fang mit dem Programm zur Ausgabe von "Hallo Welt!" an.
    Dann gibst du den Text 10 mal hintereinander aus.
    Berechne die Summe der Zahlen von 1 bis 30
    Berechne das Produkt der Zahlen von 1 bis 30

    Dann kannst du nochmal bei den befreundeten Zahlen vorbei schauen.

    Nochmal zu den Schleifen:

    Schau dir mal for( init; check; update ) und for (i=0; i<5; i++) an.
    Fallen dir dabei Ähnlichkeiten auf. Tipp: die ; stehen da nicht zum Spass.
    Jetzt setze das mal bei

    init;
    while( check ) while check?
    {
    action;
    update;
    }
    

    ein.

    Die Bedeutung von action überlasse ich dir.
    Falls du kein Englisch kannst, kann ich http://dict.leo.org/ende?lang=de&lp=ende empfehlen. (Gibt es auch als Suchmaschine für Firefox)

    Ansonsten ist das alles nochmal im Buch erklärt. Das steht soweit auch in jedem noch so vernachlässigtem Online-Tutorial.



  • Ich will mal nicht so sein und helf dir (ein bisschen) 😉

    Mit folgendem Programm kannst du dir mal deine Teiler ausgeben lassen:

    int main ()
    
    {
        float zahl=284;
        int i=1;
        float teiler;
    
        do
        {
            teiler = zahl/i;
            printf("Teiler: %f\n", teiler);
            i++;
        }
    
        while (i<zahl+1);
    }
    

    Man beachte die Ähnlichkeiten: 😃

    i=1 --> init
    i<zahl+1 --> check
    i++ --> update



  • ballu schrieb:

    Verwenden Sie keine for() Schleife 😮
    Verwenden Sie do, while, do-while or if.

    Nachdem du laut Angabe keine for-Schleife verwenden sollst, müsstest du doch zumindest schon mal was darüber gehört haben...?


Anmelden zum Antworten