Off-Topic Diskussionen Kein Platz für Deine Frage gefunden? Dann bist Du hier genau richtig! |
 |

04-04-2010, 13:30
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
lovecalc
hey zusammen mal wieder 
frohe ostern wünsch ich erstmal...
ich hab mal wieder die eine oder andere idee gehabt wobei ich mal wieder auf dem schlauch stehe.
wie der titel schon sagt hätt ich gern sowas wie ein liebesrechner.
dabei würd ich gern den vornamen in einen zahlenwert wandeln.
das gilt für zwei personen. diese beiden zahlenwerte sollen zusammengefügt werden und dann soll daraus eine prozentangabe entstehen.
jetzt hab ich 2 probleme:
mit welcher funktion schaff ich es aus einem string einen zahlenwert zu machen.
die zahlen addieren wird ja ned so schwer sein..und wie bekomm ich es dann so hin, das aus diesen beiden eine prozentzahl entsteht.
sprich 0 - 100.
ich weiß leider nicht wonach ich mich da richten könnte..vielleicht habt ihr eine idee oder sogar was ganz anderes für mich?
ins php handbuch schon geschaut und die suche auch genutzt..
aber um ehrlich zu sein weiß ich nicht genau wonach ich suchen muss.
mit time() hat das keinen sinn, weil das den wert halt immer wieder verändern würde.. daher die sache mit dem string.
google brachte mir ned mal ein ergbnis für eine gute beispieldatei wo ich mal abluchsen hätte können :/
wäre klasse ..danke euch schonmal
viele grüße
|

04-04-2010, 13:57
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
frohe ostern
ich habe da prinzipiell zwei gedanken:
string->int
klingt irgendwie nach intval oder? wäre aber eine denkbar blöde lösung!
nun, das ganze würde ich so angehen: als erstes per strlength länger ermitteln, dann jeweils einen char isolieren, substr, den rest in eine tmp variablen speichern, dann den ersten char mittels ord in ascii umrechnen. und das ganze so lange, bis du alle chars umgerechnet hast. dann fügst du die werte zusammen und hast deine zahl
an der stelle ord, kannst du natürlich eine function zwischenschalten, nur ord ist ja für lovecalc etwas einfach, muss ja nach etwas aussehen!
eventuell kannst du mir crc32 arbeiten und das dann in undendlich unübersichtlichen operationen verändern.
zum prozentrechnen: in diesme falle brauchst du einen absoluten wert, das sagt die mathematik: xx% von etwas.
ich hoffe, das hilft dir etwas. falls du mit dem php probleme hast, sag besheid, ich hefe gerne
|

04-04-2010, 14:24
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
hey  danke erstmal für die rasche antwort
ich habs mal mit intval probiert. ich glaub ich mach da was falsch..ich bekomme da generell immer 0 raus.
mal zu deinem beispiel. also, ich hab noch nicht sooo viel erfahrung mit php, darum müsstest dich vielleicht etwas klarer ausdrücken *gg..
gibts vielleicht eine methode die ganze zeichenkette in eine zahl umzuwandeln
ohne jeden einzelnen auseinanderzunehmen? ich wüsste sonst nicht wie ich das angehen sollte :/
ja genau, und dann ist da das problem das ich ja den prozentwert von etwas ermitteln will.. aber was? von 100% ?
hm..brauche wohl doch noch etwas mehr hilfe
danke dir schonmal
liebe grüße
|

04-04-2010, 14:44
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
ok, kein problem.
sagt ja, dass intval etwas blöd sei 
wenn du beispielsweise $foo = 11c; hast, dann ist das vertretbar.
ich habe eine ähnliche funktion einmal gesucht, um strings in int zu verwandeln. allerdings nicht wirklich fündig geworden, deshalb habe ich das ganze mit substr gemacht.
als erstes ermittelst du deinen stringlänge mittels $var1 = strlen();
dann setzt du eine variable (bsp $var2) auf $var2 = $var1 - 1; $after ist nun 0.
bei hallo wäre das jetzt also 4 für $var2: nun nur noch den kehrwert von $var2, sprich -4.
jetzt nimmst du deinen substring von deinem string, sprich so
substr('hallo',$after, $var2 ); ->substr('hallo', 0, -4)
das gibt die a zurück. als nächstes beide variablen (after, var2) um eins erhöhen und das ganze so lange, bis der string durchlaufen ist.
andere möglichkeit wäre da sganze mit (int)
sähe so aus:
$int = (int)$string; //type cast
hier noch einige links:
PHP: substr - Manual
PHP: ord - Manual
PHP: strlen - Manual
falls noch hilfe benötigt wird, sag bescheid!
|

