Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/08/2007, 21h34   #1
Futur Membre du Club
 
Inscription : juin 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 61
Points : 15
Points : 15
Envoyer un message via MSN à hm1ch
Par défaut Somme de puissances

Bonsoir à tous,

et merci d'avance pour votre aide.

Je vous explique mon problème :
J'ai quatre nombres :
_ $min
_ $max (qui doit être supérieur ou égal à $min)
_ $nbr (un nombre positif non nul)
_ $result (un autre nombre)

Je voudrais afficher la somme telle que :
Code :
1
2
 
$nbr^$min + $nbr^($min+1) + $nbr^($min+2) + $nbr^($min+3) + ... + $nbr^($max) = $result
J'arrive à afficher la somme (afficher) mais c'est pas la meilleure des solutions je pense :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
 
$min = 1;
$max = 7;
$nbr = 10;
 
echo $min . ' - ' . $max . '<br/>';
 
$i = $min;
for ($i = $min; $i <= $max - 1; $i++)
{
		echo $nbr . "^" . $i . " + ";
}
echo $nbr . "^" . $max . " = ";
 
?>
Je me permets donc de soliciter votre aide pour m'aider à trouver une meilleure solution pour afficher et calculer cette somme de puissances.

Vaut-il mieux faire la somme membre par membre avec l'opérateur + ou avec la fonction bcadd() ?

Quoi qu'il en soit merci d'avance pour votre aide.
__________________
Le savoir appartient à tous ...
hm1ch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 22h51   #2
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut autre boucle

Afin d'économiser la définition d'une variable supplémentaire, j'aurais plutôt tendance à utiliser une boule while. Je n'ai pas testé le code ci-dessous n'étant pas sur mon ordinateur et je pense qu'il est fonctionnel.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$min = 1;
$max = 7;
$nbr = 10;
 
echo $min . ' - ' . $max . '<br/>';
 
while($min < $max)
{
    echo $nbr . "^" . $min . " + ";
    $min++;
}
echo $nbr . "^" . $max . " = ";
 
?>
Moins tu définis de variables et plus tu gagnes en temps d'exécution du script. Tu peux tester avec XDebug en faisant une écriture automatique dans un fichier .trace
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 23h04   #3
Futur Membre du Club
 
Inscription : juin 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 61
Points : 15
Points : 15
Envoyer un message via MSN à hm1ch
Tout d'abord merci pour ton aide.
Le code fonctionne mais le problème de la boucle while est de pouvoir récupérer chaque membre pour en faire ensuite la somme :s
__________________
Le savoir appartient à tous ...
hm1ch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 23h10   #4
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut tu fais ça où?

Je ne vois pas où tu récupères chaque membre dans ton script ni même où tu affiches la somme. Là, il y a des informations que je ne peux pas deviner si tu ne les exprimes pas clairement.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 23h25   #5
Futur Membre du Club
 
Inscription : juin 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 61
Points : 15
Points : 15
Envoyer un message via MSN à hm1ch
Je souhaite résoudre l'équation affichée. Dans l'exemple précédent il s'agit de :
10^1 + 10^2 + 10^3 + 10^4 + 10^5 + 10^6 + 10^7 =
__________________
Le savoir appartient à tous ...
hm1ch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 23h37   #6
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut dans la boucle et au final

Si je reprends le code que j'ai posté avant cela devient:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$min = 1;
$max = 7;
$nbr = 10;
 
echo $min . ' - ' . $max . '<br/>';
 
$sum = 0;
while($min < $max)
{
    echo $nbr . "^" . $min . " + ";
    $sum += pow($nbr, $min);
    $min++;
}
$sum += pow($nbr, $max);
 
echo $nbr . "^" . $max . " = ". $sum;
 
?>
Je rappelle que n'étant pas sur mon ordi, je ne peux pas tester le code, je le fais mentalement. En principe, cela devrait fonctionner, merci de confirmer.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 23h49   #7
Futur Membre du Club
 
Inscription : juin 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 61
Points : 15
Points : 15
Envoyer un message via MSN à hm1ch
Eh bien (une fois de plus, je sais) merci à toi.
Bon mental et bonne soirée à toi/vous.
__________________
Le savoir appartient à tous ...
hm1ch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h41.


 
 
 
 
Partenaires

Hébergement Web