Langage c mahboul

Fermé
mimou - 8 nov. 2008 à 11:10
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 nov. 2008 à 21:33
bonjour tot le monde svp aidez moi pou resoudre ce exercice:ecrire un programma qui permet d'afficher les nombres cubes inferieur a1000.un nbr cube est un nbr dont la somme de cube de ses chifres egale a se nombre .
exemple:153=1^3+5^3+3^3
langage c.merci en avance

9 réponses

Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 11:19
Tu dois entrer le nombre pour savoir si c'est un nombre cube? Ou bien tu dois essayer de trouver tous les nombres cube inférieurs à 1000?
Dans le premier cas, tu récupère les 3 chiffres du nombre dans 3 variables différentes et tu crées une 4e variable pour contenir le nombre en entier. Ensuite tu fait ton calcul (a*a*a + b*b*b + c*c*c) et une bête condition pour savoir si c'est égal au nombre en entier (tu vois ce que je veux dire?)
Dans le 2e cas, tu crées 4 variables et une boucle. A la fin de chaque boucle tu incrémentes 2 variables, celle qui contient le nombre en entier et celle qui contient les unités, sauf si celle contenant les unités dépasse 9, dans ce cas tu remets les unités à 0 et tu incrémentes la variable des dizaines, sauf si elle dépasse 9, dans ce cas tu fais pareil, mais avec les centaines.
Je sais pas si j'ai été clair. Je sais pas si tu fais ça pour tes cours ou pour le plaisir, mais si tu fais ça pour tes cours, c'est mieux qu'on fasse pas le code pour toi.
J'ai plus fait de C depuis longtemps, il existe surement une méthode plus simple, mais si jamais tu as encore des questions, tu peux me contacter, mais c'est à tes risques et périls!
1
merci phortitou
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
8 nov. 2008 à 11:15
Salut Mimou,
Ce n'est pas très compliqué, il suffit d'écrire une boucle de 0 à 1000 dans laquelle tu vas faire un calcul :
- calculer la somme des cubes de tous les digits
- une fois cette somme calculée, tu la compares avec la valeur de l'itérateur, si c'est égal tu affiche l'itérateur