04-04-2010, 15:14
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
okay, so weit bin ich nun schonmal
PHP-Code:
$name = "hallo";
$name2 = "test";
$str = strlen($name);
$var1 = $str;
$str = strlen($name2);
$var2 = $str;
jetzt hab ich die zeichenlängen der beiden namen..
das hier versteh ich gerade allerdings nicht..
ich soll var2 auf var2 setzen? dann den wert von var1 auf var2 setzen und var1 subtrahieren mit 1? versteh ich ned...
---
dann setzt du eine variable (bsp $var2) auf $var2 = $var1 - 1; $after ist nun 0.
---
|

04-04-2010, 17:38
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
entschuldige mich, war gestern abend etwas länger 
ich hab das mit dem kerhwert etwas zu umständlich gedacht, geht viel einfacher.
folgendes programm gibt die ascii werte eines string aus.
PHP-Code:
$string = 'hallo'; // der string, den man lesen will $var1 = 0; //brauchen wir später $var2 = strlen($string); $values =array(); //hier speichern wir ascii werte für $string
while($var1<$var2){ //das ist die bedingung $val = ord($string[$var1]); //hier kommt des ascii wert des aktuellen chars heraus echo $val."\n"; //hier geben wir das aus, geht natürlich in einem schritt array_push($values, $val); //hier schreiben wir das in das vorher definierte array $var1++; //hier inkrementiere wir das, um nicht den selben char zu lesen } // das ganze steht nun im array, das bei 0 zu lesen beginnt, deshalb $var = 0; am anfang // das array kannst du nun mit einer foreach schleife durchgehen und jeweils zu einem wert, den nächsten aus dem array addieren. // dann hast du den gesamten string als ascii wert //willst du diesen "algorithmus" verändern, dann musst du vor array push ansetzen oder nach der foreach schleife, die dir deinen absolutwert errechnet
Geändert von svr (04-04-2010 um 17:41 Uhr)
|

04-04-2010, 18:12
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Du hast doch eigentlich ein Konzeptionelles Problem, dass du nichtmal den algorithmus kennst, den du verwenden willst.
also, erstmal nen Algorithmus ausdenken (das versucht svr gerade für dich) und dann kommt die Implementierung. So lange es nichts zu implementieren gibt, verschiebe ich es mal nach OT.
|

04-04-2010, 18:49
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
exakt 
das sollte dir zuerst klar werden. wie genau du die werte errechnen willst!
hab mir mal gedanken gemacht: man könnte anhand des wertes verschiedene divisionsoperationen (fibonacci zahlen) durchführen, sodass man auf einen wert >100 kommt. dann kann man nämlich einfach sagen->wert->prozentwert
bei fragen, melde dich!
|

04-04-2010, 19:45
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
@tobi..du sagst es...hab ich doch schon von anfang an aufn tisch gelegt
danke, ich glaube der ansatz ist ganz gut.
hab das mal eben ausprobiert aber muss gestehn das ich das erstmal alles richtig begreifen musste..mein problem ist halt das ich absolut nicht weiter weiß, selbst wenn ich nun die ascii werte habe und die anschließend mit foreach zusammenrechne.
da komm ich auf nen wert von 528 bei dem wort hallo um mal dabei zu bleiben...was soll ich mit dem machen? *kopf@tisch..
habt ihr alle studiert oder so ? *lach.. fibonacci..noch nie zuvor gehört..hab mich aber eben mal schlau gemacht..so isses ned  aber wenn ich das nun in meinem script anwenden wollte *weia..nomma kopf@tisch
gibts nicht was einfaches für doofe sozusagen? *gg bin doch noch ned so lang in der matherie *snief
ok, also angenommen ich habe nun diese 528..der wert fällt ja sehr unterschiedlich aus..je nach länge und ascii wert des namens dementsprechend..
nun soll ich diesen wert als prozentwert verwenden..also 52,8% ?
dann fällt die wahrscheinlichkeit ne quote von 100% zu bekommen sehr gering aus , oder hab ich das schon wieder falsch verstanden?
|

04-04-2010, 19:50
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Das hat nichts mit studiert oder ähnliches zu tun. solche Rechner gibt es zu Hauf im Netz. Und Jamba kanns doch auch...
Wenn ich keinen Plan hab, was ich will, würd ich mich erstmal fragen, warum ich "das" dann überhaupt machen will. Wie gesagt, bist sicher nicht der erste, der so etwas anbietet und da du nun wirklich keinen Plan (und damit meine ich nicht die Programmierung) hast, wird dein Ergebnis/Angebot zwangsläufig schlechter ausfallen.
Also, was soll der Aufwand? Genieß die Freizeit.
|

04-04-2010, 20:01
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
jaja, hast ja recht mensch..sitze doch schon aufm arsch und lerne und probiere und mache und tute usw..bin halt komisch..manchma brauch ichn arschvoll  ..nicht in diesem sinne  aber ma nen kopf@tisch für nen denkanstoß
|

04-04-2010, 20:59
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
ich bin immer froh, wenn mir jemand hilft, desegen helfe ich dir auch 
wenn du fragen hast, dann frag
habe dir im "quelltext-chen" viele bunte kommentare geschrieben, das müsste klar sein. sind nur standartfunktionen. ord, strlen,...
nun, was du mit den ascii werten machst? das ist dein problem, die methode über ascii ist nur eine von sicher vielen möglichkeiten. so habe ich es damals gelöst. du kannst auch den type cast machen, du kannst aber auch jedem char einen (hex/okta-dezimalen) wrt zuordnen, sprich a wird zu 234, b zu 23 usw....
da ist deine kreativität grenzenlos.
fibonacci, nunja, du kannst auch primzahlen verwenden, du kannst potenzen verwenden, du kannst ausnahmen für gerade zahlen einbauen, du kannst alles tun, was dir spass macht.
bei der programmierung helfe ich dir natürlich gerne
|

05-04-2010, 18:46
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
hey, das ist aber nett von dir  danke
aber ich habe mir gestern nochmal überlegt ob ich nicht etwas viel simpleres
nehme. Ich rede von wahrheitswerten. also da es sich ja hierbei um eine community handelt wäre das vielleicht sinnvoller..so wie z.b zwei profile abgleichen, interessen unter anderem, dann gewisse punkte vergeben ob der user schon in der freundesliste ist oder nicht..solche sachen halt. dann wie regelmäßig miteinander geschrieben wird usw.. ich glaube das ist ne sache die sich dann vielleicht doch mehr rentiert als son oller zahlengenerator. obwohl mich die matherie an sich natürlich brennend interessiert.
mist...mal sehen
|

06-04-2010, 01:02
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
|
|
Brutal und einfach:
PHP-Code:
///
/// return STR() similarity in percent
function lovetest_nameletter($name1, $name2) {
// der Rückgabewert ist eine Integerzahl
// den (praktischeren) Prozentwert findet man in $percent
similar_text(
strtolower($name1),
strtolower($name2),
$percent
);
return sprintf('%0.02f', $percent);
}
Ich vermute, der Jamba-Name-Love-Tester ist auch nicht komplizierter aufgebaut.
Die Funktion similar_text() vergleicht zwei Zeichenketten auf ihre "Ähnlichkeit". Eine genauere Erläuterung findest du im PHP-Handbuch.
Geändert von fireweasel (07-05-2010 um 20:39 Uhr)
|

06-04-2010, 08:00
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
naja, ich hatte da auch nochmal eins gefunden:
PHP-Code:
class lovecalc {
/**
* @return lovecalc
* @param string $firstname
* @param string $secondname
* @desc Konstructor
*/
function lovecalc ($firstname, $secondname) {
$this->lovename = strtolower(preg_replace("/ /","",strip_tags(trim($firstname.$secondname))));
$alp = count_chars($this->lovename);
for($i=97;$i<=122;$i++){
if($alp[$i]!=false){
$anz = strlen($alp[$i]);
if ($anz<2)
{
$calc[] = $alp[$i];
}
else
{
for($a=0;$a<$anz;$a++)
{ $calc[] = substr($alp[$i],$a,1); }
}
}
}
while (($anzletter = count($calc))>2) {
$lettermitte = ceil($anzletter/2);
for($i=0;$i<$lettermitte;$i++)
{
// Just a little bit SHIFT :D
$sum = array_shift($calc)+array_shift($calc);
$anz = strlen($sum);
if ($anz<2)
{
$calcmore[] = $sum;
}
else
{
for($a=0;$a<$anz;$a++){ $calcmore[] = substr($sum,$a,1);
}
}
}
$anzc = count($calcmore);
for($b=0;$b<$anzc;$b++)
{
$calc[] = $calcmore[$b];
}
array_splice($calcmore,0);
}
$this->lovestat = $calc[0].$calc[1];
}
/**
* @return int
* @desc Show result
*/
function showlove () {
return "$this->lovestat";
}
}
$name1 = "karsten";
$name2 = "mareike";
$my_love = new lovecalc($name1,$name2);// New instance
echo $my_love->showlove(); // Show
aber ich mach das dann nun doch auf meiner zuletzt beschriebenen art und weise..dann kann wenigstens behauptet werden das an der berechnung was dran ist  anstatt solcher werte..kommt denk ich mal besser
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|