A voir également:
- Comment appeler plot dans une boucle
- Appeler en privé - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Message ordinateur bloqué appeler numéro - Accueil - Arnaque
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Je peux appeler mais pas recevoir d'appel sur mon portable - Forum Réseaux sociaux
6 réponses
dubcek
Messages postés
18779
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 avril 2025
5 630
5 avril 2010 à 17:01
5 avril 2010 à 17:01
hello
si array est un tableau de char *:
fprintf(f1,"plot %s \n", array[i])
si array est un tableau de char *:
fprintf(f1,"plot %s \n", array[i])
dubcek
Messages postés
18779
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 avril 2025
5 630
Modifié par dubcek le 6/04/2010 à 11:06
Modifié par dubcek le 6/04/2010 à 11:06
char array[100]; défini un tableau de 100 chars, pas de 100 chaines.
essayer
char *array[]={"Cluster00", "Cluster01", "Cluster02"};
ou fabriquer les noms:
char array[100];
...
for(i=0;i<3;i++)
{
sprintf(array, "plot Cluster%02d", i);
fprintf(f1, "%s\n", array);
...
essayer
char *array[]={"Cluster00", "Cluster01", "Cluster02"};
ou fabriquer les noms:
char array[100];
...
for(i=0;i<3;i++)
{
sprintf(array, "plot Cluster%02d", i);
fprintf(f1, "%s\n", array);
...
Salut Dubcek je te remercie je pense que vous avez comprit mon probleme mais j'arrive pas toujours à le regler, j'ai essayer ce que tu ma dit mais ca n'as pas marcher, j'ai aussi essayer ceci :
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", tableau[0]);
}
voici le code complet:
# include <stdio.h>
int main (void)
{
char* tableau[50];
int i;
tableau[0] = "Cluster00";
tableau[1] = "Cluster01";
tableau[2] = "Cluster02";
FILE* f1;
if (NULL == (f1 = popen("gnuplot","w")))
{
perror("gnuplot");
pclose(f1);
return 1;
}
puts("\n Connexion à gnuplot: afficher les clusters\n");
fprintf(f1," set xlabel 'Coordonnées x de chaque objet ' \n");
fprintf(f1," set ylabel 'rdonnées y de chaque objet'\n");
fprintf(f1," set title 'la liste des cluster formé' \n");
fprintf(f1,"set term post enh color \n");
fprintf(f1,"set out 'Clusters.eps'\n"); // with bounding boxes
fprintf(f1,"unset multiplot \n");
fprintf(f1,"set multiplot \n");
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", tableau[0]);
}
return 0;
}
il me donne en sorie un fichier vide et il m'affiche lors de l'exécution les erreurs suivantes:
Undefined variable Cluster00
Undefined variable Cluster01
Undefined variable Cluster02
je te remercie beaucoup et j'atend toujours la reponse
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", tableau[0]);
}
voici le code complet:
# include <stdio.h>
int main (void)
{
char* tableau[50];
int i;
tableau[0] = "Cluster00";
tableau[1] = "Cluster01";
tableau[2] = "Cluster02";
FILE* f1;
if (NULL == (f1 = popen("gnuplot","w")))
{
perror("gnuplot");
pclose(f1);
return 1;
}
puts("\n Connexion à gnuplot: afficher les clusters\n");
fprintf(f1," set xlabel 'Coordonnées x de chaque objet ' \n");
fprintf(f1," set ylabel 'rdonnées y de chaque objet'\n");
fprintf(f1," set title 'la liste des cluster formé' \n");
fprintf(f1,"set term post enh color \n");
fprintf(f1,"set out 'Clusters.eps'\n"); // with bounding boxes
fprintf(f1,"unset multiplot \n");
fprintf(f1,"set multiplot \n");
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", tableau[0]);
}
return 0;
}
il me donne en sorie un fichier vide et il m'affiche lors de l'exécution les erreurs suivantes:
Undefined variable Cluster00
Undefined variable Cluster01
Undefined variable Cluster02
je te remercie beaucoup et j'atend toujours la reponse
dubcek
Messages postés
18779
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 avril 2025
5 630
9 avril 2010 à 07:14
9 avril 2010 à 07:14
ce code fonctionne, mais c'est gnuplot qui génère ces erreurs ?
as-tu essayé tes commandes manuellement dans gnuplot
as-tu essayé tes commandes manuellement dans gnuplot
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 avril 2010 à 08:24
9 avril 2010 à 08:24
Salut.
Comme le remarque dubeck, je pense que l'erreur vient de Gnuplot
Si Cluster00 et cie sont des fichiers, il faut faire :
fprintf(f1,"plot '%s' \n", tableau[0]);
ou
fprintf(f1,"plot \"%s\" \n", tableau[0]);
De plus, les commandes pour le multiplot me semblent un peu légère. Il me semble qu'avant chaque appel à plot il faut spécifier les "coordonnées" du sous graphique. Si tu veux superposé les graphiques, n'utilise pas multiplot, mais utilise "replot" à la place de "plot".
Bonne chance.
Comme le remarque dubeck, je pense que l'erreur vient de Gnuplot
Si Cluster00 et cie sont des fichiers, il faut faire :
fprintf(f1,"plot '%s' \n", tableau[0]);
ou
fprintf(f1,"plot \"%s\" \n", tableau[0]);
De plus, les commandes pour le multiplot me semblent un peu légère. Il me semble qu'avant chaque appel à plot il faut spécifier les "coordonnées" du sous graphique. Si tu veux superposé les graphiques, n'utilise pas multiplot, mais utilise "replot" à la place de "plot".
Bonne chance.
Salut,
je vous remercie char Snipeur et Dubcec, vous m'avez beaucoup aider, mon probléme et présque résolu, dans le shell tous marche tres bien le probleme et quant je passe à ecrire dans un programe C. maintenant j'ai utilisé replot et ca ma données le resultat voulu méme en ecrivant dans un programme C. Le seul probléme qui me réste et que à la fin il me génére un seul fichier qui contient 3 image. la premiére represente le Cluster00 tous seul, la deuxiéme represente le Cluster00 et le Cluster01 et la troisiéme représente les trois clusters. bon c'est pas grave l'essentiel j'ai la troisieme qui me donne les trois clusters, mais j'aime bien avoir que la troisieme image, ya t'il as moyen pour l'avoir?
je vous remercie encore.
je vous remercie char Snipeur et Dubcec, vous m'avez beaucoup aider, mon probléme et présque résolu, dans le shell tous marche tres bien le probleme et quant je passe à ecrire dans un programe C. maintenant j'ai utilisé replot et ca ma données le resultat voulu méme en ecrivant dans un programme C. Le seul probléme qui me réste et que à la fin il me génére un seul fichier qui contient 3 image. la premiére represente le Cluster00 tous seul, la deuxiéme represente le Cluster00 et le Cluster01 et la troisiéme représente les trois clusters. bon c'est pas grave l'essentiel j'ai la troisieme qui me donne les trois clusters, mais j'aime bien avoir que la troisieme image, ya t'il as moyen pour l'avoir?
je vous remercie encore.
j'ai oublier de donner le code que j'ai utilisé peut etres il vas sérvir pour aider quelqu'un d'autre
au lieu de faire dans le code précident.
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", tableau[0]);
}
j'ai ecrit tous simplement :
fprintf(f1,"plot '%s' \n", tableau[0]);
for(i=1;i<3;i++)
{
fprintf(f1,"replot '%s' \n", tableau[i]);
}
au lieu de faire dans le code précident.
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", tableau[0]);
}
j'ai ecrit tous simplement :
fprintf(f1,"plot '%s' \n", tableau[0]);
for(i=1;i<3;i++)
{
fprintf(f1,"replot '%s' \n", tableau[i]);
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 avril 2010 à 12:02
9 avril 2010 à 12:02
déplace la ligne fprintf(f1,"set out 'Clusters.eps'\n"); à la fin de la boucle :
fprintf(f1,"plot '%s' \n", tableau[0]); for(i=1;i<3;i++) { fprintf(f1,"replot '%s' \n", tableau[i]); } fprintf(f1,"set out 'Clusters.eps'\n"); fprintf(f1,"replot\n");Je pense que ça fonctionnera.
Merci Char Snipeur j'ai essayer ton code mais la sortie que j'ai 'Clusters.eps' je ne peut pas l'ouvrir. en faite j'ai un autre probléme quant j'ai inserer l'ancien code qui marche tous seul, dans mon application j'ai des problémes bon le contenu de mes fichier {Cluster00,Cluster01,..} je les génere au fur et à mesure dans mon code, quant je términe complétement de genérer le contenu de mes fichier je sort de la boucle et j'essaye de représenter les resultats en utilisant le code précident mais il m'affiche les erreur suivants
warning: unreadable file "(null)"
No data in plot
replot 'Cluster02'
no previous plot..
malgré que je sais qu'a cette etape mes fichiers sont bien générer. j'ai met un sleep avant d'insérer le code qui permet d'appelet gnuplot mais c'est pareil.
j'espere que vous avez une aidée pour ça merci beaucoup
warning: unreadable file "(null)"
No data in plot
replot 'Cluster02'
no previous plot..
malgré que je sais qu'a cette etape mes fichiers sont bien générer. j'ai met un sleep avant d'insérer le code qui permet d'appelet gnuplot mais c'est pareil.
j'espere que vous avez une aidée pour ça merci beaucoup
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 avril 2010 à 14:13
9 avril 2010 à 14:13
As tu bien fermé tes fichiers ?
Si ma méthode ne fonctionne pas, il faut remodifier ta boucle ainsi :
Si ma méthode ne fonctionne pas, il faut remodifier ta boucle ainsi :
fprintf(f1,"plot '%s' \\\n", tableau[0]); for(i=1;i<3;i++) { fprintf(f1,", '%s'\\ \n", tableau[i]); }
merci Char Snipeur ton code marche tres bien, mais pour l'autre probléme j'ai vérifier la fermeture de tous mes fichiers j'ai essayer directement
fprintf(f1,"plot 'Cluster00','Cluster01','Cluster03'"); dans mon application au lieux de la boucle et ça marche tres bien, j'ai essayer le nouveau code que tu ma donné dans mon application il me donne en résultat que le Cluster02 ? et il m'affiche l'erreur suivante:
warning: skiping unreadable file "(null)"
malgré que j'affiche le contenu du tableau[0] ,tableau[1]et tableau[2] qui me donne effectivement Cluster00, Cluster01 et Cluster02. je vois pas il est ou le probléme
j'espere que tu aura une idée our mon probléme je te remercie encore
fprintf(f1,"plot 'Cluster00','Cluster01','Cluster03'"); dans mon application au lieux de la boucle et ça marche tres bien, j'ai essayer le nouveau code que tu ma donné dans mon application il me donne en résultat que le Cluster02 ? et il m'affiche l'erreur suivante:
warning: skiping unreadable file "(null)"
malgré que j'affiche le contenu du tableau[0] ,tableau[1]et tableau[2] qui me donne effectivement Cluster00, Cluster01 et Cluster02. je vois pas il est ou le probléme
j'espere que tu aura une idée our mon probléme je te remercie encore
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
Modifié par Char Snipeur le 9/04/2010 à 15:28
Modifié par Char Snipeur le 9/04/2010 à 15:28
remet ton code complet.
fait un printf en parallèle de tes fprintf pour vérifier ce qui est écrit.
Ho ! et puis j'ai opublié dans le dernier truc que je t'ai donné, il faut mettre fprintf(f1,"\n"); après la boucle.
Une autre solution pour faire tout ça, c'est décrire dans un fichier régulier et de demander à Gnupliot de charger ce fichier.
fait un printf en parallèle de tes fprintf pour vérifier ce qui est écrit.
Ho ! et puis j'ai opublié dans le dernier truc que je t'ai donné, il faut mettre fprintf(f1,"\n"); après la boucle.
Une autre solution pour faire tout ça, c'est décrire dans un fichier régulier et de demander à Gnupliot de charger ce fichier.
mon application contien plus de mille ligne de code pour cela je te donne une portion; mais j'ai pas comprit ta remarque:
"fait un printf en parallèle de tes fprintf pour vérifier ce qui est écrit."
for(i=0;i<(dd-1);i++)
{
........ya plusieur ligne de code ici ou a chaqiue etape de la boucle je calcle le debut et la fin de cluster
if((fincluster-debutcluster)>=MinPts)
{
nb_cluster=nb_cluster+1;
h4=debutcluster;
OrderFile= fopen("OrderFile.txt", "r");
for(h6=0;h6<h4;h6++)
{
fscanf(OrderFile, "%d %f",&b21,&b31);
}
//printf("\n voici le premier cluster \n ");
for(h4=debutcluster;h4<=fincluster;h4++)
{
fscanf(OrderFile, "%d %f",&b21,&b31);
fichier= fopen("test.txt", "a+");
for(h5=0;h5<=nb_ligne;h5++)
{
fscanf(fichier, "%f %f",&b22,&b23);
if(h5==b21)
{
break;
}
}
fclose(fichier);
Cluster_Rep= fopen("Cluster_Rep.txt", "a+");
fprintf(Cluster_Rep, " %f %f\n",b22,b23);
fclose(Cluster_Rep);
}
fclose(OrderFile);
}
array[7] = (char)(tens + '0');
array[8] = (char)(ones + '0');
rename("Cluster_Rep.txt",array);
tableau[nb_cluster]=array;
printf("tableau[nb_cluster] %s",tableau[nb_cluster]);
if(ones==9)
{
ones=0;
tens=tens+1;
}
else
{
ones=ones+1;
}
}
//--------------------- Représentation des Clusters avec Gnuplot
FILE* f1;
if (NULL == (f1 = popen("gnuplot","w")))
{
perror("gnuplot");
pclose(f1);
return 1;
}
puts("\n Connexion à gnuplot: afficher les clusters\n");
fprintf(f1," set xlabel 'Coordonnées x de chaque objet ' \n");
fprintf(f1," set ylabel 'rdonnées y de chaque objet'\n");
fprintf(f1," set title 'la liste des cluster formé' \n");
fprintf(f1,"set term post enh color \n");
fprintf(f1,"set out 'Clusters.eps'\n"); // with bounding boxes
//fprintf(f1,"plot 'Cluster00','Cluster01','Cluster02' \n");
fprintf(f1,"plot '%s' \\\n", tableau[0]);
for(i=1;i<nb_cluster;i++)
{
fprintf(f1,", '%s' \\\n", tableau[i]);
}
//------------------------------------------------------FIN---------------------------------
je te remercie beaucoup pour tes réponses.
"fait un printf en parallèle de tes fprintf pour vérifier ce qui est écrit."
for(i=0;i<(dd-1);i++)
{
........ya plusieur ligne de code ici ou a chaqiue etape de la boucle je calcle le debut et la fin de cluster
if((fincluster-debutcluster)>=MinPts)
{
nb_cluster=nb_cluster+1;
h4=debutcluster;
OrderFile= fopen("OrderFile.txt", "r");
for(h6=0;h6<h4;h6++)
{
fscanf(OrderFile, "%d %f",&b21,&b31);
}
//printf("\n voici le premier cluster \n ");
for(h4=debutcluster;h4<=fincluster;h4++)
{
fscanf(OrderFile, "%d %f",&b21,&b31);
fichier= fopen("test.txt", "a+");
for(h5=0;h5<=nb_ligne;h5++)
{
fscanf(fichier, "%f %f",&b22,&b23);
if(h5==b21)
{
break;
}
}
fclose(fichier);
Cluster_Rep= fopen("Cluster_Rep.txt", "a+");
fprintf(Cluster_Rep, " %f %f\n",b22,b23);
fclose(Cluster_Rep);
}
fclose(OrderFile);
}
array[7] = (char)(tens + '0');
array[8] = (char)(ones + '0');
rename("Cluster_Rep.txt",array);
tableau[nb_cluster]=array;
printf("tableau[nb_cluster] %s",tableau[nb_cluster]);
if(ones==9)
{
ones=0;
tens=tens+1;
}
else
{
ones=ones+1;
}
}
//--------------------- Représentation des Clusters avec Gnuplot
FILE* f1;
if (NULL == (f1 = popen("gnuplot","w")))
{
perror("gnuplot");
pclose(f1);
return 1;
}
puts("\n Connexion à gnuplot: afficher les clusters\n");
fprintf(f1," set xlabel 'Coordonnées x de chaque objet ' \n");
fprintf(f1," set ylabel 'rdonnées y de chaque objet'\n");
fprintf(f1," set title 'la liste des cluster formé' \n");
fprintf(f1,"set term post enh color \n");
fprintf(f1,"set out 'Clusters.eps'\n"); // with bounding boxes
//fprintf(f1,"plot 'Cluster00','Cluster01','Cluster02' \n");
fprintf(f1,"plot '%s' \\\n", tableau[0]);
for(i=1;i<nb_cluster;i++)
{
fprintf(f1,", '%s' \\\n", tableau[i]);
}
//------------------------------------------------------FIN---------------------------------
je te remercie beaucoup pour tes réponses.
dubcek
Messages postés
18779
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 avril 2025
5 630
10 avril 2010 à 07:39
10 avril 2010 à 07:39
pour
imcompatible implicit declaration of build-in function 'strlen'
imcompatible implicit declaration of build-in function 'strcpy'
placer au début du fichier
#include <string.h>
imcompatible implicit declaration of build-in function 'strlen'
imcompatible implicit declaration of build-in function 'strcpy'
placer au début du fichier
#include <string.h>
5 avril 2010 à 17:45
je vous remerci beaucoup Dubcek mais mon probléme n'est pas encore réglé. je pense que je n'est pas bien expliquée. puisque moi j'ai un ensemble de fichiers exp {Cluster00,Cluster01,....} alors je met l'ensemble de ces noms de fichiers dans un tableau array ensuite j'essaye d'appeler la commande plot dans une boucle bon j'aurai pu eviter d'utiliser la boucle si je connais au préalable le nombre de fichier que j'ai mais ce n'est pas le cas. j'ai essayer ce que vous m'avez dit et j'ai des erreurs:
voici le code que j'ai tapée:
# include <stdio.h>
int main (void)
{
char array[100];
int i;
array[0]="Cluster00";
array[1]="Cluster01";
array[2]="Cluster02";
FILE* f1;
if (NULL == (f1 = popen("gnuplot","w")))
{
perror("gnuplot");
pclose(f1);
return 1;
}
puts("\n Connexion à gnuplot: afficher les clusters\n");
fprintf(f1," set xlabel 'Coordonnées x de chaque objet ' \n");
fprintf(f1," set ylabel 'rdonnées y de chaque objet'\n");
fprintf(f1," set title 'la liste des cluster formé' \n");
fprintf(f1,"set term post enh color \n");
fprintf(f1,"set out 'Clusters.eps'\n"); // with bounding boxes
fprintf(f1,"unset multiplot \n");
fprintf(f1,"set multiplot \n");
for(i=0;i<3;i++)
{
fprintf(f1,"plot %s \n", array[i]);
}
return 0;
}
et voici les erreurs que j'ai apprés la compélation:
essa1.c:9: warning: assignment makes integer from pointer without a cast
essa1.c:10: warning: assignment makes integer from pointer without a cast
essa1.c:11: warning: assignment makes integer from pointer without a cast