FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage haut niveau(C, Pascal...)


  [QST][C] Programme a tester sous LINUX / UNIX

 




1 utilisateur anonyme et 9 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[QST][C] Programme a tester sous LINUX / UNIX

n°6761
j-d
pire que Mc Giver
Posté le 25-05-2006 à 15:50:42  profilanswer
 

Pour mon projet de fin d'année j'avais un programme a faire (un chronomètre a boite noire), il dois respecter la norme POSIX (doit fonctionner sous Windows et UNIX-LINUX).
J'ai put le tester sous Windows XP et je cherche quelqu'un pour le tester dans un environement UNIX (ou LINUX s'est la même chose).
 
Mon programme est tout con; 2 modes de dispo;  
-chronométrage d'une boite noire
-respect a une limite de temps d'execution de la boite noire
 
La boite noire actuelle copie un fichier (dont on a donné l'adresse) dans un autre (qui doit déjà exister et dont on a donné l'adresse et le nom)
 
voici le fichier source
 
http://blazit.tm.free.fr/Chrono_V7_final.cpp


Message édité par j-d le 26-05-2006 à 12:25:00

---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
mood
Google
Posté le 25-05-2006 à 15:50:42  profilanswer
 

n°6762
j-d
pire que Mc Giver
Posté le 26-05-2006 à 12:20:38  profilanswer
 

alors personne n'a de LINUX ou vous avez peur que mon programme soit un gros virus ???
Y'a rien de méchant là dedans; que des fonctions de base du C (de toute façon je suis trop nul pour pour utiliser autre chose):

Code :
  1. //################################################################
  2. //#               Chronometre V7 final                           #
  3. //################################################################
  4. //Jedi
  5. //Calisto
  6. #include<time.h>
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<string.h>
  10. #include<windows.h>
  11. const char *NomJourSemaine[] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}; //pour fonction date
  12. const char *NomMois[] = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"}; // pour fonction date
  13. //=====================================================================================================================================
  14. void boite_noire(char * p1,char * p2) // p1 adresse fichier source, p2 adresse fichier de destination
  15. {
  16. FILE* fichierin;  //definition pointeur pour fichier d'entree
  17.     FILE* fichierout;  //definition pointeur pour fichier de sortie
  18. char tempo[512];  //definition d'un tempon sous la forme d'un tableau de caractere
  19. int NbLu;
  20.  
  21. printf("%s","\n\nBOITE NOIRE !\n\n" );
  22. fichierin=fopen(p1, "rb" ); //ouverture fichier source en lecture seule bianire
  23.  
  24. fichierout=fopen(p2, "wb" ); //ouverture fichier destination en mode ecriture seule binaire
  25. while((NbLu=fread(tempo, 1, 512, fichierin)) != 0) //lecture de 512 blocs de taille 1 octet du fichier binaire et stockage dans tempo, NbLu = nombre de blocs réellement lus
  26. {
  27.  fwrite(tempo, 1, NbLu, fichierout);    //   écriture de NbLu blocs de 1 octet stocké dans tempo vers fichierout
  28. }
  29. fclose(fichierout);  //fermeture fichier de sortie
  30. fclose(fichierin);  //fermeture fichier d'entrée
  31. };
  32. //=====================================================================================================================================
  33. void Affichage_resultat(clock_t debut,clock_t fin,double duree) //affichage des resultats du test
  34. {
  35. printf("Nombre de cycle d'horloge par secondes : %d\n",CLOCKS_PER_SEC);
  36. printf("Fonction se lance a : %6.0f top horloge\n",(double)(debut));
  37. printf("Fonction se termine a : %6.0f top horloge\n",(double)(fin));
  38. printf("\nTemps d'execution de la fonction :%6.0f top horloge soit %f secondes \n",duree,(duree/CLOCKS_PER_SEC));
  39. };
  40. //=====================================================================================================================================
  41. void dateGM(void)  //donne la date avec la fonction gmtime
  42. {
  43.    time_t timestamp;
  44.    struct tm *t;
  45.    // Lecture de la date et de l'heure
  46.    timestamp = time (NULL);
  47.    t = gmtime(&timestamp);
  48.    // Affiche la date et l'heure courante
  49.    printf ("le %s ", NomJourSemaine[t -> tm_wday]);
  50.    printf (" %02u %s %04u ", t -> tm_mday, NomMois[t -> tm_mon], 1900 +t -> tm_year);
  51.    printf ("a %02uh %02umin %02usec.\n", t -> tm_hour+2, t -> tm_min, t -> tm_sec);
  52.    printf ("\n" );
  53. };
  54. //=====================================================================================================================================
  55. void saisie(char * p1,char * p2)
  56. {
  57. char tempon1[150],tempon2[150];
  58. int in=0,out=0;
  59. int testchemin(char * p42); //declaration de la fonction testchemin
  60. while (in==0)
  61. {
  62.  printf("\n\nSaisie du chemin du fichier a lire : \n" );
  63.         scanf("%s",tempon1);
  64.         strcpy(p1, tempon1);
  65.         in=testchemin(p1); // lancement fonction de test du chemin avec passage du chemins en argument d'appel
  66. };
  67.  while (out==0)
  68. {
  69.         printf("\n\nSaisie du chemin du fichier a ecrire : \n" );
  70.         scanf("%s",tempon2);
  71.         strcpy(p2,tempon2);
  72.         out=testchemin(p2); // lancement fonction de test du chemin avec passage du chemins en argument d'appel
  73. };
  74. };
  75. //=====================================================================================================================================
  76. int testchemin(char * p42)   //fonction de test du chemin entre
  77. {
  78. FILE *fichiertest;    //definition pointeur pour fichier teste  
  79. fichiertest=fopen(p42,"rb" );  //ouverture du fichier binaire teste en mode lecture seule binaire
  80. long savepos, size;
  81. if(fichiertest==0)  //verification accessibilitee du fichier d'entree
  82.         {
  83.   printf("\n\n--- /!\\ ERREUR D'OUVERTURE DU FICHIER : < %s > /!\\---\n\n",p42);
  84.   return 0;  //instruction retourne 0 si fichier innexistant
  85.  }
  86. else
  87.         {
  88.             //definition de la taille du fichier binaire quad il existe  
  89.   savepos = ftell(fichiertest);          // sauvegarder la position dans le fichier  
  90.   fseek(fichiertest, 0, SEEK_END);       // aller en fin du fichier
  91.   size = ftell(fichiertest);             // lire la taille du fichier
  92.   fseek(fichiertest, savepos, SEEK_SET); // rétablir la position initiale dans le fichier
  93.   printf("\nla taille du fichier est %d octets \n",size);
  94.             fclose(fichiertest);  //fermeture du fichier binaire teste
  95.             return 1;   //instruction retourne 1 quand le fichier existe
  96.  }
  97. };
  98. //=====================================================================================================================================
  99. void dessin()
  100. {
  101. printf("    ,,\n" );
  102. printf("   `\"\"*$b..\n" );
  103.     printf("        \"\"*$o.\n" );
  104.     printf("            \"$$o.\n" );
  105.     printf("              \"*$$o.\n" );
  106.     printf("                 \"$$$o.\n" );
  107.     printf("                   \"$$$$bo...       ..o:\n" );
  108.     printf("                     \"$$$$$$$$booocS$$$    ..    ,.\n" );
  109.     printf("                  \".    \"*$$$$SP     V$o..o$$. .$$$b\n" );
  110.     printf("                   \"$$o. .$$$$$o. ...A$$$$$$$$$$$$$$b\n" );
  111.     printf("             \"\"bo.   \"*$$$$$$$$$$$$$$$$$$$$P*$$$$$$$$:\n" );
  112.     printf("                \"$$.    V$$$$$$$$$P\"**\"\"*\"\'   VP  * \"l\n" );
  113.     printf("                  \"$$$o.4$$$$$$$$X\n" );
  114.     printf("                   \"*$$$$$$$$$$$$$AoA$o..oooooo..           .b\n" );
  115.     printf("                          .X$$$$$$$$$$$P\"\"     \"\"*oo,,     ,$P\n" );
  116.     printf("                         $$P\"\"V$$$$$$$:    .        \"\"*****\"\n" );
  117.     printf("                       .*\"    A$$$$$$$$o.4;      .\n" );
  118.     printf("                            .oP\"\"   \"$$$$$$b.  .$;\n" );
  119.     printf("                                     A$$$$$$$$$$P\n" );
  120.     printf("                                     \"  \"$$$$$P\"\n" );
  121.     printf("                                         $$P*\"\n" );
  122.     printf("                                        .$\"\n" );
  123.     printf("                                        \"\n" );
  124.     printf("\n" );
  125. };
  126. //=====================================================================================================================================
  127. //=====================================================================================================================================
  128. void main(void)  //PGM principale
  129. { /*definition des variables*/
  130. char fice[150],fics[150];
  131. int choix,quite=0;
  132. long i=600000000;
  133. double duree;
  134. float limite=0;
  135. clock_t debut, fin; //variables pour format clock_t
  136. printf("************************************************************************\n" );
  137. printf("*                              Chronometre                             *\n" );
  138. printf("************************************************************************\n" );
  139. printf("BLAZIT_J // D'ESTE_F\n" );
  140. printf("\nProgramme debute " );
  141. dateGM();  //appel fonction date gmtime
  142. while (quite==0)
  143. {
  144.  dessin(); //appel fonction dessin
  145.  printf("----------------------------------------------------------------------\n" );
  146.  printf("|     Choix du mode du chronometre\n" );
  147.  printf("----------------------------------------------------------------------\n" );
  148.         printf("[1] - chronometrage d'une boite noire\n[2] - Respect de la duree d'execution de la boite noire a une consigne\n[3] - Quiter\n\n-> " );
  149.  scanf ("%d",&choix);
  150.  if(choix==1)
  151.  {
  152.             choix=0;
  153.   saisie(fice,fics); // appel fonction de saisie des chemins
  154.   debut=clock();   // releve du temps avant que la fonction ne s'execute
  155.   boite_noire(fice,fics); // lancement fonction "boite noire" avec passage des chemins en argument d'appel
  156.   fin=clock(); // releve du temps apres que la fonction se soit executee
  157.   duree=(double)(fin-debut); //calcul de la duree d'execution
  158.   Affichage_resultat(debut,fin,duree); //appel fonction d'affichage des resultats du chrono
  159.  system("PAUSE" );
  160.  }
  161.  if (choix==2)
  162.  {
  163.   choix=0;
  164.   saisie(fice,fics); // appel fonction de saisie des chemins
  165.   printf("\nLimite de temps d'execution de la fonction en secondes ?\n" );
  166.   scanf("%f",&limite);
  167.   limite=(limite*CLOCKS_PER_SEC); //conversion temps en seconde -> top horloge
  168.   printf("\n" );
  169.   debut=clock();   // releve du temps avant que la fonction ne s'execute
  170.   boite_noire(fice,fics); // lancement fonction "boite noire" avec passage des chemins en argument d'appel
  171.   fin=clock(); // releve du temps apres que la fonction se soit executee
  172.   duree=(double)(fin-debut); //calcul de la duree d'execution
  173.   Affichage_resultat(debut,fin,duree); //appel fonction d'affichage des resultats du chrono
  174.   if (limite-duree<0)
  175.    printf("\n--LIMITE DE TEMPS D'EXECUTION DEPASSEE --\n de %6.0f top horloge soit %f secondes \n",(duree-limite),((duree-limite)/CLOCKS_PER_SEC));   //affichage de la duree de depassement de la boite noire
  176.   else printf("\n-- LIMITE DE TEMPS D'EXECUTION RESPECTEE --\n marge de %6.0f top horloge soit %f secondes \n\n",(limite-duree),((limite-duree)/CLOCKS_PER_SEC)); //affichage de la marge de temps de la boite noire
  177.   system("PAUSE" );
  178.  }
  179.  if (choix==3)
  180.  {         
  181.   quite=1; //on peut quiter le programme
  182.   printf("\nProgramme termine " );
  183.   dateGM();  //appel fonction date gmtime
  184.   system("PAUSE" );
  185.  }
  186.  printf("\n\n\n\n" );
  187. };
  188. };


