CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

besoin d'un algorithme

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
sans_remissions
sans_remissions
Niveau 11
11 octobre 2008 à 17:22:44

bonjour j'ai un leger probleme sur un énoncé pour les cours, j'ai besoin d'un algorithme qui permet de calculer x^y (tous 2 des entiers naturels) avec seulement l'opération "addition"...
merci si vous avez une petite idée (pas de tableau svp, juste avec une ou plusieures boucles...)

LGV
LGV
Niveau 28
11 octobre 2008 à 17:49:07

Propose ta solution, pour avoir des commentaires sur tes erreurs; personne ne fera ton exercice a ta place.

sans_remissions
sans_remissions
Niveau 11
11 octobre 2008 à 18:07:52

ok j'ai deja essayé mon prog C que je vais vous exposer mais il ne fonctionne pas, ya des erreurs...

/* Calcul de puissance avec addition */

  1. include <stdio.h>
  2. include <stdbool.h>

int main(void)

{

/* VARIABLES */

/* Non Initialisées */

int x;
int y;
int i;
int p;

/* DEBUT DES INSTRUCTIONS
Saisie des valeurs aupres de l'utilisateur avec boucle si les nombres ne sont pas entiers-positifs*/

do
{
printf("\n Entrez un nombre entier = ");
scanf("%d",&x);

printf("\n Entrez une puissance entiere : ");
scanf("%d",&y);

}
while(x<=0 || y<=0);

if (x<=0 || y<=0)
printf("\n Ce n'est pas un entier positif");

/* Boucle de calcul */

for(i=0;i<y;i++)
{
p=x^y-1)+x^(y-1);
}

printf("\n resultat : %d ",p);

/* Fin du programme */

system("PAUSE");
return (0);

__________________________________________________
__

erreurs : system("PAUSE"); >>> system undeclared (pourtant ca marche sur d'autres prog !!! )

dnob700
dnob700
Niveau 10
11 octobre 2008 à 18:16:14

tu dois inclure "stdlib.h" je crois pour la fonction system. Mais ça n'a rien à voir avec le problème de ton algorithme.

x^y n'est pas égale à x^(y-1)*2 mais à (x^(y-1))^2 donc ton algo est faux (il faut en plus faire une boucle pour la multiplication si tu n'a le droit qu'à l'addition comme opération. Mais aussi, comme tu veux écrire ton programme de manière récursive, il ne faut pas écrire x^(y-1) mais puissance(x,y-1) ou puissance est ta fonction qui calcule de manière récursive l'exponentiation uniquement à l'aide de l'addition.

Même si tu n'en a pas besoin, fait attention qu'en C, l'opérateur '^' réalise un ou exclusif bit à bit et non pas une exponentiation (pour ça il te faut la fonction pow défini dans math.h).

sans_remissions
sans_remissions
Niveau 11
11 octobre 2008 à 22:23:53

ok oui pour le calcul c'est faux je m'en était rendu compte.

merci beaucoup pour ces informations^^
il me reste plus qu'a trouver le bon calcul :)

sans_remissions
sans_remissions
Niveau 11
12 octobre 2008 à 17:09:14

please help meeee

Legendsnake
Legendsnake
Niveau 10
12 octobre 2008 à 19:30:44

mais dnob t'a bien répondu :ok:
utilise #include <math.h>
et les opérateurs qu'il t'a donné

dnob700
dnob700
Niveau 10
12 octobre 2008 à 23:28:37

a^b = a*a*...*a (b fois)
et c*d = c+c+...+c (d fois).

En mettant bout à bout ces deux formules d'école primaire, tu peut faire le calcul de ton exponentiation juste avec des additions. Il ne te reste plus qu'à trouver où mettre des boucles comme il faut.

On remarquera qu'en utilisant une méthode diviser pour régner, pour les deux calculs, on peut le faire de manière plus efficace.

Trooper04
Trooper04
Niveau 29
13 octobre 2008 à 11:16:32

int x, y;
int i, j;
int res, m;

// init x, y et vérif

res = x;

for (i=0, i<y-1, i++){
__m=res
__for (j=0 , j<x-1, j++)
____res=res+m;
}

return res;

C'est de l'itératif bien dégueu :ok:
PS: j'ai pas testé...

sans_remissions
sans_remissions
Niveau 11
13 octobre 2008 à 19:53:59

le probleme c avec le return res sous windows ca degage ma fenetre^^

sans_remissions
sans_remissions
Niveau 11
13 octobre 2008 à 19:55:46

et si on l'enleve les resultats sont.... completelment extarvagants !

Trooper04
Trooper04
Niveau 29
13 octobre 2008 à 20:06:35

Adapte le à ton prog, tu veux pas que je t'envoie un .c non plus...
Tu dois ajouter les inits, les cas particuliers et le contrôle des données.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware