Seite 1 von 2

In einer Zahl die erste und die letzte ziffer addieren

Verfasst: 06.08.2005 13:34
von Suche Hilfe
Wie kann ich es machen das von einer Zahl immer die erste und die letzte Ziffer addiert wird.
Und wie kann ich Zahlen im array zerlegen?

Verfasst: 06.08.2005 13:51
von Pyramide

Code: Alles auswählen

$zahl = "1234";
$erste = substr($zahl, 0, 1);
$letzte = substr($zahl, -1, 1);
$addiert = $erste + $letzte;

Verfasst: 06.08.2005 14:08
von Suche Hilfe
und wie kann ich es machen wenn ich eine zahl z.bsp. 17485372 habe. das jede zahl angefangen von der ersten mit der letzten die zweite mit der vorletzten die dritte mit der dritten von hinten usw. bis jede zahl 1 mal addiert wurde. und wenn eine zahl übrig bleibt dann wird die einfach zum ergebniss dazugeschrieben

Verfasst: 06.08.2005 14:15
von kellanved
Bzgl. der ersten Frage: Simpel:

Code: Alles auswählen

 $zahl%10 + floor($zahl/pow(10,floor((log($zahl)/M_LN10))));
wobei log der natürliche Logarithmus und $zahl Deine Zahl ist . Bei Zahlen kleiner 10 sind allerdings erste und letzte Ziffer identisch; die Zahl wird dann einfach verdoppelt.

Edit: mit Strings geht es natürlich auch.

Verfasst: 06.08.2005 14:30
von Suche Hilfe
diesen script verstehe ich nicht. wie gibt man das dann mit echo aus? sagen wir ich habe eine zahl 12345 was sollte dann da rauskommen?

Verfasst: 06.08.2005 14:33
von kellanved
na 6

Code: Alles auswählen

echo $zahl%10 + floor($zahl/pow(10,floor((log($zahl)/M_LN10))));
Ist allerdings auch nur eine Antwort auf Dein erste Frage, die auch schon von Pyramide beantwortet wurde.

Bei den anderen Fragen verstehe ich nicht so recht, was Du willst ;-).

Verfasst: 06.08.2005 14:38
von Suche Hilfe
ich will aus einer zahl z.bsp. 12345 immer die erste mit der letzten, die zweite mit der vorletzten addieren.
sollte also so sein

1 + 5
2 + 4
3

das ergebniss sollte so sein 663

dann wieder die erste und die letzte addieren also

6 + 3
6

dann sollte 96 rauskommen. aber dann mit verschieden langen zahlen.
vielleicht kann man ein das irgendwie in eine while schleife machen. wenn es mehr als 2 ziffern sind dann addieren wenn nicht dann die 2 ziffern ausgeben

Verfasst: 06.08.2005 15:09
von Blutgerinsel

Code: Alles auswählen

$zahl='123456';
while ($i < strlen($zahl)-1)
{
  echo ( $zahl{$i}+$zahl{strlen($zahl)-1} )."<br/>";
  $i++;
}
so?
Wenn du das solange machen willst, bist du nur noch eine Ziffer hast solltest du dich über "Rekursive Funktion" informieren. Abgesehen davon klappt dann dieser Ansatz auch nicht mehr da die Zahlenkette hierdurch immer größer werden kann....Ansatz wäre Array

Verfasst: 06.08.2005 15:19
von Suche Hilfe

Code: Alles auswählen

$zahl='123456'; 
while ($i < strlen($zahl)-1) 
{ 
  echo ( $zahl{$i}+$zahl{strlen($zahl)-1} )."<br/>"; 
  $i++; 
} 
dieser code kommt schon näher dran. nur das es bei der nächsten schleife dieses strlen($zahl)-1} um 1 senkt. also beim nächstem durchgang -2 dann -3 usw.

Verfasst: 07.08.2005 02:32
von Blutgerinsel
Suche Hilfe hat geschrieben: dieser code kommt schon näher dran. nur das es bei der nächsten schleife dieses strlen($zahl)-1} um 1 senkt. also beim nächstem durchgang -2 dann -3 usw.
sicher?

strlen($zahl)-1 ist nur immer 5 in dem Beispiel weil es die 0 natürlich auch gibt und eben keine 6.....