Message édité par j-d le 26-05-2006 à 12:22:08

---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6763
CryoGen
Powered by kitkat©
Posté le 26-05-2006 à 19:11:15  profilanswer
 

l'appel "system("PAUSE" )" ne va pas marcher sous linux je crois (pas sur; pas de linux sur moi en ce moment depuis 10mois... je suis en manque meme :p)


Message édité par CryoGen le 26-05-2006 à 19:12:09

---------------
I am the bone of my sword...
n°6765
j-d
pire que Mc Giver
Posté le 26-05-2006 à 19:53:18  profilanswer
 

pourtant l'instruction system est dans la librairie standard; tout ce qui est dans la librairie stdlib.h n'est pas compatible UNIX-LINUX-WINDOWS ??


---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6766
CryoGen
Powered by kitkat©
Posté le 26-05-2006 à 21:34:59  profilanswer
 

ben c'est surtout que j'ai un doute sur le "PAUSE" ;) il me semble que system() appel la commande passée en parametre et il me semble qu'il n'y a pas de commande "pause" sous linux :/
 
à confirmer par un maitre en la matiere :D


---------------
I am the bone of my sword...
n°6767
ratur
It's time to kick ass
Posté le 26-05-2006 à 23:40:08  profilanswer
 

Je connais pas vraiment le C
 