Bon courage pour l'implémentation,
0
merci marco
voila mn solution
.....
for (nbc=i,nbc<1000,nbc++)
if(nbc=pow(nbrchifre,3).................
c vrai ou non
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328 > mimou
8 nov. 2008 à 11:56
Non mimou, ce n'est pas bon.
Déjà il faut que tu te replonges dans la syntaxe du C, sinon ça ne fonctionnera jamais:
- la comparaison c'est == et non =
- dans le for, les séparateurs sont des ; et non des ,
- ...

Ensuite, ce n'est pas le nombre au cube qu'il faut calculer, mais la somme de tous ses digits.
Pour réaliser ceci, je pense que le plus simple c'est d'utiliser sprintf() pour stocker tous les chiffres composant ton nombre dans des variable, et d'itérer sur ces variables pour les élever à la puissance 3 et les sommer.
0
slv donnez la solution correct
0
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 11:41
Je vois pas trop ce que tu veux faire avec ce code. Tu peux détailler un peu?
Si t'es en ligne mnt et que t'as msn: claquettes@hotmail.com
0
c pas mn msn et j'ai un probleme d mn msn svt tu peut me ecrire la solution
0
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 11:49
Okay, je vais essayer de faire ça. Faut juste que tu me précises quelques trucs. Tu veux que l'utilisateur entre un nombre à vérifier? Ou tu veux trouver tous les nombres cube jusqu'à mille? Et me faut ton mail!
0
merci je veux trouver tous les nbrs cube jusqu'à mille.j'attends ta réponse .tu peut m'envoyer votre e mail???????????????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 12:10
#include <stdio.h>
#include <stdlib.h>

int main() {
    long unite;
    long dizaine;
    long centaine;
    long i = 100;

    printf("Les nombres:\n");

    while(i < 1000) {
        centaine = i/100;
        dizaine = i/10 - centaine;
        unite = i - (centaine + dizaine);
        if(i == (unite*unite*unite + dizaine*dizaine*dizaine + centaine*centaine*centaine)) {
            printf("%ld\n", i);
        }
        i++;
    }


    printf("Sont des nombres cubes!");
    return 0;

}


Essaie ça
0
merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
0
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 12:22
ça marche pas attend, j'ai fait une erreur!
0
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 12:29
#include <stdio.h>
#include <stdlib.h>

int main() {

    printf("Les nombres:\n");
    long centaine;
    long dizaine;
    long unite;

    for(centaine = 1; centaine < 10; centaine++) {
        for(dizaine = 0; dizaine < 10; dizaine++) {
            for(unite = 0; unite < 10; unite++) {
                if(((centaine*100) + (dizaine*10) + unite) == ((centaine*centaine*centaine) + (dizaine*dizaine*dizaine) + (unite*unite*unite))) {
                    printf("%ld%ld%ld\n", centaine, dizaine, unite);
                }
            }
        }
    }


    printf("Sont des nombres cubes!");
    return 0;

}


VOILA CE CODE MARCHE!!!!
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
8 nov. 2008 à 12:34
Et donc, juste par curiosité, quels sont les nombres concernés?

Cordialement,
0
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 27
8 nov. 2008 à 13:06
Alors tu prends ce code, tu compiles... :P
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
8 nov. 2008 à 13:09
C'était justement pour éviter de faire ça que je posais la question :D

Cordialement
0
saly_inf Messages postés 44 Date d'inscription lundi 13 octobre 2008 Statut Membre Dernière intervention 29 décembre 2008 4
8 nov. 2008 à 13:17
salut..
ce pgm peut rependre à ta queqtion
#include <stdio.h>
#include <stdlib.h>
#include <CONIO.H>
#include<iostream.H>
#include<MATH.H>
#include<COMPLEX.H>
int main()
{ clrscr();
    long unite;
    long dizaine;
    long centaine;
    long i = 100;

    printf("Les nombres:\n");

  while(i < 1000)
     {
	centaine = div(i,100).quot;
	dizaine = div((i- centaine*100),10).quot;
	unite = i-(centaine*100)-(dizaine*10);
      if(i == pow(unite,3) +pow(dizaine,3) +pow(centaine,3))
	{
	    printf("%ld\n", i);
	}
	i++;
    }
    printf("Sont des nombres cubes!");
    getch();

}

j'ai essayé et c bon
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > saly_inf Messages postés 44 Date d'inscription lundi 13 octobre 2008 Statut Membre Dernière intervention 29 décembre 2008
8 nov. 2008 à 13:30
Ce n'est pas conseillé de mélanger les bibliothèques du C avec ceux du C++ (stdio avec iostream, surtout quand on s'en sert pas). Attention, à ne pas mettre de majuscules aux noms des bibliothèques. Ton code n'est pas du tout portable.
Voici un code portable, et bien plus léger :
#include <stdio.h>

int main(void){
    for(int i=0;i<10;i++)
        for(int j=0;j<10;j++)
            for(int k=0;k<10;k++)
                if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
                    printf("%d%d%d\n",i,j,k);
    return 0;
}

Cdlt
0
saly_inf Messages postés 44 Date d'inscription lundi 13 octobre 2008 Statut Membre Dernière intervention 29 décembre 2008 4 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
8 nov. 2008 à 13:53
salut fiddy
c vraiment portable , aussi une solution trés intéligente de ta part et j'ai vu que c pas la première fois ...
ta sol est meilleure que la mienne...concernant les biblio je ne comprend pas grande chose
@+..
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > saly_inf Messages postés 44 Date d'inscription lundi 13 octobre 2008 Statut Membre Dernière intervention 29 décembre 2008
8 nov. 2008 à 14:09
Ce que je voulais dire par "non portable", c'est que tu utilises une bibliothèque conio.h qui ne fait pas partie du C standard. De plus iostream.h, c'est plutôt du C++ (cout, cin et cie).
Mais, bon tant que ça marche, c'est le principal ;)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
8 nov. 2008 à 21:24
Je ne parlais pas de plate-formes mais des fonctions des bibliothèques.
Par exemple, stdlib va contenir tout ce qui est allocation, etc.
0
saly_inf Messages postés 44 Date d'inscription lundi 13 octobre 2008 Statut Membre Dernière intervention 29 décembre 2008 4
8 nov. 2008 à 21:31
d'accord..merci pour tes repenses serieuses...et excuses mois autrefois.
@+..
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > saly_inf Messages postés 44 Date d'inscription lundi 13 octobre 2008 Statut Membre Dernière intervention 29 décembre 2008
8 nov. 2008 à 21:33
Tu n'as pas à t'excuser ;)
0