[C] Extract chaîne de caract et Compte
Résolu/Fermé
sandrill0n
Messages postés
79
Date d'inscription
Statut
Membre
Dernière intervention
-
sandrill0n Messages postés 79 Date d'inscription Statut Membre Dernière intervention -
sandrill0n Messages postés 79 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite créer des Pareto (histogrammes) de nombre produits testés par mode de test. Pour cela j'extrais les infos des fichiers texte srtis des testeurs.
J'ai commencé à faire ça, mais j'ai un souci avec le "case" :
/*On extrait le mode de test*/
if (strstr(ligne, "Mode de Test"))
{
/*printf("Mode=%s; ",strext(ligne,15," : "));*/
Lot.Mode[k++] = strext(ligne,15," : ");
}
/*On extrait le numero de wafer*/
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{
/*printf("Wafer=%s\n",strext(ligne,3,"Wafer : "));*/
Lot.Wafer=strext(ligne,3,"Wafer : ");
Lot.Wafer2[w++] = strext(ligne,3,"Wafer : ");
/* On print une ligne par wafer*/
fprintf(log,"%s; %d%s%d-%d:%d; %d%s%d-%d:%d; %d min; %s; %s; %s \n",Lot.Lot_id,Lot.jourd,Lot.nommoisd,Lot.anneed,Lot.heuresd,Lot.minutesd,Lot.jourf,Lot.nommoisf,Lot.anneef,Lot.heuresf,Lot.minutesf,duree,Lot.Techno,Lot.Wafer,Lot.Mode[k]);
}
/*---------------------------------------------------*/
/* Création du Pareto des Mode de Test */
/*---------------------------------------------------*/
/*On met le pareto a jour si mode normal, 100% ou pc ho uniquement*/
for (j=0;j<k;j++)
{
for (l=0;l<MAX_MODE;l++)
{
switch (Lot.Mode[j])
{
case ("Normal"):
Tab[1].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[1].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[1].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[1].Count);
break;
case ("100%"):
Tab[2].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[2].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[2].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[2].Count);
break;
case ("PC"):
Tab[3].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[3].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[3].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[3].Count);
break;
case ("Demande"):
Tab[4].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[4].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[4].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[4].Count);
break;
case ("Wafer"):
Tab[5].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[5].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[5].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[5].Count);
break;
default :
Tab[l].Name = Lot.Mode[j];
printf("Mode def=%s\n",Tab[l].Name);
Tab[l].Count = 1;
printf("Nb Waf def=%d\n",Tab[l].Count);
cpt_waf = 0;
}
}
}
k=0; w=0;
Merci d'avance
PS : je me suis loupée de forum la première fois (j'étais au forum Divers), Désolée
Je souhaite créer des Pareto (histogrammes) de nombre produits testés par mode de test. Pour cela j'extrais les infos des fichiers texte srtis des testeurs.
J'ai commencé à faire ça, mais j'ai un souci avec le "case" :
/*On extrait le mode de test*/
if (strstr(ligne, "Mode de Test"))
{
/*printf("Mode=%s; ",strext(ligne,15," : "));*/
Lot.Mode[k++] = strext(ligne,15," : ");
}
/*On extrait le numero de wafer*/
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{
/*printf("Wafer=%s\n",strext(ligne,3,"Wafer : "));*/
Lot.Wafer=strext(ligne,3,"Wafer : ");
Lot.Wafer2[w++] = strext(ligne,3,"Wafer : ");
/* On print une ligne par wafer*/
fprintf(log,"%s; %d%s%d-%d:%d; %d%s%d-%d:%d; %d min; %s; %s; %s \n",Lot.Lot_id,Lot.jourd,Lot.nommoisd,Lot.anneed,Lot.heuresd,Lot.minutesd,Lot.jourf,Lot.nommoisf,Lot.anneef,Lot.heuresf,Lot.minutesf,duree,Lot.Techno,Lot.Wafer,Lot.Mode[k]);
}
/*---------------------------------------------------*/
/* Création du Pareto des Mode de Test */
/*---------------------------------------------------*/
/*On met le pareto a jour si mode normal, 100% ou pc ho uniquement*/
for (j=0;j<k;j++)
{
for (l=0;l<MAX_MODE;l++)
{
switch (Lot.Mode[j])
{
case ("Normal"):
Tab[1].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[1].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[1].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[1].Count);
break;
case ("100%"):
Tab[2].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[2].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[2].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[2].Count);
break;
case ("PC"):
Tab[3].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[3].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[3].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[3].Count);
break;
case ("Demande"):
Tab[4].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[4].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[4].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[4].Count);
break;
case ("Wafer"):
Tab[5].Name = Lot.Mode[j];
printf("Mode=%s\n",Tab[5].Name);
if (strstr(ligne, "Wafer")&&(!strstr(ligne, "Wafer a 0")))
{ cpt_waf ++; Tab[5].Count = cpt_waf;}
printf("Nb Waf=%d\n",Tab[5].Count);
break;
default :
Tab[l].Name = Lot.Mode[j];
printf("Mode def=%s\n",Tab[l].Name);
Tab[l].Count = 1;
printf("Nb Waf def=%d\n",Tab[l].Count);
cpt_waf = 0;
}
}
}
k=0; w=0;
Merci d'avance
PS : je me suis loupée de forum la première fois (j'étais au forum Divers), Désolée
A voir également:
- [C] Extract chaîne de caract et Compte
- Créer un compte google - Guide
- Chaine tnt gratuite sur mobile - Guide
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte gmail - Guide
- Plus de chaine tv - Guide
2 réponses
Merci beaucoup...
Ca m'évite de me prendre la tête...
J'avais essayé comme ça avant :
Seulement ça ne me compte que le nombre de fois qu'il y a le mode de test présent dans le fichier texte. Or le mode de test est présent qu'une seule fois dans le fichier, et ensuite on a la liste des produits testés.
Moi je voudrais compter le nombre de produits présents dans le fichier.
Je pense qu'il faut rajouter un champ dans la structure :
Mais je ne sais pas comment l'utiliser...
Ca m'évite de me prendre la tête...
J'avais essayé comme ça avant :
for (j=0;j<k;j++) for (l=0;l<MAX_MODE;l++) { if (l==Up) {Tab[l].Name=Lot.Mode[l]; Tab[l].Count=1; Up++; break;} else if ((Tab[l].Name!=NULL)&&(!strcmp(Tab[l].Name, Lot.Mode[l]))) {Tab[l].Count++; break;} printf("Nom2: %s; Cpt2: %s",Tab[l].Name,Tab[l].Count); }
Seulement ça ne me compte que le nombre de fois qu'il y a le mode de test présent dans le fichier texte. Or le mode de test est présent qu'une seule fois dans le fichier, et ensuite on a la liste des produits testés.
Moi je voudrais compter le nombre de produits présents dans le fichier.
Je pense qu'il faut rajouter un champ dans la structure :
struct pareto { char *Name; int Count; } struct pareto Tab[MAX_MODE]
Mais je ne sais pas comment l'utiliser...