Programmation

Bonjour,
J'ai un gros problème. Mon programme marche parfaitement sur code blocks mais il ne marche pas sur visual C . Je ne sais pas ce que je dois faire car je dois utiliser le visual C pour utiliser le principe du dialogue du client serveur !
Merci pour votre aide
Configuration: Windows XP
Firefox 3.0.8

4 réponses

  1. Contributeur
    Salut,
    Déjà ton code n'est pas portable.
    #include <conio.h> //si possible, à éviter car non header iso.
    A la place des getch, tu peux utiliser getchar().

    fflush(stdin); ne marche pas. Il faut utiliser : int c; while((c=getchar())!='\n' && c!=EOF);
    L'en-tête du main sans argument est le suivant : int main(void).
    Et il ne faut pas oublier de mettre : return 0; à la fin pour signaler que le programme s'est déroulé avec succès.
    Cdlt
    1. Salut
      Il serait astucieux de créer un nouveau projet C dans visual studio, puis faire coller ton code dedans.
      1. #include <stdio.h>
        #include <conio.h>
        #include <stdlib.h>

        void saisie (int *tab,int n)
        {int i;

        for (i=0;i<n;i++)
        {printf ("tab[%d]=\n",i);
        scanf ("%d",&tab[i]);
        }}

        void decalage (int t1[],int tab)
        {int i;
        for (i=0;i<4;i++)
        t1[i]=t1[i+1];
        t1[4]=tab;
        }

        void emission (int tab[], int n,int *t)
        {
        int t1[6];
        int i,j,k;
        int g[]={1,0,0,1,1};
        for (i=0;i<n;i++)
        t[i]=tab[i];

        for (j=0;j<5;j++)
        t1[j]=t[j];
        for (j=0; j<5;j++)
        {t1[j]=t1[j]^g[j];
        printf ("t1[%d]=%d",j,t1[j]);}
        i=5;
        while (i<(n+4))
        {
        if (t1[0]==0) decalage (t1,t[i]);
        if (t1[0]==1) {
        for (j=0;j<5;j++){
        t1[j]=t1[j]^g[j];
        printf ("\n\n t1[%d]=%d\n",j,t1[j]);
        }
        }
        i++;
        }
        if (t1[0]==1){
        for (j=0;j<5;j++)
        t1[j]=t1[j]^g[j];
        }
        for (k=1;k<5;k++)
        t[n+k-1]=t1[k];
        printf ("données envoyées :\n");
        for (j=0;j<(n+4);j++)
        printf ("t[%d] =%d\n",j,t[j]);

        }

        void errone (int *tab, int x,int n)
        { int i;
        if (tab[x]!=1)
        tab[x]=1;
        else
        {if (tab[x]!=0)
        tab[x]=0;
        }
        printf ("\n\n\n**********ERRONE*************\n\n\n");
        for ( i=0;i<n+4;i++)
        printf ("tab[%d]= %d\n",i, tab[i]);
        }

        void reception (int *t, int n )
        {int g[]={1,0,0,1,1};
        int i,j, erreur=0;
        int tab[6];

        for (j=0;j<5;j++)
        {tab[j]=t[j];
        tab[j]=tab[j]^g[j];
        }

        i=5;
        while (i<(n+4))
        {if (tab[0]==0) decalage (tab, t[i]);
        if (tab[0]==1) {
        for (j=0;j<5;j++)
        tab[j]=tab[j]^g[j];

        }
        i++;}
        for (j=0; j<5;j++)
        if (tab[j]==1) erreur=1;
        if (erreur==0) printf ("la sequence recue est juste");
        if (erreur==1) printf ("la sequence recue est fausse");
        }

        main()
        {int *tab,n,i,x;
        int *t;
        char *buffer, ch[2];
        char rep, r;

        t=(int*)malloc((n+4)*sizeof(int)) ;
        t[n]=0;
        t[n+1]=0;
        t[n+2]=0;
        t[n+3]=0;

        printf ("donnez la taille de la suite binaire\n");
        scanf ("%d",&n) ;
        tab=(int*)malloc(n*sizeof(int));
        saisie (tab,n);
        for (i=0;i<n;i++)
        printf("tab[%d]=%d \n",i, tab[i]);
        emission (tab, n,t);

        do
        {
        printf ("souhaitez vous envoyer la sequence erronee? (O/N) \n ");
        fflush (stdin);
        scanf ("%c",&rep);
        }
        while (rep!='O'&&rep!='o'&&rep!='n'&&rep!='N');

        if (rep=='O'||rep=='o') {
        do{
        do{
        printf ("quel bit souhaitez vous changer");
        scanf ("%d", &x);
        errone(t,x,n);
        }
        while (x>n+3||x<0);
        printf ("voulez vous changer un autre bit? (O/N)\n");
        fflush(stdin);
        scanf ("%c",&r);}
        while (r=='O'||r=='o');

        }

        buffer=(char*)malloc((n+5)*sizeof(char)) ;
        for (i=0;i<n+4;i++)
        {sprintf (ch, "%d",t[i]);
        buffer[i]=ch[0];
        }
        buffer[n+4]='\0';

        printf ("buffer= %s", buffer);
        reception(t,n);
        getch();
        }