Mais ton programme il a pas l'air de compiler (ou alors c'est moi qui me plante dans la commande :D)
 

ratur@thinkgentoo ~% gcc Chrono_V7_final.cpp
Chrono_V7_final.cpp:12:20: windows.h : Aucun fichier ou répertoire de ce type
Chrono_V7_final.cpp:162: erreur: « main» doit retourner « int »
Chrono_V7_final.cpp:256:3: attention : no newline at end of file



---------------
"Never underestimate the power of huge numbers of stupid things." - Serious Sam
"Si tu donnes un poisson à un homme, il mangera un jour. Si tu donnes un homme à un poisson, il mangera toute sa vie" Le Chat
n°6768
CryoGen
Powered by kitkat©
Posté le 27-05-2006 à 00:53:04  profilanswer
 

ben oui forcement l'include windows pour compiler sous linux ca va pas le faire :D


---------------
I am the bone of my sword...
n°6769
j-d
pire que Mc Giver
Posté le 27-05-2006 à 01:40:38  profilanswer
 

ratur a écrit :

Je connais pas vraiment le C
 
Mais ton programme il a pas l'air de compiler (ou alors c'est moi qui me plante dans la commande :D)
 

ratur@thinkgentoo ~% gcc Chrono_V7_final.cpp
Chrono_V7_final.cpp:12:20: windows.h : Aucun fichier ou répertoire de ce type
Chrono_V7_final.cpp:162: erreur: « main» doit retourner « int »
Chrono_V7_final.cpp:256:3: attention : no newline at end of file



 
 
"Chrono_V7_final.cpp:12:20: windows.h : Aucun fichier ou répertoire de ce type" -> pour windows.h s'est normal; un reste de vieux code
 
"Chrono_V7_final.cpp:162: erreur: « main» doit retourner « int »" -> pour le main ça m'étonne beaucoup; mon main ne renvois rien (ce qui est autorisé par le C)
 
"Chrono_V7_final.cpp:256:3: attention : no newline at end of file" -> je vois pas ce que s'est ça
 
sinon voici le nouveau code (la vache 3 évolutions dans la même soirée)
source ici -> http://blazit.tm.free.fr/Chrono_V9_final.cpp
 
en format écrit ci dessous

Code :
  1. //################################################################
  2. //#               Chronometre V9 final                           #
  3. //################################################################
  4. //BLAZIT Jean-Denis
  5. //D'ESTE Fabien
  6. #include<time.h>
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<string.h>
  10. const char *NomJourSemaine[] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}; //pour fonction date
  11. const char *NomMois[] = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"}; // pour fonction date
  12. //=====================================================================================================================================
  13. void boite_noire(char * p1,char * p2) // p1 adresse fichier source, p2 adresse fichier de destination
  14. {
  15. FILE* fichierin;  //definition pointeur pour fichier d'entree
  16.     FILE* fichierout;  //definition pointeur pour fichier de sortie
  17. char tempo[512];  //definition d'un tempon sous la forme d'un tableau de caractere
  18. int NbLu;
  19.  
  20. printf("%s","\n\nBOITE NOIRE !\n\n" );
  21. fichierin=fopen(p1, "rb" ); //ouverture fichier source en lecture seule bianire
  22.  
  23. fichierout=fopen(p2, "wb" ); //ouverture fichier destination en mode ecriture seule binaire
  24. while((NbLu=fread(tempo, 1, 512, fichierin)) != 0) //lecture de 512 blocs de taille 1 octet du fichier binaire et stockage dans tempo, NbLu = nombre de blocs réellement lus
  25. {
  26.  fwrite(tempo, 1, NbLu, fichierout);    //   écriture de NbLu blocs de 1 octet stocké dans tempo vers fichierout
  27. }
  28. fclose(fichierout);  //fermeture fichier de sortie
  29. fclose(fichierin);  //fermeture fichier d'entrée
  30. };
  31. //=====================================================================================================================================
  32. void Affichage_resultat(clock_t debut,clock_t fin,double duree) //affichage des resultats du test
  33. {
  34. printf("Nombre de cycle d'horloge par secondes : %d\n",CLOCKS_PER_SEC);
  35. printf("Fonction se lance a : %6.0f top horloge\n",(double)(debut));
  36. printf("Fonction se termine a : %6.0f top horloge\n",(double)(fin));
  37. printf("\nTemps d'execution de la fonction :%6.0f top horloge soit %f secondes \n",duree,(duree/CLOCKS_PER_SEC));
  38. };
  39. //=====================================================================================================================================
  40. void dateGM(void)  //donne la date avec la fonction gmtime
  41. {
  42.    time_t timestamp;
  43.    struct tm *t;
  44.    // Lecture de la date et de l'heure
  45.    timestamp = time (NULL);
  46.    t = gmtime(&timestamp);
  47.    // Affiche la date et l'heure courante
  48.    printf ("le %s ", NomJourSemaine[t -> tm_wday]);
  49.    printf (" %02u %s %04u ", t -> tm_mday, NomMois[t -> tm_mon], 1900 +t -> tm_year);
  50.    printf ("a %02uh %02umin %02usec.\n", t -> tm_hour+2, t -> tm_min, t -> tm_sec);
  51.    printf ("\n" );
  52. };
  53. //=====================================================================================================================================
  54. void saisie(char * p1,char * p2)
  55. {
  56. char tempon1[150],tempon2[150];
  57. int in=0,out=0;
  58. int testchemin(char * p42); //declaration de la fonction testchemin
  59. while (in==0)
  60. {
  61.  printf("\n\nSaisie du chemin du fichier a lire : \n" );
  62.         scanf("%s",tempon1);
  63.         strcpy(p1, tempon1);
  64.         in=testchemin(p1); // lancement fonction de test du chemin avec passage du chemins en argument d'appel
  65. };
  66.  while (out==0)
  67. {
  68.         printf("\n\nSaisie du chemin du fichier a ecrire : \n" );
  69.         scanf("%s",tempon2);
  70.         strcpy(p2,tempon2);
  71.         out=testchemin(p2); // lancement fonction de test du chemin avec passage du chemins en argument d'appel
  72. };
  73. };
  74. //=====================================================================================================================================
  75. int testchemin(char * p42)   //fonction de test du chemin entre
  76. {
  77. FILE *fichiertest;    //definition pointeur pour fichier teste  
  78. fichiertest=fopen(p42,"rb" );  //ouverture du fichier binaire teste en mode lecture seule binaire
  79. long savepos, size;
  80. if(fichiertest==0)  //verification accessibilitee du fichier d'entree
  81.         {
  82.   printf("\n\n--- /!\\ ERREUR D'OUVERTURE DU FICHIER : < %s > /!\\---\n\n",p42);
  83.   return 0;  //instruction retourne 0 si fichier innexistant
  84.  }
  85. else
  86.         {
  87.             //definition de la taille du fichier binaire quad il existe  
  88.   savepos = ftell(fichiertest);          // sauvegarder la position dans le fichier  
  89.   fseek(fichiertest, 0, SEEK_END);       // aller en fin du fichier
  90.   size = ftell(fichiertest);             // lire la taille du fichier
  91.   fseek(fichiertest, savepos, SEEK_SET); // rétablir la position initiale dans le fichier
  92.   printf("\nla taille du fichier est %d octets \n",size);
  93.             fclose(fichiertest);  //fermeture du fichier binaire teste
  94.             return 1;   //instruction retourne 1 quand le fichier existe
  95.  }
  96. };
  97. //=====================================================================================================================================
  98. void dessin()
  99. {
  100. printf("    ,,\n" );
  101. printf("   `\"\"*$b..\n" );
  102.     printf("        \"\"*$o.\n" );
  103.     printf("            \"$$o.\n" );
  104.     printf("              \"*$$o.\n" );
  105.     printf("                 \"$$$o.\n" );
  106.     printf("                   \"$$$$bo...       ..o:\n" );
  107.     printf("                     \"$$$$$$$$booocS$$$    ..    ,.\n" );
  108.     printf("                  \".    \"*$$$$SP     V$o..o$$. .$$$b\n" );
  109.     printf("                   \"$$o. .$$$$$o. ...A$$$$$$$$$$$$$$b\n" );
  110.     printf("             \"\"bo.   \"*$$$$$$$$$$$$$$$$$$$$P*$$$$$$$$:\n" );
  111.     printf("                \"$$.    V$$$$$$$$$P\"**\"\"*\"\'   VP  * \"l\n" );
  112.     printf("                  \"$$$o.4$$$$$$$$X\n" );
  113.     printf("                   \"*$$$$$$$$$$$$$AoA$o..oooooo..           .b\n" );
  114.     printf("                          .X$$$$$$$$$$$P\"\"     \"\"*oo,,     ,$P\n" );
  115.     printf("                         $$P\"\"V$$$$$$$:    .        \"\"*****\"\n" );
  116.     printf("                       .*\"    A$$$$$$$$o.4;      .\n" );
  117.     printf("                            .oP\"\"   \"$$$$$$b.  .$;\n" );
  118.     printf("                                     A$$$$$$$$$$P\n" );
  119.     printf("                                     \"  \"$$$$$P\"\n" );
  120.     printf("                                         $$P*\"\n" );
  121.     printf("                                        .$\"\n" );
  122.     printf("                                        \"\n" );
  123.     printf("\n" );
  124. };
  125. //=====================================================================================================================================
  126. //=====================================================================================================================================
  127. void main(void)  //PGM principale
  128. { /*definition des variables*/
  129. char fice[150],fics[150];
  130. int choix,quite=0,a=0;
  131. long i=600000000;
  132. double duree;
  133. float limite=0;
  134. clock_t debut, fin; //variables pour format clock_t
  135. printf("************************************************************************\n" );
  136. printf("*                              Chronometre                             *\n" );
  137. printf("************************************************************************\n" );
  138. printf("BLAZIT_J / D'ESTE_F\n" );
  139. printf("\nProgramme debute " );
  140. dateGM();  //appel fonction date gmtime
  141. while (quite==0)
  142. {
  143.  dessin(); //appel fonction dessin
  144.  printf("----------------------------------------------------------------------\n" );
  145.  printf("|     Choix du mode du chronometre\n" );
  146.  printf("----------------------------------------------------------------------\n" );
  147.         printf("[1] - chronometrage d'une boite noire\n[2] - Respect de la duree d'execution de la boite noire a une consigne\n[3] - Quiter\n\n-> " );
  148.  if (scanf("%d",&choix) == 1) //on verifie qu'un nombre a bien été rentré pour le choix du mode du chronometre
  149.  {
  150.   /*  saisie reussie  */
  151.   if(choix==1)
  152.   {
  153.    choix=0;
  154.    saisie(fice,fics); // appel fonction de saisie des chemins
  155.    debut=clock();   // releve du temps avant que la fonction ne s'execute
  156.    boite_noire(fice,fics); // lancement fonction "boite noire" avec passage des chemins en argument d'appel
  157.    fin=clock(); // releve du temps apres que la fonction se soit executee
  158.    duree=(double)(fin-debut); //calcul de la duree d'execution
  159.    Affichage_resultat(debut,fin,duree); //appel fonction d'affichage des resultats du chrono
  160.    system("PAUSE" );
  161.   }
  162.   if (choix==2)
  163.   {
  164.    choix=0;
  165.    saisie(fice,fics); // appel fonction de saisie des chemins
  166.    printf("\nLimite de temps d'execution de la fonction en secondes ?\n" );
  167.    scanf("%f",&limite);
  168.    while(a!=5) //boucle de validation de la saisie du temps de limite d'éxécution (nombre réel)
  169.    {
  170.     if (scanf("%f",&limite) == 0) //test de la conformité du format de la saisie
  171.     {
  172.      /* echec de la saisie */
  173.      printf("\n/!\\ ECHEC DANS LE FORMAT DE LA SAISIE (format X ou X.Y secondes) /!\\\n--Refaire la saisie--" );
  174.      int c;
  175.      while ( ((c = getchar()) != '\n') && c != EOF); //vidage du flux d'entree
  176.     }
  177.     else {a=5;}/*  saisie reussie  */
  178.    }
  179.    a=0; //remise a 0 de la variable a
  180.    limite=(limite*CLOCKS_PER_SEC); //conversion temps en seconde -> top horloge
  181.    printf("\n" );
  182.    debut=clock();   // releve du temps avant que la fonction ne s'execute
  183.    boite_noire(fice,fics); // lancement fonction "boite noire" avec passage des chemins en argument d'appel
  184.    fin=clock(); // releve du temps apres que la fonction se soit executee
  185.    duree=(double)(fin-debut); //calcul de la duree d'execution
  186.    Affichage_resultat(debut,fin,duree); //appel fonction d'affichage des resultats du chrono
  187.    if (limite-duree<0)
  188.     printf("\n--LIMITE DE TEMPS D'EXECUTION DEPASSEE --\n de %6.0f top horloge soit %f secondes \n",(duree-limite),((duree-limite)/CLOCKS_PER_SEC));   //affichage de la duree de depassement de la boite noire
  189.    else printf("\n-- LIMITE DE TEMPS D'EXECUTION RESPECTEE --\n marge de %6.0f top horloge soit %f secondes \n\n",(limite-duree),((limite-duree)/CLOCKS_PER_SEC)); //affichage de la marge de temps de la boite noire
  190.    system("PAUSE" );
  191.   }
  192.   if (choix==3)
  193.   {         
  194.    quite=1; //on peut quiter le programme
  195.    printf("\nProgramme termine " );
  196.    dateGM();  //appel fonction date gmtime
  197.    system("PAUSE" );
  198.   }
  199.  }
  200.  else
  201.  {
  202.   /* echec de la saisie */
  203.   printf("\n/!\\ ECHEC DE LA SAISIE /!\\\n" );
  204.   int c;
  205.   while ( ((c = getchar()) != '\n') && c != EOF);  //vidage du flux
  206.   system("PAUSE" );
  207.  }
  208.  printf("\n\n\n\n" );
  209. };
  210. };


