Nouveau sujet Répondre Imprimer Syndication RSS 2.0

[Mod]Fsb Point

Volcan
Avatar de T@ncredo
  • Messages : 1177
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Juin 2005, 23:18

Reprise du dernier message

Ouais mais si tu fais ça :

[php]<?php

$nombre = 99999999999999999999999999999;
$nombre = (string)$nombre;

echo $nombre;

?>[/php]

ça te renvoit
1E+029.

Ce qu'il faudrait, c'est trouver le nombre maximal que php ne transforme pas avec eds puissances...


Enigma, site d'énigmes

http://www.elevage-enchante.com/bouton_88.gifJeu d'élevage virtuel de lapins
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14355
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Juin 2005, 23:51
Tu le gères toi même sinon, il te suffit de diviser un nombre dans un tableau d'entiers.

Par exemple dès que tu atteints la limite tu rajoutes une case a la fin.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de T@ncredo
  • Messages : 1177
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Juin 2005, 23:56
Citation (Genova)
Tu le gères toi même sinon, il te suffit de diviser un nombre dans un tableau d'entiers.

Par exemple dès que tu atteints la limite tu rajoutes une case a la fin.


Euhhhhh pas compris :$


Enigma, site d'énigmes

http://www.elevage-enchante.com/bouton_88.gifJeu d'élevage virtuel de lapins
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14355
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Juin 2005, 23:59
Admettons ta limite de variable c'est 10 tu peux pas dépasser ca dans la mémoire, pour parer ca tu peux faire :
$nb[0] = 5;
$nb[1] = 5;
et après tu te débrouilles pour afficher ca sous forme de chaine de caractère d'abord les dizines, puis centaines etc ... En faisant une adition.

Par exemple :
10 + 15 tu aditions 5 + 0, puis ta passes aux dizaines 1 + 1 ca te donnera comme affichage 25.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de T@ncredo
  • Messages : 1177
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 19 Juin 2005, 0:01
Citation (Genova)
Admettons ta limite de variable c'est 10 tu peux pas dépasser ca dans la mémoire, pour parer ca tu peux faire :
$nb[0] = 5;
$nb[1] = 5;
et après tu te débrouilles pour afficher ca sous forme de chaine de caractère d'abord les dizines, puis centaines etc ... En faisant une adition.

Par exemple :
10 + 15 tu aditions 5 + 0, puis ta passes aux dizaines 1 + 1 ca te donnera comme affichage 25.


Et bien ça va tout compliquer :P

Bonne chance Houram si tu te sens de faire ça :)


Enigma, site d'énigmes

http://www.elevage-enchante.com/bouton_88.gifJeu d'élevage virtuel de lapins
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5420
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 19 Juin 2005, 0:09
le mieuxx c'setd e faire disosnt come dans la vie relle tu à 10 billet de 5€ ca fait 5*10 € mais tu en à 5 au lieu de 50 pièce de 1€ ... etc
ou alros stocke dans des tableau un tableau de 10 un tableau de 100 etc, bref 2 million tu aurait 0 dasn totu els tableau et 2 dans celui des millions ....


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Equipe des MODS
Avatar de Houram
  • Age : 19 ans
  • Messages : 1243
  • Inscrit : 15 Juin 2005
  Lien vers ce message 19 Juin 2005, 1:39
Lol, vous croyez que je vais faire ça alors qu'il faudrait que les membres aient ((2^32) - 1) pour que ça bloque ?! :mdr:

Prise de tête... x)

De plus, ça ralentira le mod pour un cas qui ne risque d'arriver que dans 10 ans. Par contre, mettre une limite de point à ((2^32) - 1), c'est déjà plus à ma porter !

En tout cas, merci de m'avoir expliqué !

----------------------------------------------
Citation
SUGGESTION pour ton MOD : Faire en sorte qu'il soit facilement adaptable pour les futurs MODS magasin, rpg, etc


Heu... c'est à dire ? Pour le moment je le trouve assez adaptable, mais quesque je pourrais faire pour l'améliorer sur ce plan ?
 
Equipe des MODS
Avatar de Houram
  • Age : 19 ans
  • Messages : 1243
  • Inscrit : 15 Juin 2005
  Lien vers ce message 19 Juin 2005, 1:45
Mod mis à jour
Possibilité pour l'admin de choisir pour chaque forum si l'on gagne ou non des points.

Merci T@ncredo !
 
Equipe des MODS
Avatar de Fabogranqi
  • Age : 19 ans
  • Messages : 3074
  • Inscrit : 29 Décembre 2004
  Lien vers ce message 19 Juin 2005, 12:08
Tu as fait un salaire par message posté et par sujets posté.

Tu devrai faire un salaire par annonce posté.
 
Equipe des MODS
Avatar de Houram
  • Age : 19 ans
  • Messages : 1243
  • Inscrit : 15 Juin 2005
  Lien vers ce message 19 Juin 2005, 12:19
Merci de l'idée. Mais le problème, c'est que 90% du temp, ce sont les modos et les admin qui poste des annonces, et eux n'ont pas besoin de points ! Mais d'un autre coté, rien n'empèche l'admin de configurer pour gagner le même points qu'avez des messages !

