1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
typedef struct lista{
char stringa[8];
struct lista *next;
}list;
int main(int argc, char *argv[])
{ int i,j,k,l,m,n,o,trouver=0;// 7 variables int pour les 7 boucles for
list *testa;
testa=NULL;// tete de la liste
list *nouveau; // pour inserer un nouveau element dans la liste
list *courant;// pour parcourir la liste
int s[7]; // tableau de int pour memoriser les elements entrés en ligne de commande qui ne doivent pas contenir 1 ou 0
int count =0;//conteur pour geneere les mots
char c[8];// chaine d'aide
char mat[8][5]={"ABC","DEF","GHI","JKL","MNO","PQRS","TUW","WXYZ"};// matrice statique a partir de laquelle on genere tous les mots
if(argc!=3){ // les arguments doivent etre 3 le dernier est un fichier que j'ai pas fait encore
printf(stderr,"errore parametri");
return EXIT_FAILURE;
}
for(i=0;i<strlen(argv[1]);i++)
{
if(argv[1][i]=='1' || argv[1][i]=='0')
return EXIT_FAILURE;
}
for(i=0;i<7;i++){
s[i]=argv[1][i]-'0';
printf("%d\n",s[i]);}
for(i=0;i<strlen(mat[s[0]-2]);i++){
c[count]=mat[s[0]-2][i];
for(j=0;j<strlen(mat[s[1]-2]);j++){
c[count+1]=mat[s[1]-2][j];
for(k=0;k<strlen(mat[s[2]-2]);k++){
c[count+2]=mat[s[2]-2][k];
for(l=0;l<strlen(mat[s[3]-2]);l++){
c[count+3]=mat[s[3]-2][l];
for(m=0;m<strlen(mat[s[4]-2]);m++){
c[count+4]=mat[s[4]-2][l];
for(n=0;n<strlen(mat[s[5]-2]);n++){
c[count+5]=mat[s[5]-2][n];
for(o=0;o<strlen(mat[s[6]-2]);o++){
c[count+6]=mat[s[6]-2][o];
c[count+7]='\0';
if(testa==NULL){
nouveau=(list *)malloc(sizeof(list));
if(nouveau==NULL){
printf(stderr,"errore allocazione memoria");
return EXIT_FAILURE;
}
strcpy(nouveau->stringa,c);
nouveau->next=testa;
testa=nouveau;
} // aggiungo in testa
if(testa!=NULL){
courant=testa;
while(courant->next!=NULL){
courant=courant->next;
if(strcmp(courant->stringa,c)==0) trouver=1; /*je parcours la liste et je compare le champs stringa avec la chaine c si c deja existe je met trouver à 1*/}
if(strcmp(courant->stringa,c)==0) trouver=1;// de meme
if(trouver==0){//si trouver=0 ca veut dire que le mot c n'existe pas dans la liste donc je peux l'inserer
nouveau=(list *)malloc(sizeof(list));
strcpy(nouveau->stringa,c);
courant->next=nouveau;
nouveau->next=NULL;}
}
}
}
}
}
}
}
}
// quand j'affiche la liste ca donne rien
courant=testa;
while(courant->next!=NULL){
printf("%s ",courant->stringa);
courant=courant->next;
}
return 0;
} |
Partager