Langage C (compilation)

Résolu/Fermé
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 - 2 déc. 2008 à 07:20
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 - 2 déc. 2008 à 12:40
Bonjour, j'ai fait un code sur un distributeur de monnaie et je l'ai finis hier soir par contre j'ai quelque petites erreurs que je n'arrive pas a corrigé. Je vous laisse mon code et les fautes que le compilateur m'indique. Merci par avance de votre aide.

#include<stdio.h>
#include<stdlib.h>

void init_stock(int *ptst10,int *ptst5,int *ptst2, int *ptst1,int *ptst05, int *ptst02,int *ptst01,int *ptst005);
void decomposer_en_un(int *ptr05,int *ptr02,int *ptr01,int *ptr005);
void decomposer_en_deux(int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005);
void decomposer_en_cinq(int *ptr2,int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005);
void decomposer_en_dix(int *ptr2,int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005);
void maj_stock(int mont,int r2,int r1,int r05,int r02,int r01,int r005,int *ptst10,int *ptst5,int *ptst2,int *ptst1,int *ptst05,int *ptst02,int *ptst01,int *ptst005);
void decomposer(float mont,int *ptr2,int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005);
int main(void)
{
        int st10,st5,st2,st1,st05,st02,st01,st005; /*les coupures en stock*/
        int r2,r1,r05,r02,r01,r005; /*les pieces rendues*/
        int montant; /*la coupure introduite dans la machine*/
        char rep[2]; /*réponse à la question "Autre client (O/N) ?"*/
        init_stock(&st10,&st5,&st2,&st1,&st05,&st02,&st01,&st005);
        do{
                printf("\nSaisir le montant de la pièce ou du billet");
                scanf("%d",&montant);
                while(montant != 10 && montant != 5 && montant != 2 && montant != 1){
                        printf("\nMontant saisie invalide, ressaisir");
                        scanf("%d",&montant);
                }
                r2 = r1 = r05 = r02 = r01 =r005 = 0;
                decomposer(montant,&r2,&r1,&r05,&r02,&r01,&r005);
                maj_stock(montant,r2,r1,r05,r02,r01,r005,&st10,&st5,&st2,&st1,&st05,&st02,&st01,&st005);
                printf("\nAutre client (O/N) ?");
                scanf("%s",rep);
        while(rep[0] != 'n');
        return EXIT_SUCCESS;
}

void init_stock(int *ptst10,int *ptst5,int *ptst2, int *ptst1,int *ptst05, int *ptst02,int *ptst01,int *ptst005)
{
        *ptst10 = *ptst5 = 0;
        *ptst2 = *ptst1 = 20;
        *ptst05 = *ptst02 = 30;
        *ptst01 = *ptst005 = 50;
}

void decomposer_en_un(int *ptr05,int *ptr02,int *ptr01,int *ptr005)
{
        *ptr05 = *ptr02 =  1;
        *ptr01 = *ptr005 = 2;
}


void decomposer_en_deux(int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005)
{
        decomposer_en_un(ptr05,ptr02,ptr01,ptr005);
        *ptr1 = 1;
}


void decomposer_en_cinq(int *ptr2,int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005)
{
        decomposer_en_deux(ptr1,ptr05,ptr02,ptr01,ptr005);
        *ptr2 = 1;
        *ptr1++;
}


void decomposer_en_dix(int *ptr2,int *ptr1,int *ptr05,int *ptr02,int *ptr01,int *ptr005)
{
        decomposer_en_cinq(ptr2,ptr1,ptr05,ptr02,ptr01,ptr005);
        *ptr2+=2;
         *ptr1++;
{


void maj_stock(int mont,int r2,int r1,int r05,int r02,int r01,int r005,int *ptst10,int *ptst5,int *ptst2,int *ptst1,int *ptst05,int *ptst02,int *ptst01,int *ptst005)
{
        if(*ptst2 >= r2 && *ptst1 >= r1 && *ptst05 >= r05 && *ptst02 >= r02 && *ptst01 >= r01 && *ptst005 >= r005){
                *ptst2-=r2;
                *ptst1-=r1;
                *ptst05-=r05;
                *ptst02-=r02;
                *ptst01-=r01;
                *ptst005-=r005;
                switch(mont){
                        case 10:
                                *ptst10++;
                        break;
                        case 5:
                                *ptst5++;
                        break;
                        case 2:
                                *ptst2++;
                        break;
                        case 1:
                                *ptst1++;
                        break;
        else
                printf("\nLe stock est insuffissant");
        }
        }
}


Voici mes fautes :

Dans la fonction «main» :
distributeur_monnaie.c:35: erreur: expected «while» before «void»
distributeur_monnaie.c: Dans la fonction «maj_stock» :
distributeur_monnaie.c:95: erreur: expected expression before «else»
distributeur_monnaie.c: Dans la fonction «decomposer_en_dix» :
distributeur_monnaie.c:112: erreur: expected declaration or statement at end of input
distributeur_monnaie.c:112: erreur: expected declaration or statement at end of input
distributeur_monnaie.c: Dans la fonction «main» :
distributeur_monnaie.c:112: erreur: expected declaration or statement at end of input

2 réponses

rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 2
2 déc. 2008 à 12:40
Merci bien pour ton aide !!!
3
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
2 déc. 2008 à 08:56
Salut !
Tu as plein d'erreurs d'accolades en fait dans ton code.
une dans le main, tu ne ferme pas le do{...}while
une dans decomposition en dix, ou tu rouvre une accolade au lieu de la fermé, et une dans maj_stock le else est inclus dan le switch et le if alors qu'il devrais être dehors.
0