Message édité par j-d le 27-05-2006 à 03:29:19

---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6770
Mossieur P​ropre
Posté le 27-05-2006 à 10:37:49  profilanswer
 

- le main doit retourner un entier (code de sortie. Déclare-le en int, et fais un return 0; à la fin).
 
- Pour la dernière erreur, rajoute un retour à la ligne à la fin de ton fichier
 
EDIT > et si c'est du C, appelle-le truc.c, pas truc.cpp ...

Message cité 1 fois
Message édité par Mossieur Propre le 27-05-2006 à 10:38:15

---------------
Forever Yoko in my heart. | http://www.phoenixfr.org - réseau IRC francophone | knexos xstephx a dit : "blabla"
n°6771
j-d
pire que Mc Giver
Posté le 27-05-2006 à 10:57:40  profilanswer
 

Mossieur Propre a écrit :

- le main doit retourner un entier (code de sortie. Déclare-le en int, et fais un return 0; à la fin).
 
- Pour la dernière erreur, rajoute un retour à la ligne à la fin de ton fichier
 
EDIT > et si c'est du C, appelle-le truc.c, pas truc.cpp ...


 
ça y est j'ai corrigé.
pour le nom de fichier ça viens de Visual C++ qui fait pas la différence entre les fichiers C et C++
 
 
http://blazit.tm.free.fr/Chrono_V9_final.c


---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6772
Mossieur P​ropre
Posté le 27-05-2006 à 11:03:47  profilanswer
 

----------------------------------------------------------------------
|     Choix du mode du chronometre
----------------------------------------------------------------------
[1] - chronometrage d'une boite noire
[2] - Respect de la duree d'execution de la boite noire a une consigne
[3] - Quiter
 
-> 1
 
 
Saisie du chemin du fichier a lire :
/home/mp/Chrono_V9_final.c
 
la taille du fichier est 10670 octets
 
 
Saisie du chemin du fichier a ecrire :
/home/mp/test
 
la taille du fichier est 0 octets
 
 
BOITE NOIRE !
 
Nombre de cycle d'horloge par secondes : 1000000
Fonction se lance a :  10000 top horloge
Fonction se termine a :  10000 top horloge
 
Temps d'execution de la fonction :     0 top horloge soit 0.000000 secondes
sh: PAUSE: command not found


 
d'ailleurs :

mp@thoraddhanshell:/home/mp$ gcc -Wall Chrono_V9_final.c
Chrono_V9_final.c: In function `Affichage_resultat':
Chrono_V9_final.c:48: warning: int format, long int arg (arg 2)
Chrono_V9_final.c: In function `testchemin':
Chrono_V9_final.c:120: warning: int format, long int arg (arg 2)
Chrono_V9_final.c: In function `main':
Chrono_V9_final.c:165: warning: unused variable `i'


 
:D
 
(le -Wall ça claque :D )


Message édité par Mossieur Propre le 27-05-2006 à 11:04:13

---------------
Forever Yoko in my heart. | http://www.phoenixfr.org - réseau IRC francophone | knexos xstephx a dit : "blabla"
n°6773
j-d
pire que Mc Giver
Posté le 27-05-2006 à 12:31:37  profilanswer
 

donc la commande PAUSE n'existe pas sous UNIX. OK je vais changer ça (mais par quoi ? ->va faloir que je cherche )
Pour les variables inutilisée s'est normale; s'est ma marque de fabrique (reste plein de vieux morceaux de codes qui servent plus)
 


---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6774
Mossieur P​ropre
Posté le 27-05-2006 à 13:04:59  profilanswer
 

j-d a écrit :

donc la commande PAUSE n'existe pas sous UNIX. OK je vais changer ça (mais par quoi ? ->va faloir que je cherche )


 
une fonction maison ? genre une boucle infinie qui ne fait rien qui tourne tant qu'une touche n'a pas été pressée
 

j-d a écrit :


Pour les variables inutilisée s'est normale; s'est ma marque de fabrique (reste plein de vieux morceaux de codes qui servent plus)


 
y'a pas que ça, y'a des soucis de types aussi


---------------
Forever Yoko in my heart. | http://www.phoenixfr.org - réseau IRC francophone | knexos xstephx a dit : "blabla"
n°6775
j-d
pire que Mc Giver
Posté le 27-05-2006 à 13:31:02  profilanswer
 

les soucis de type passe bien sous visual c++ (s'est juste un message d'avertissement me disant que je perd des infos); cela viens de quand je traduit des entier long en double (y'a de la perte mais s'est pas grave)


---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6776
Deadog
Dain Bramaged
Posté le 28-05-2006 à 00:03:32  profilanswer
 

