Table de multiplication

Discutez d'informatique ici !
samirou
Membre Relatif
Messages: 166
Enregistré le: 06 Fév 2012, 22:55

table de multiplication

par samirou » 15 Juil 2014, 21:35

Bonsoir,
je voudrais savoir est ce que mon programme est parfait. Merci d'avance

Ecrire un programme en C appelé Table qui permet d'afficher la table de multiplication d'un nombre entier supérieur ou égal à 1 donné par l'utilisateur.
L'utilisateur doit pouvoir recommencer plusieurs fois s'il le désire.


# include < stdio.h >
int main( )
{
int a, n , i , rep;
rep ='0';
while (rep == '0')
{
printf( " Donnez un entier dont vous voulez afficher la table " ) ;
scanf( "%d" , &a ) ;
for ( i = 1 ; i <= n ; i = i + 1 )
n = a * i
printf( " voulez vous afficher la table de multiplication d'un autre nombre O/N " ) ;
scanf( "%c" , &reponse ) ;
fflush (stdin);
rep = getchar ();
{
fflush (stdin);
getchar ()
return 0;
{



Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 15 Juil 2014, 21:48

Bonsoir

Code: Tout sélectionner
je voudrais savoir est ce que mon programme est parfait




euh...non, j'ai pas regardé le code, mais un code parfait ça ,'existe pas d'après moi --'


Surtout que présenter comme tu nous le présentes on ne peut rien dire, essais au moins d'utiliser la balise code !
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 15 Juil 2014, 22:32

La dernière accolade suffit pour dire que le code n'est pas parfait ^^

Pk ne pas mettre un bool dans le while ?

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 15 Juil 2014, 22:41

pourquoi utiliser une variable non déclarée aussi tant qu'à faire x)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

samirou
Membre Relatif
Messages: 166
Enregistré le: 06 Fév 2012, 22:55

par samirou » 15 Juil 2014, 23:11

Pour l'accolade je me suis trompé mais je voudrais mettre une accolade fermée.

pourquoi utiliser une variable non déclarée aussi tant qu'à faire x): je ne comprends pas ce que vous voulez dire.

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 15 Juil 2014, 23:11

Code: Tout sélectionner
int read_value();             //
void afficher_table(int);     // A programmer
bool read_stop();             //

int main() {
    do {
        afficher_table(read_value());
    } while (read_stop());
 
    return EXIT_SUCCESS;
}

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 15 Juil 2014, 23:27

Je veux dire que tu ne déclare pas reponse et tu te sers de reponse donc rien que ça, ça ne devrait pas passer au compilo.

As tu testé ? Si non fais le, c'est le compilo qui te fera apprendre de tes erreurs
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 16 Juil 2014, 22:26

samirou a écrit:
Code: Tout sélectionner
# include 
int main( )
{
    int a, n , i , rep;
    rep ='0';
    while (rep == '0')
    {
        printf( " Donnez un entier dont vous voulez afficher la table " ) ;
        scanf( "%d" , &a ) ;
        for ( i = 1 ; i <= n ; i = i + 1 )
            n = a * i

        printf( " voulez vous afficher la table de multiplication d'un autre nombre O/N " ) ;
        scanf( "%c" , &reponse ) ;
        fflush (stdin);
        rep = getchar ();
    }
    fflush (stdin);
    getchar ()
    return 0;
}

Que dire, c'est du grand n'importe quoi !

Tu n'affiches jamais la table de multiplication, le calcul de n n'est pas un affichage.
Dans ta boucle for, tu fais un premier test avec un non initialisé, donc ça peut passer comme ne pas passer, ensuite, tu affectes à n le produit de a par i, donc si a est plus grand que 1, le test sera toujours vrai et tu boucleras jusqu'à ce que n devienne négatif par effet de limitation numérique des ordis.
Tu poses une question, tu lis la réponse avec scanf, la saisie est mémorisée dans reponse, mais ensuite tu lis un caractère que tu mémorises dans rep, après avoir fait un fflsuh(stdin) ce qui est une aberration car fflush(stdin) n'est pas défini dans la norme C, le comportement est indéfini, en général il ne fait rien, mais il peut faire planter ton programme. Après un scanf, il faut explicitement vider le buffer clavier, fouille dans la discussion "Langage C", on en a parlé.
Encore beucoup de travail, et d'abord écrire un algo à la main, le tester et ensuite le transcrire en C !

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 16 Juil 2014, 23:00

Le passage int a, n , i , rep; est là pour déclarer les arguments , dans ce cas là , ce sont bien des nombres .
Déjà ta condition while ne fait pas le boulot demandé *.* , bref , c'est un peu le fouillis ...

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite