Calcul d une somme en langage C [Fermé]

- - Dernière réponse : fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
- 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 ();
}
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
128
Date d'inscription
mardi 7 septembre 2010
Statut
Membre
Dernière intervention
12 janvier 2015
9
6
Merci
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 (); 
}

Dire « Merci » 6

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63108 internautes nous ont dit merci ce mois-ci

Fukstib
Messages postés
69
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
25 avril 2013
-
int res = 0;

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

Si tu initialises "res" à 0, il sera toujours nul. res = 0*k
newkiss
Messages postés
128
Date d'inscription
mardi 7 septembre 2010
Statut
Membre
Dernière intervention
12 janvier 2015
9 -
C'est pas faux. Autant pour moi
Fukstib
Messages postés
69
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
25 avril 2013
-
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.
Messages postés
69
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
25 avril 2013
0
Merci
#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));  
}  


Prend pour exemple n = 2 .
Tu appelles somme avec n = 2, donc dans somme ton k = 2.
Tu boucles s = 1 + puissance(2,p..?) p n'a pas de valeur déjà. Commence déjà par donner une valeur à p en fonction de ce que tu attends de cette variable.
tu oublier quelque important chose


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

int puissance ( int k,int p) ;
double somme ( int k);


main ()
{
int n;
double p;
printf (" donner un nombre ");
scanf("%d",&n);
p=somme(n);
printf (" la somme est %f ",p);
}

int puissance ( int k , int p)
{ int puis;
int i;
puis=1;
for (i=1;i<=p;i++)
{
puis=puis*k;
}
return puis;
}

double somme ( int k)
{ int p;

int s=1;
int i;
for (i=1;i<=k;i++)
s=s+puissance(k,p);
return s ;
}
fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1602 -
Non, il n'a rien oublié (la déclaration des prototypes n'est pas obligatoire...).
En revanche, ton code n'est pas standard... Donc aucune plus-value sur un sujet datant de 3 ans...
Messages postés
69
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
25 avril 2013
0
Merci
Pour répondre à la question initiale sans donner le code tout fait:

"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?? "

C'est à toi de décider si p est fixe ou non.
Ce qui est sûr c'est que ton K varie de 1 à n.

Somme des k^p, si p est fixe: 1^2 + 2^2 + 3^2 + 4^2 + 5 ^2
Somme des k^p, si p varie: il faut voir si il varie en même temps que k, ou si il varie une fois que k a pris toutes les valeurs entre 1 et n...

Le plus simple est effectivement que p soit fixe et que seul k varie.
Fukstib
Messages postés
69
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
25 avril 2013
-
Je poste la solution puisque le sujet devient calme:
#include <stdio.h>

int puissance ( int k,int p)
{
    int n, res= 1;
    for (n =1; n <= p; n++) res = res * k;
    return res;
}

double somme ( int p, int k)
{
    int i;
    double s;
    for (i=0; i<= k; i++) s=s+puissance (i,p);
    return s;
}


main ()
{
    int p,k;
    printf("Calcul de la somme des K^p avec K variant de 0 a n, et p fixe.\n\nDonnez la valeur de p= ");
    scanf("%d",&p);
    printf("\nDonnez la valeur du nombre (la somme ira de 0 a k)   :k= ");
    scanf ("%d", &k);
    printf ("\nCalcul...\n\nLa somme est %.0f ",somme (p,k));
}