Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Jede Zahl in Menge mit jeder addieren

Jede Zahl in Menge mit jeder addieren

Universität / Fachhochschule

Funktionen

Tags: addieren, Funktion, Menge

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
kaktusgruen

kaktusgruen aktiv_icon

13:00 Uhr, 03.04.2014

Antworten
Hallo zusammen,

ich habe die Aufgabe, jede Zahl in einer Menge von Zahlen mit jeder zu addieren. Es handelt sich dabei um positive ganze Zahlen.
Ein Beispiel:
Ich habe folgende Zahlenmenge: {1,2,3,4}
Nun müssen alle möglichen Additionen ausgeführt werden:

1
1+2
1+3
1+4
1+2+3
1+2+4
1+3+4
1+2+3+4
2
2+3
2+4
2+3+4
3
3+4
4


Ich frage mich, ob es dafür vielleicht eine Funktion oder eine bestimmte Vorgehensweise gibt. Kann dazu im Internet nichts brauchbares finden.

Zum Hintergrund: Es ist eine Programmieraufgabe, die mit Java gelöst werden soll. Es kann sein, dass es dafür keine einfache Formel gibt, dachte aber ich frage erst mal hier nach, bevor ich damit anfange, umständliche Schleifen zu programmieren.

Schonmal Danke und Gruss, kaktus


Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich benötige bitte nur das Ergebnis und keinen längeren Lösungsweg."
Hierzu passend bei OnlineMathe:
Funktion (Mathematischer Grundbegriff)

Online-Übungen (Übungsaufgaben) bei unterricht.de:
 
Online-Nachhilfe in Mathematik
Antwort
DrBoogie

DrBoogie aktiv_icon

13:06 Uhr, 03.04.2014

Antworten
Wenn die Zahlen a1,..,an sind, dann suchst Du alle Summen a1x1+...+anxn mit xi=0 oder 1. Einfachere Formeln gibt's leider nicht.

Aber zu programmieren ist es doch einfach, meine ich. Du kannst sogar eine Schleife machen, i von 1 bis 2n, wenn Du die binäre Darstellung von i nutzen würdest. ;-)

kaktusgruen

kaktusgruen aktiv_icon

13:24 Uhr, 03.04.2014

Antworten
Tut mir leid, aber ich verstehe deine Antwort nicht ganz. Die Formel oben ist mir ja noch einigermassen klar, aber was meinst du damit, den binären Wert von i zu nutzen? Wie kann mir das helfen, respektive wie setze ich das ein?
Antwort
DrBoogie

DrBoogie aktiv_icon

13:47 Uhr, 03.04.2014

Antworten
Jede Zahl von 0 bis 2n-1 kann man binär als x1x2...xn schreiben, mit allen xi=1 oder 0. Z.B. wenn Du 7 Zahlen hast, kannst Du 3 als 0000011 schreiben und 17 als 0010001.

So, und jetzt kann ich diese Darstellung in der Schleife nutzen.
Z.B. im Beispiel mit 1,2,3,4 würde es so gehen:
i=0 => binäre Darstellung 0000 => Summe 1*0+2*0+3*0+4*0
i=1 => binäre Darstellung 0001 => Summe 1*0+2*0+3*0+4*1
i=2 => binäre Darstellung 0010 => Summe 1*0+2*0+3*1+4*0
i=3 => binäre Darstellung 0011 => Summe 1*0+2*0+3*1+4*1
...
i=15 => binäre Darstellung 1111 => Summe 1*1+2*1+3*1+4*1

Ein praktische Programm schreibe ich später, falls Du es dann noch brauchst (aber in Python, Java hab ich schon vergessen).

Upd: mit 1 bis 2n war es falsch, deshalb habe ich das korrigiert.




Frage beantwortet
kaktusgruen

kaktusgruen aktiv_icon

15:18 Uhr, 03.04.2014

Antworten
mhh ok Vielen Dank für deine Hilfe, werde mal versuchen das umzusetzen. Du musst dir nicht extra die Mühe machen, das ganze auszuprogrammieren. Falls ichs nicht schaffe komme ich nochmals auf dich zurück :-)
Nochmals Danke, Gruss kaktus
kaktusgruen

kaktusgruen aktiv_icon

09:54 Uhr, 09.04.2014

Antworten
Hallo DrBoogie, ich bins nochmal.

Ich kriege es tatsächlich nicht hin. Versuche es schon seit Stunden, aber bin wohl einfach zu doof.

Wäre froh, wenn du mir nochmals unter die Arme greifen könntest und mir deine Lösung mit Python zeigen würdest.

Vielen Dank! Gruss,
kaktus
Antwort
DrBoogie

DrBoogie aktiv_icon

10:46 Uhr, 09.04.2014

Antworten
Hi, hier mein Prog, scheint zu funktionieren.

number=4
for i in range(2**number):
sum=0
bin_list=[]
rest=i
while (rest>0):
bin_list.append(rest%2)
rest=int(rest/2)
for j in range(len(bin_list)):
sum=sum+(j+1)*bin_list[j]
print bin_list
print sum

Kleine Erklärung: die while-Schleife "zerlegt" die Zahl i in ihre binäre Folge, welche in die Liste bin_list geschrieben wird. Also ist bin_list am Ende der äußeren Schleife die binäre Darstellung von i - zu sehen durch print. Die Summe wird in sum geschrieben und am Ende jedes Durchlaufs der äußeren Schleife ausgegeben.

Falls noch Fragen - gerne.

Update. Kleine Korrektur im Prog gemacht.
Und ACHTUNG! Python-Prog muss man richtig formatieren, sonst wird's nicht laufen.
Frage beantwortet
kaktusgruen

kaktusgruen aktiv_icon

22:06 Uhr, 09.04.2014

Antworten
Habs hingekriegt, danke für deine Hilfe.

Gruss kaktus