tu les traduit pas en double mais en entier (oui, le %d n'est pas explicite)
fait un %ld de souvenir pour être correct à ce niveau la.
 
-> tu ne vérifie pas ce que renvoie tes fopen et fclose
-> tu fais des scanf pour lire une chaîne de caractère potentiellement infinie pour la mettre dans une zone mémoire limité (150 caract) : c'est ce qu'on appel un dépassement de capacité. Utilie fgets ou une syntaxe meilleur mais plus complexe de scanf pour éviter cela.
-> bien que tu l'ai corigé, le "void main(void)" c'est vraiment ideux ! Le C n'autorise que 2 prototypes pour le main : "int main (void);" et "int main (int, char **);"
-> "fice, fics" c'est pas très explicite comme nom :D plutôt qqlch du genre "fic_in, fic_out" ou la même chose en français ;)
-> "else    {a=5;}" ça c'est moche. Suis la syntaxe que tu utilises ailleurs, à savoir chaque élément sur une ligne
-> tes if sur "choix", soit tu fait un else if, soit utilise un switch


Message édité par Deadog le 28-05-2006 à 00:04:09
n°6777
j-d
pire que Mc Giver
Posté le 28-05-2006 à 00:39:49  profilanswer
 

Citation :

-> "fice, fics" c'est pas très explicite comme nom :D plutôt qqlch du genre "fic_in, fic_out" ou la même chose en français ;)


 
fice -> fichier entrée
fics -> fichier sortie
 :D  :D  sur le coup s'était logique pour moi
 

Citation :

-> tes if sur "choix", soit tu fait un else if, soit utilise un switch


j'ai essayé l'instruction switch, le compilateur en pas voulu, après 1H de combat j'ai laissé tombé (il est chiant visual c++)
 

Citation :

tu fais des scanf pour lire une chaîne de caractère potentiellement infinie pour la mettre dans une zone mémoire limité (150 caract) : c'est ce qu'on appel un dépassement de capacité. Utilie fgets ou une syntaxe meilleur mais plus complexe de scanf pour éviter cela.


je suis novice en C; on a utilisé ça a l'école, ça marchait bien, le prof m'a dit que ça suffirai, j'ai pas cherché plus loin (je suis dans une école d'aéronautique, aérospaciale et système embarqué -> la programation n'est pas notre fort)
 

Citation :

tu ne vérifie pas ce que renvoie tes fopen et fclose


je l'ai fait pour tester si les fichiers existaient au départ; après comme ce n'est pas le but du programme, je suis partis du principe que rien ne bougerai (le but du programme est de chronométrer la boite noire; j'ai déjà surpassé ce qui était demandé par le prof en faisant un début de gestion des erreures). Mais il est vrai qu'en toute rigueure j'aurai dut le faire.
 

Citation :

-> "else    {a=5;}" ça c'est moche. Suis la syntaxe que tu utilises ailleurs, à savoir chaque élément sur une ligne


un reste d'une précedente version du code (je sais plus ce qu'il y avait mais s'est resté au cas où)
 

Citation :

-> bien que tu l'ai corigé, le "void main(void)" c'est vraiment ideux ! Le C n'autorise que 2 prototypes pour le main : "int main (void);" et "int main (int, char **);"


Mes légères notion de C datent d'il y a 2 ans (sous la contrainte !) depuis j'ai eut du C++ (que je déteste), de l'assembleur (marrant mais prise de tête), le basic Ti (spécial faire bosser la caltos à sa place en TD ou en DS) => j'ai un peu tout mélangé, ce qui peut donner des forme étranges (et encore y'a 3 mois de boulot là, au début s'était vraiment horrible :D ).
 
dernière version du code source

Code :
  1. //################################################################
  2. //#               Chronometre V10 final                          #
  3. //################################################################
  4. //BLAZIT Jean-Denis
  5. //D'ESTE Fabien
  6. #include<time.h>
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<string.h>
  10. const char *NomJourSemaine[] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}; //pour fonction date
  11. const char *NomMois[] = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"}; // pour fonction date
  12. //=====================================================================================================================================
  13. void boite_noire(char * p1,char * p2) // p1 adresse fichier source, p2 adresse fichier de destination
  14. {
  15. FILE* fichierin;  //definition pointeur pour fichier d'entree
  16.     FILE* fichierout;  //definition pointeur pour fichier de sortie
  17. char tempo[512];  //definition d'un tempon sous la forme d'un tableau de caractere
  18. int NbLu;
  19.  
  20. printf("%s","\n\nBOITE NOIRE !\n\n" );
  21. fichierin=fopen(p1, "rb" ); //ouverture fichier source en lecture seule bianire
  22.  
  23. fichierout=fopen(p2, "wb" ); //ouverture fichier destination en mode ecriture seule binaire
  24. while((NbLu=fread(tempo, 1, 512, fichierin)) != 0) //lecture de 512 blocs de taille 1 octet du fichier binaire et stockage dans tempo, NbLu = nombre de blocs réellement lus
  25. {
  26.  fwrite(tempo, 1, NbLu, fichierout);    //   écriture de NbLu blocs de 1 octet stocké dans tempo vers fichierout
  27. }
  28. fclose(fichierout);  //fermeture fichier de sortie
  29. fclose(fichierin);  //fermeture fichier d'entrée
  30. };
  31. //=====================================================================================================================================
  32. void Affichage_resultat(clock_t debut,clock_t fin,double duree) //affichage des resultats du test
  33. {
  34. printf("Nombre de cycle d'horloge par secondes : %d\n",CLOCKS_PER_SEC);
  35. printf("Fonction se lance a : %6.0f top horloge\n",(double)(debut));
  36. printf("Fonction se termine a : %6.0f top horloge\n",(double)(fin));
  37. printf("\nTemps d'execution de la fonction :%6.0f top horloge soit %f secondes \n",duree,(duree/CLOCKS_PER_SEC));
  38. };
  39. //=====================================================================================================================================
  40. void dateGM(void)  //donne la date avec la fonction gmtime
  41. {
  42.    time_t timestamp;
  43.    struct tm *t;
  44.    // Lecture de la date et de l'heure
  45.    timestamp = time (NULL);
  46.    t = gmtime(&timestamp);
  47.    // Affiche la date et l'heure courante
  48.    printf ("le %s ", NomJourSemaine[t -> tm_wday]);
  49.    printf (" %02u %s %04u ", t -> tm_mday, NomMois[t -> tm_mon], 1900 +t -> tm_year);
  50.    printf ("a %02uh %02umin %02usec.\n", t -> tm_hour+2, t -> tm_min, t -> tm_sec);
  51.    printf ("\n" );
  52. };
  53. //=====================================================================================================================================
  54. void saisie(char * p1,char * p2)
  55. {
  56. char tempon1[150],tempon2[150];
  57. int in=0,out=0;
  58. int testchemin(char * p42); //declaration de la fonction testchemin
  59. while (in==0)
  60. {
  61.  printf("\n\nSaisie du chemin du fichier a lire : \n" );
  62.         scanf("%s",tempon1);
  63.         strcpy(p1, tempon1);
  64.         in=testchemin(p1); // lancement fonction de test du chemin avec passage du chemins en argument d'appel
  65. };
  66.  while (out==0)
  67. {
  68.         printf("\n\nSaisie du chemin du fichier a ecrire : \n" );
  69.         scanf("%s",tempon2);
  70.         strcpy(p2,tempon2);
  71.         out=testchemin(p2); // lancement fonction de test du chemin avec passage du chemins en argument d'appel
  72. };
  73. };
  74. //=====================================================================================================================================
  75. int testchemin(char * p42)   //fonction de test du chemin entre
  76. {
  77. FILE *fichiertest;    //definition pointeur pour fichier teste  
  78. fichiertest=fopen(p42,"rb" );  //ouverture du fichier binaire teste en mode lecture seule binaire
  79. long savepos, size;
  80. if(fichiertest==0)  //verification accessibilitee du fichier d'entree
  81.         {
  82.   printf("\n\n--- /!\\ ERREUR D'OUVERTURE DU FICHIER : < %s > /!\\---\n\n",p42);
  83.   return 0;  //instruction retourne 0 si fichier innexistant
  84.  }
  85. else
  86.         {
  87.             //definition de la taille du fichier binaire quad il existe  
  88.   savepos = ftell(fichiertest);          // sauvegarder la position dans le fichier  
  89.   fseek(fichiertest, 0, SEEK_END);       // aller en fin du fichier
  90.   size = ftell(fichiertest);             // lire la taille du fichier
  91.   fseek(fichiertest, savepos, SEEK_SET); // rétablir la position initiale dans le fichier
  92.   printf("\nla taille du fichier est %d octets \n",size);
  93.             fclose(fichiertest);  //fermeture du fichier binaire teste
  94.             return 1;   //instruction retourne 1 quand le fichier existe
  95.  }
  96. };
  97. //=====================================================================================================================================
  98. void dessin()
  99. {
  100. printf("    ,,\n" );
  101. printf("   `\"\"*$b..\n" );
  102.     printf("        \"\"*$o.\n" );
  103.     printf("            \"$$o.\n" );
  104.     printf("              \"*$$o.\n" );
  105.     printf("                 \"$$$o.\n" );
  106.     printf("                   \"$$$$bo...       ..o:\n" );
  107.     printf("                     \"$$$$$$$$booocS$$$    ..    ,.\n" );
  108.     printf("                  \".    \"*$$$$SP     V$o..o$$. .$$$b\n" );
  109.     printf("                   \"$$o. .$$$$$o. ...A$$$$$$$$$$$$$$b\n" );
  110.     printf("             \"\"bo.   \"*$$$$$$$$$$$$$$$$$$$$P*$$$$$$$$:\n" );
  111.     printf("                \"$$.    V$$$$$$$$$P\"**\"\"*\"\'   VP  * \"l\n" );
  112.     printf("                  \"$$$o.4$$$$$$$$X\n" );
  113.     printf("                   \"*$$$$$$$$$$$$$AoA$o..oooooo..           .b\n" );
  114.     printf("                          .X$$$$$$$$$$$P\"\"     \"\"*oo,,     ,$P\n" );
  115.     printf("                         $$P\"\"V$$$$$$$:    .        \"\"*****\"\n" );
  116.     printf("                       .*\"    A$$$$$$$$o.4;      .\n" );
  117.     printf("                            .oP\"\"   \"$$$$$$b.  .$;\n" );
  118.     printf("                                     A$$$$$$$$$$P\n" );
  119.     printf("                                     \"  \"$$$$$P\"\n" );
  120.     printf("                                         $$P*\"\n" );
  121.     printf("                                        .$\"\n" );
  122.     printf("                                        \"\n" );
  123.     printf("\n" );
  124. };
  125. void pause(void)
  126. {
  127. int c;
  128. char cha[20];
  129. while ( ((c = getchar()) != '\n') && c != EOF);  //vidage du flux
  130. printf("\n-> ENTRER pour continuer <-" );
  131. scanf("%s",cha);
  132. };
  133. //=====================================================================================================================================
  134. //=====================================================================================================================================
  135. int main(void)  //PGM principale
  136. { /*definition des variables*/
  137. char fice[150],fics[150];
  138. int choix,quite=0,a=0;
  139. long i=600000000;
  140. double duree;
  141. float limite=0;
  142. clock_t debut, fin; //variables pour format clock_t
  143. printf("************************************************************************\n" );
  144. printf("*                              Chronometre                             *\n" );
  145. printf("************************************************************************\n" );
  146. printf("BLAZIT_J / D'ESTE_F\n" );
  147. printf("\nProgramme debute " );
  148. dateGM();  //appel fonction date gmtime
  149. while (quite==0)
  150. {
  151.  dessin(); //appel fonction dessin
  152.  printf("----------------------------------------------------------------------\n" );
  153.  printf("|     Choix du mode du chronometre\n" );
  154.  printf("----------------------------------------------------------------------\n" );
  155.         printf("[1] - chronometrage d'une boite noire\n[2] - Respect de la duree d'execution de la boite noire a une consigne\n[3] - Quiter\n\n-> " );
  156.  if (scanf("%d",&choix) == 1) //on verifie qu'un nombre a bien été rentré pour le choix du mode du chronometre
  157.  {
  158.   /*  saisie reussie  */
  159.   if(choix==1)
  160.   {
  161.    choix=0;
  162.    saisie(fice,fics); // appel fonction de saisie des chemins
  163.    debut=clock();   // releve du temps avant que la fonction ne s'execute
  164.    boite_noire(fice,fics); // lancement fonction "boite noire" avec passage des chemins en argument d'appel
  165.    fin=clock(); // releve du temps apres que la fonction se soit executee
  166.    duree=(double)(fin-debut); //calcul de la duree d'execution
  167.    Affichage_resultat(debut,fin,duree); //appel fonction d'affichage des resultats du chrono
  168.    pause();
  169.   }
  170.   if (choix==2)
  171.   {
  172.    choix=0;
  173.    saisie(fice,fics); // appel fonction de saisie des chemins
  174.    printf("\nLimite de temps d'execution de la fonction en secondes ?\n" );
  175.    scanf("%f",&limite);
  176.    while(a!=5) //boucle de validation de la saisie du temps de limite d'éxécution (nombre réel)
  177.    {
  178.     if (scanf("%f",&limite) == 0) //test de la conformité du format de la saisie
  179.     {
  180.      /* echec de la saisie */
  181.      printf("\n/!\\ ECHEC DANS LE FORMAT DE LA SAISIE (format X ou X.Y secondes) /!\\\n--Refaire la saisie--" );
  182.      int c;
  183.      while ( ((c = getchar()) != '\n') && c != EOF); //vidage du flux d'entree
  184.     }
  185.     else {a=5;}/*  saisie reussie  */
  186.    }
  187.    a=0; //remise a 0 de la variable a
  188.    limite=(limite*CLOCKS_PER_SEC); //conversion temps en seconde -> top horloge
  189.    printf("\n" );
  190.    debut=clock();   // releve du temps avant que la fonction ne s'execute
  191.    boite_noire(fice,fics); // lancement fonction "boite noire" avec passage des chemins en argument d'appel
  192.    fin=clock(); // releve du temps apres que la fonction se soit executee
  193.    duree=(double)(fin-debut); //calcul de la duree d'execution
  194.    Affichage_resultat(debut,fin,duree); //appel fonction d'affichage des resultats du chrono
  195.    if (limite-duree<0)
  196.     printf("\n--LIMITE DE TEMPS D'EXECUTION DEPASSEE --\n de %6.0f top horloge soit %f secondes \n",(duree-limite),((duree-limite)/CLOCKS_PER_SEC));   //affichage de la duree de depassement de la boite noire
  197.    else printf("\n-- LIMITE DE TEMPS D'EXECUTION RESPECTEE --\n marge de %6.0f top horloge soit %f secondes \n\n",(limite-duree),((limite-duree)/CLOCKS_PER_SEC)); //affichage de la marge de temps de la boite noire
  198.    pause();
  199.   }
  200.   if (choix==3)
  201.   {         
  202.    quite=1; //on peut quiter le programme
  203.    printf("\nProgramme termine " );
  204.    dateGM();  //appel fonction date gmtime
  205.    pause();
  206.   }
  207.  }
  208.  else
  209.  {
  210.   /* echec de la saisie */
  211.   printf("\n/!\\ ECHEC DE LA SAISIE /!\\\n" );
  212.   int c;
  213.   while ( ((c = getchar()) != '\n') && c != EOF);  //vidage du flux
  214.   pause();
  215.  }
  216.  printf("\n\n\n\n" );
  217. };
  218. return 0;
  219. };

Message cité 1 fois
Message édité par j-d le 28-05-2006 à 00:41:58

---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6778
j-d
pire que Mc Giver
Posté le 28-05-2006 à 00:47:08  profilanswer
 

quand je pense que personne n'a remarqué ma magouille a 2 balles :

Code :
  1. printf ("a %02uh %02umin %02usec.\n", t -> tm_hour+2, t -> tm_min, t -> tm_sec);


le tm_hour+2 car l'affichage de l'heure avais 2H de retard (voila comment se débarasser d'un problème; moi je jette le bébé avec l'eau du bain, la baignoire et la salle de bain ;))


Message édité par j-d le 28-05-2006 à 00:48:03

---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6779
Deadog
Dain Bramaged
Posté le 28-05-2006 à 01:01:46  profilanswer
 

j-d a écrit :


fice -> fichier entrée
fics -> fichier sortie
 :D  :D  sur le coup s'était logique pour moi


 
c'est logique, oui, c'est juste pas lisible sauf par celui qui l'a écrit :D
 

j-d a écrit :


j'ai essayé l'instruction switch, le compilateur en pas voulu, après 1H de combat j'ai laissé tombé (il est chiant visual c++)


 
normallement :

Code :
  1. switch(choix) {
  2.   case 1:
  3.     ...
  4.   break;
  5.   case 2:
  6.     ...
  7.   break;
  8.   default:
  9.     ..
  10. }


 
je pense que VC++ est capable comprendre un switch de base, même si c'est en effet un compilo de merde :D
 

j-d a écrit :


je suis novice en C; on a utilisé ça a l'école, ça marchait bien, le prof m'a dit que ça suffirai, j'ai pas cherché plus loin (je suis dans une école d'aéronautique, aérospaciale et système embarqué -> la programation n'est pas notre fort)


 
ça c'est pas d'bol, parceque en système embarqué, il faut être très bon en prog (je veux dire par la qu'il faut savoir les capacité et les limites des ptites bêtes que sont les µP :D
 

j-d a écrit :


je l'ai fait pour tester si les fichiers existaient au départ; après comme ce n'est pas le but du programme, je suis partis du principe que rien ne bougerai (le but du programme est de chronométrer la boite noire; j'ai déjà surpassé ce qui était demandé par le prof en faisant un début de gestion des erreures). Mais il est vrai qu'en toute rigueure j'aurai dut le faire.


 
c'est jamais le but d'un programme de faire de la gestion d'erreur ^^
 
 
pour ta manip avec les heures, c'est normal, ces fonctions la te refilent l'heure gmt, donc pour nous qui sommes en GMT+2, faut rajouter 2 aux heures :D

n°6780
CryoGen
Powered by kitkat©
Posté le 28-05-2006 à 03:58:33  profilanswer
 

le mieux serai de prendre en compte la timezone... comment se prendre la tête pour 3 fois rien mais en hiver ton prog aura un decalage de +1 heure :D
moi qui habite au MALI je suis à l'heure GMT toute l'année c'est plus simple [:grut]


---------------
I am the bone of my sword...
n°6782
j-d
pire que Mc Giver
Posté le 28-05-2006 à 15:57:54  profilanswer
 

Citation :

le mieux serai de prendre en compte la timezone... comment se prendre la tête pour 3 fois rien mais en hiver ton prog aura un decalage de +1 heure :D  


 
oups j'avais zappé cette partie là (j'suis mauvais sur ce coup  :D ). Mais s'est a cause de windows et de la mise a l'heure automatique; on finit par plus faire attention ...


---------------
plus le bricolage est foireux et merdique, plus il faut le faire
"Se tromper est humain, mais pour vraiment mettre le bordel, il faut y ajouter un ordinateur."
n°6924
Devil's_Ti​ger
SOCA power
Posté le 01-07-2006 à 01:47:07  profilanswer
 

Salut J-D, si tu as enfin une version stable, j'ai un pti Suse 10.0 qui n'attent que ton cs finale...

n°7055
G r i b o ​u i l l e
House Music
Posté le 20-10-2006 à 21:27:13  profilanswer
 

Puisque les UP de 3 mois sont autorisés,
Testé sous OS 10.4.8 avec GCC 3 pas de prob... Mise à part les remarques déjà faites.
 

Code :
  1. PowerMac-G5-de-Julien:~/Desktop julien$ gcc -Wall Chrono_V9_final.c
  2. Chrono_V9_final.c: In function 'testchemin':
  3. Chrono_V9_final.c:120: warning: format '%d' expects type 'int', but argument 2 has type 'long int'
  4. Chrono_V9_final.c: In function 'main':
  5. Chrono_V9_final.c:165: warning: unused variable 'i'
  6. PowerMac-G5-de-Julien:~/Desktop julien$ chmod 777 a.out
  7. PowerMac-G5-de-Julien:~/Desktop julien$ ./a.out
  8. ************************************************************************
  9. *                              Chronometre                             *
  10. ************************************************************************
  11. BLAZIT_J / D'ESTE_F
  12. Programme debute le Vendredi  20 Octobre 2006 a 21h 24min 25sec.
  13.     ,,
  14.    `""*$b..
  15.         ""*$o.
  16.             "$$o.
  17.               "*$$o.
  18.                  "$$$o.
  19.                    "$$$$bo...       ..o:
  20.                      "$$$$$$$$booocS$$$    ..    ,.
  21.                   ".    "*$$$$SP     V$o..o$$. .$$$b
  22.                    "$$o. .$$$$$o. ...A$$$$$$$$$$$$$$b
  23.              ""bo.   "*$$$$$$