Programmation

emna -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Ghislain 2000 Messages postés 112 Statut Membre 18
     
    bonjour,
    tu peut me donner les sources ?
    0
  2. emna
     
    #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();
    }
    0
  3. Mehdi4.0 Messages postés 54 Date d'inscription   Statut Membre 13
     
    Salut
    Il serait astucieux de créer un nouveau projet C dans visual studio, puis faire coller ton code dedans.
    0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    0