Langage c mahboul

mimou -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

9 réponses

Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
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
mimou
 
merci phortitou
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
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
mimou
 
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   Statut Contributeur Dernière intervention   329 > mimou
 
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
mimou
 
slv donnez la solution correct
0
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
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
mimou
 
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   Statut Membre Dernière intervention   27
 
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
mimou
 
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   Statut Membre Dernière intervention   27
 
#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
mimou
 
merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
0
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
ça marche pas attend, j'ai fait une erreur!
0
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
#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   Statut Contributeur Dernière intervention   329
 
Et donc, juste par curiosité, quels sont les nombres concernés?

Cordialement,
0
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
Alors tu prends ce code, tu compiles... :P
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
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   Statut Membre Dernière intervention   4
 
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   Statut Contributeur Dernière intervention   1 846 > saly_inf Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   4 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846 > saly_inf Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   4
 
d'accord..merci pour tes repenses serieuses...et excuses mois autrefois.
@+..
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > saly_inf Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
Tu n'as pas à t'excuser ;)
0