Calcul d une somme en langage C

Fermé
Fadia - 26 oct. 2011 à 13:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 déc. 2014 à 12:02
Bonjour,


je voudrais s'il vous plait calculer cette somme: la Somme des K^p ( n>=0 et p>=0) de k=1 à k=n
ce que je veux savoir , est ce que p est fixe??
#include <stdio.h>
#include <conio.h>
int puissance ( int k,int p)
{
if (p>0)
return k*puissance (k,p-1);
else return 1;
}
double somme ( int k)
{ int p,s=1,i;
for (i=1;i<=p;i++)
{ s=s+puissance (k,p);
}
}
main ()

{
int n;
printf (" donner un nombre ");
scanf("%d",&n);
printf (" la somme est %.0f ",somme (n));
getch ();
}

3 réponses

newkiss Messages postés 127 Date d'inscription mardi 7 septembre 2010 Statut Membre Dernière intervention 12 janvier 2015 13
26 oct. 2011 à 13:39
A tout hazard car je n'ai pas de compilateur C sous la main.

#include <stdio.h> 
#include <conio.h> 

int puissance ( int k,int p) 
{
int i;
int res = 0;

for (i=1;i<=p;i++){  res = res * k;}
return res; 
} 

double somme ( int n, int p) 
{ 
 int s=0;
 int k;
 for (k=1;k<=n;k++) { s=s+puissance(k,p));} 
} 
main () 

{ 
int n;
int p; 
printf (" donner un nombre "); 
scanf("%d",&n);
printf (" donner une puissance"); 
scanf("%d",&p);  
printf (" la somme est %.0f ",somme (n,p)); 
getch (); 
}

8
Fukstib Messages postés 67 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 25 avril 2013 1
26 oct. 2011 à 13:47
int res = 0;

for (i=1;i<=p;i++){ res = res * k;}

Si tu initialises "res" à 0, il sera toujours nul. res = 0*k
0
newkiss Messages postés 127 Date d'inscription mardi 7 septembre 2010 Statut Membre Dernière intervention 12 janvier 2015 13
26 oct. 2011 à 13:48
C'est pas faux. Autant pour moi
0
Fukstib Messages postés 67 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 25 avril 2013 1
26 oct. 2011 à 14:53
printf (" la somme est %.0f ",somme (n,p));

Le problème est qu'il n'y a pas de return dans la fonction somme.
Il faudrait mettre un return "s", sinon la valeur de "somme (n,p)" sera toujours la même..

PS: j'ai mis en gras une parenthèse en trop qu'il faut aussi enlever.
0