WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 24.09.2008, 13:17   #1
Honk
Master
 
Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694


Standard Suche Formel

Hallo Leute! Ich bin auf der Suche nach einer Formel bzw. nach einer fertigen Exceldatei, die mir folgendes berrechnen kann:
Ich habe eine bestimmte Anzahl an Zahlen (1 - 10) und möchte wissen, mit wievielen (und welchen) davon eine Zahl X (z.B. 365) gebildet werden kann.
Kennt ihr da eine Lösung??
Danke
Honk
____________________________________
Ich lebe über meine Verhältnisse aber unter meinem Niveau!
Honk ist offline   Mit Zitat antworten
Alt 24.09.2008, 15:41   #2
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

Mit der geringsten Anzahl der vorhandenen Zahlen nehme ich an? Denn sonst hat man ja extrem viele Lösungen.

Also wenn man 1,2,10 hat und 27 erzeugen möchte wäre die Lösung dann 10+10+2+2+2+1 ? Mit Schleifen,Ganzzahldivisionen und dem Modulooperator sicher nicht allzuschwer, wie man es mit Excel Lösen würde weiß ich leider nicht. (Ein PHP Script hätte ich schneller )
____________________________________
„Das menschliche Gehirn ist eine großartige Sache.
Es funktioniert vom Moment der Geburt an – bis zu
dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain

"Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett
zAPPEL ist offline   Mit Zitat antworten
Alt 24.09.2008, 16:02   #3
Honk
Master
 
Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694


Standard

Zitat:
Zitat von zAPPEL Beitrag anzeigen
Mit der geringsten Anzahl der vorhandenen Zahlen nehme ich an? Denn sonst hat man ja extrem viele Lösungen.

Also wenn man 1,2,10 hat und 27 erzeugen möchte wäre die Lösung dann 10+10+2+2+2+1 ? Mit Schleifen,Ganzzahldivisionen und dem Modulooperator sicher nicht allzuschwer, wie man es mit Excel Lösen würde weiß ich leider nicht. (Ein PHP Script hätte ich schneller )
Hallo, danke für die schnelle Antwort. Leider ist mir ein Fehler in der Beschreibung meiner Frage unterlaufen: der Ziffernkreis geht von 1 - 50 und es darf keine Zahl doppelt vorkommen unm die Zahl X zu erreichen.
Hast du da auch einen Tip bei der Hand?

thx
honk
____________________________________
Ich lebe über meine Verhältnisse aber unter meinem Niveau!
Honk ist offline   Mit Zitat antworten
Alt 24.09.2008, 16:55   #4
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

Also als ganz einfaches PHP Script mit einer for-Schleife:

PHP-Code:
$aErgebnis = array();
$iEingabe $meineEingabe;
for (
$i=50;$i>=1;$i--) {
    if (
$iEingabe>=$i) {
        
$iEingabe-=$i;
        
$aErgebnis[] = $i;
    }
}
print_r($aErgebnis); 
Du zählt von 50 herunter. In jeder Schleife siehst du nach ob du die aktuelle Iteration von deiner Eingabe abziehen kannst. Wenn ja kommt die Zahl in das Ergebnisarray und du ziehst es von der Eingabe ab - wenn nicht gehts du einfach weiter bis du die aktuelle Iteration wieder von deiner Eingabe abziehen kannst.

Müsste funktionieren - gerade getestet.. eine zu hohe Zahl funktioniert dann natürlich nicht mehr.. also eine Zahl größer als 50+49+48+..+2+1.

lg
____________________________________
„Das menschliche Gehirn ist eine großartige Sache.
Es funktioniert vom Moment der Geburt an – bis zu
dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain

"Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett

Geändert von zAPPEL (24.09.2008 um 16:59 Uhr).
zAPPEL ist offline   Mit Zitat antworten
Alt 24.09.2008, 17:59   #5
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Hier der Code für VBA:


Dim lngZahl As Long
Dim lngTempZahl As Long
Dim lngTeilZahl As Long

lngZahl = 365
lngTeilZahl = 50

lngTempZahl = lngZahl

Do While lngTempZahl > 0
If lngTempZahl >= lngTeilZahl Then
Debug.Print lngTeilZahl
lngTempZahl = lngTempZahl - lngTeilZahl 'Verwendete Zahl subtrahieren
lngTeilZahl = lngTeilZahl - 1 'Nächstkleinere Zahl versuchen
Else 'Nur (noch) eine Zahl notwendig
Debug.Print lngTempZahl
lngTempZahl = lngTempZahl - lngTempZahl 'Bis 0 subtrahieren
End If
Loop

Funktioniert genau wie Zappel erklärt hat.
Die Ausgabe mußt du für deine Zwecke anpassen.


mfg

WB
wbendl ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:23 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag