Strcmp
Résolu/Fermé
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
-
20 mai 2008 à 18:42
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 - 22 mai 2008 à 21:45
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 - 22 mai 2008 à 21:45
6 réponses
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
20 mai 2008 à 18:43
20 mai 2008 à 18:43
en quel language ?
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
20 mai 2008 à 18:46
20 mai 2008 à 18:46
ah ouai excusez moi c en c
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
20 mai 2008 à 18:50
20 mai 2008 à 18:50
ben tu fais une boucle pour parcourir tes deux chaines et tu compare chaque caracteres s'il ne sont pas les meme tu dis a quel position il ne sont pas les meme grace a l'indice
ça donne ça a peu pres
ça donne ça a peu pres
for(i=0;i<taille;i++) if(chaine1[i]!=chaine2[i]) printf("le caractere %d n'est pas le meme dans les deux chaines\n",i+1);
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
20 mai 2008 à 19:05
20 mai 2008 à 19:05
ok l'idee est bonne mais c pas exactement ca
voila le code :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TAILLE 3
int main(int argc,char*argv[])
{
int i=0;
int j=0;
printf("Parametres d'entree : ");
printf("argc =%d\n\n",argc);
for (i=0;i<argc;i++)
{
printf("argv[%d]=%s\n",i,argv[i]);
}
printf("\n");
//recuperation du puzzle de depart//
char matrix1[TAILLE][TAILLE];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
matrix1[i][j]=argv[1][i*TAILLE+j];
}
}
//affichage du puzzle de depart//
printf("Puzzle de depart : \n\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%c ", matrix1[i][j]);
}
printf("\n");
}
//recuperation du puzzle d'arrivee//
char matrix2[TAILLE][TAILLE];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
matrix2[i][j]=argv[2][i*TAILLE+j];
}
}
//affichage du puzzle d'arrivee//
printf("Puzzle d'arrivee : \n\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%c ", matrix2[i][j]);
}
printf("\n");
}
printf("\n\n");
//comparaison des deux matrices//
for(i=0;i<3;i++)
{
for(j=0; j<3; j++)
{
if(matrix1[i][j]!=matrix2[i][j] && matrix1[i][j]!=' ')
printf("le caractere %d chaines\n",i*TAILLE+j);
}
}
printf("fin\n");
return 0;
}
on demarre avec mc []prog.exe "abcdefgh " "abcde fgh"
donc forcement il ya une erreur de position mais moi je voudrais kil reconnaisse une erreur du type :
mc []prog.exe "abcdefgh " "abcdM fgh" ou le "e" et le "M" ne sont pas pareils
voila le code :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TAILLE 3
int main(int argc,char*argv[])
{
int i=0;
int j=0;
printf("Parametres d'entree : ");
printf("argc =%d\n\n",argc);
for (i=0;i<argc;i++)
{
printf("argv[%d]=%s\n",i,argv[i]);
}
printf("\n");
//recuperation du puzzle de depart//
char matrix1[TAILLE][TAILLE];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
matrix1[i][j]=argv[1][i*TAILLE+j];
}
}
//affichage du puzzle de depart//
printf("Puzzle de depart : \n\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%c ", matrix1[i][j]);
}
printf("\n");
}
//recuperation du puzzle d'arrivee//
char matrix2[TAILLE][TAILLE];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
matrix2[i][j]=argv[2][i*TAILLE+j];
}
}
//affichage du puzzle d'arrivee//
printf("Puzzle d'arrivee : \n\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%c ", matrix2[i][j]);
}
printf("\n");
}
printf("\n\n");
//comparaison des deux matrices//
for(i=0;i<3;i++)
{
for(j=0; j<3; j++)
{
if(matrix1[i][j]!=matrix2[i][j] && matrix1[i][j]!=' ')
printf("le caractere %d chaines\n",i*TAILLE+j);
}
}
printf("fin\n");
return 0;
}
on demarre avec mc []prog.exe "abcdefgh " "abcde fgh"
donc forcement il ya une erreur de position mais moi je voudrais kil reconnaisse une erreur du type :
mc []prog.exe "abcdefgh " "abcdM fgh" ou le "e" et le "M" ne sont pas pareils
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
20 mai 2008 à 19:56
20 mai 2008 à 19:56
ok je vois ce que tu veux faire...
ce que tu peux faire c'est utiliser une matrice temporaire dans laquelle tu fais une concatenation des deux chaine et tu compare la matrice 1 avec la matrice temporaire
ça donne ça
ce que tu peux faire c'est utiliser une matrice temporaire dans laquelle tu fais une concatenation des deux chaine et tu compare la matrice 1 avec la matrice temporaire
ça donne ça
#include <stdlib.h> #include <stdio.h> #include <string.h> #define TAILLE 3 int main(int argc,char*argv[]) { int i=0; int j=0; printf("Parametres d'entree : "); printf("argc =%d\n\n",argc); for (i=0;i<argc;i++) { printf("argv[%d]=%s\n",i,argv[i]); } printf("\n"); //recuperation du puzzle de depart// char matrix1[TAILLE][TAILLE]; for (i=0;i<3;i++) { for (j=0;j<3;j++) { matrix1[i][j]=argv[1][i*TAILLE+j]; } } //affichage du puzzle de depart// printf("Puzzle de depart : \n\n"); for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%c ", matrix1[i][j]); } printf("\n"); } //recuperation du puzzle d'arrivee// char matrix2[TAILLE][TAILLE]; for (i=0;i<3;i++) { for (j=0;j<3;j++) { matrix2[i][j]=argv[2][i*TAILLE+j]; } } //affichage du puzzle d'arrivee// printf("Puzzle d'arrivee : \n\n"); for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%c ", matrix2[i][j]); } printf("\n"); } printf("\n\n"); char temp[TAILLE][TAILLE]; strcpy(*temp,argv[2]); strcat(*temp,argv[3]); //comparaison des deux matrices// for(i=0;i<3;i++) { for(j=0; j<3; j++) { if(matrix1[i][j]!=temp[i][j]) printf("le caractere %d chaines\n",(i*TAILLE+j)+1); } } printf("fin\n"); return 0; }
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
22 mai 2008 à 21:45
22 mai 2008 à 21:45
au final la meilleure solution est une comparaison caractere par caractere
a ce moment la le strcmp ne marche pas on compare directement avec la valeur ascii de l'espace (32) :
if (matrix1[k+1][l]==SP && k+1<3)
{
m=1;
direction='b';
}
avec SP=32
a ce moment la le strcmp ne marche pas on compare directement avec la valeur ascii de l'espace (32) :
if (matrix1[k+1][l]==SP && k+1<3)
{
m=1;
direction='b';
}
avec SP=32