Programmation

Fermé
emna - 19 avril 2009 à 19:32
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 avril 2009 à 00:05
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

4 réponses

Ghislain 2000 Messages postés 96 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 31 décembre 2011 18
19 avril 2009 à 19:40
bonjour,
tu peut me donner les sources ?
0
#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
Mehdi4.0 Messages postés 52 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 15 juin 2009 13
19 avril 2009 à 23:03
Salut
Il serait astucieux de créer un nouveau projet C dans visual studio, puis faire coller ton code dedans.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
20 avril 2009 à 00:05
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