Merci pour l'idée, je le ferai !
 
Equipe des MODS
Avatar de Houram
  • Age : 19 ans
  • Messages : 1243
  • Inscrit : 15 Juin 2005
  Lien vers ce message 19 Juin 2005, 12:20
Le mod évoluant très vite, je l'ai enlever du télechargement, je le remettrai dans deux ou trois jours, quand le mod aura bien évoluer !
 
VIP
Avatar de flash666
  • Messages : 2006
  • Inscrit : 01 Février 2005
  Lien vers ce message 19 Juin 2005, 19:12
il vaut utiliser un integer comme le dit genova il va de -2 147 483 648 à +2 147 483 647 c'est suffisant non?
si tu veux des nombres plus grand il y a des librairies php qui les traient comme BC ou GMP


ne remets pas à demain ce que tu peux faire faire aujourd'hui par un autre
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14355
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 19 Juin 2005, 19:44
Le problème des librairies c'est qu'il faut que le serveur l'ai d'installée ^^


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
VIP
Avatar de flash666
  • Messages : 2006
  • Inscrit : 01 Février 2005
  Lien vers ce message 19 Juin 2005, 19:50
oui pour sur, mais on peut s'inspirer du code si necessaire car souvent on a les sources


ne remets pas à demain ce que tu peux faire faire aujourd'hui par un autre
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14355
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 19 Juin 2005, 19:53
Ca me donne envie de faire une classe PHP qui gère les nombres infinis (je vais essayer pour voir ce que ca donne ^^)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14355
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 19 Juin 2005, 20:56
Voilà si ca t'interesse la classe (l'utilisation en bas du message) :
class Nb
{
	/*
	** Calcul le résultat d'une expression numérique en gérant les nombres infinis.
	** Attention le résultat est une chaine de caractère, ne pas convertir en (int) !
	*/
	function calcul($str)
	{
		$str = str_replace(array(' ', "\n", "\t"), array('', '', ''), $str);
		$str = str_replace(array('+-', '--'), array('-', '+'), $str);
		while (preg_match('/^([0-9]+)([\+\-\*\/%]+)([0-9]+)/si', $str, $match))
		{
			switch ($match[2])
			{
				case "+" :
					$result = $this->operation_add($match[1], $match[3]);
				break;

				case "-" :
					$result = $this->operation_sub($match[1], $match[3]);
				break;
			}
			$str = preg_replace('/^([0-9]+)([\+\-\*\/%]+)([0-9]+)/si', (string)$result, $str);
			$str = str_replace(array('+-', '--'), array('-', '+'), $str);
		}

		return ($str);
	}

	/*
	** Opération sur deux nombres
	*/
	function operation_add($nb1, $nb2)
	{
		$len1 = strlen($nb1);
		$len2 = strlen($nb2);
		$max = max($len1, $len2);
		$final = '';
		$retenu = 0;
		for ($i = 0; $i < $max; $i++)
		{
			$c1 = ($len1 - $i - 1 >= 0) ? $nb1{$len1 - $i - 1} : 0;
			$c2 = ($len2 - $i - 1 >= 0) ? $nb2{$len2 - $i - 1} : 0;
			$result = (string)($c1 + $c2 + $retenu);
			if (strlen($result) == 2)
			{
				$final = $result{1} . $final;
				$retenu = 1;
			}
			else
			{
				$final = $result{0} . $final;
				$retenu = 0;
			}
		}
		return ((($retenu == '1') ? '1' : '') . $final);
	}

	/*
	** Soustraction sur deux nombres
	*/
	function operation_sub($nb1, $nb2)
	{
		$len1 = strlen($nb1);
		$len2 = strlen($nb2);
		$max = max($len1, $len2);
		$final = '';
		$retenu = 0;
		$neg = FALSE;
		for ($i = 0; $i < $max; $i++)
		{
			$c1 = ($len1 - $i - 1 >= 0) ? $nb1{$len1 - $i - 1} : 0;
			$c1 = (string)($c1 - $retenu);
			$c2 = ($len2 - $i - 1 >= 0) ? $nb2{$len2 - $i - 1} : 0;
			if ($c1 >= $c2)
			{
				$retenu = 0;
				$result = (string)($c1 - $c2);
			}
			else
			{
				if ($i == $max - 1)
				{
					$neg = TRUE;
					$result = (string)abs($c1 - $c2);
				}
				else
				{
					$retenu = 1;
					$result = (string)(($c1 + 10) - $c2);
				}
			}
			$final = $result . $final;
		}
		return ((($neg) ? '-' : '') . $final);
	}
}


Pour l'utilisation :
[php]$nb = new Nb();
$result = $nb->calcul('99999999999999999999999999999999999999999+1');
echo $result;
// Affiche : 100000000000000000000000000000000000000000[/php]

Par contre pour le moment seuls les + et les - sont gérés (pas de parenthèse, ni de *, / et %).
A toi de voir si tu souhaites utiliser la classe mais bon autant gérer les nombres infinis ^^


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Répondre


.