Dev C++
Immma
-
Saiid -
Saiid -
Bonjour,
Je suis coincée sur un exo sur le Dev C++, je manipule pas vraiment ce logiciel, juste des ABC qui me font défaut devant ce probleme : Ecrire un programme qui vérifie que le contenu du fichier est trié par rapport au jour, mois et an..
Quelqu'un peut avoir l'aimable attention de m'eclaircir davantage le probleme sinon des solutions pareilles ou la solution exacte carrément du probleme :d je vous serai reconnaissante ;)
Merci d'avance.
Je suis coincée sur un exo sur le Dev C++, je manipule pas vraiment ce logiciel, juste des ABC qui me font défaut devant ce probleme : Ecrire un programme qui vérifie que le contenu du fichier est trié par rapport au jour, mois et an..
Quelqu'un peut avoir l'aimable attention de m'eclaircir davantage le probleme sinon des solutions pareilles ou la solution exacte carrément du probleme :d je vous serai reconnaissante ;)
Merci d'avance.
A voir également:
- Arnaud veut s'adresser directement à son ami marc dans un message sur facebook. quel symbole doit-il placer dans son message devant le nom d'utilisateur de marc ?
- Comment recuperer un message supprimé sur whatsapp - Guide
- Message supprimé whatsapp - Guide
- Epingler un message whatsapp - Accueil - Messagerie instantanée
- Message absence thunderbird - Guide
- Message du pere noel gratuit whatsapp - Accueil - Messagerie instantanée
5 réponses
En fait je n'ai pas très bien compris l'énoncé. Peux-tu nous donner quelques exemples (brefs) de fichiers, et le résultat que tu attends.
Bonne chance
Bonne chance
Bon franchement je sias pas qui a écrit le morceau de code que tu as donné mais c'est pas top. Voici les corrections que je te propose :
On compile, on exécute :
Bonne chance
#include <stdio.h> int main(){ // une fonction DOIT avoir un type de retour, eventuellement void FILE *fp; /* déclaration */ char nom_fichier[30], nom_pers[30]; int c,nb_enreg; /* première partie : créer et remplir le fichier */ printf("entrez le nom du fichier à créer : "); scanf("%s",nom_fichier); fp = fopen(nom_fichier, "w"); /* write */ if (fp){ // Verifier que le fichier peut être ouvert en écriture printf("nombre d'enregistrements à créer : "); scanf("%d",&nb_enreg); for(c=0;c<nb_enreg;++c){ // boucle for plus élégante que le while printf("entrez le nom de la personne : "); scanf("%s",nom_pers); fprintf(fp,"%s\n",nom_pers); } fclose(fp); // le fermer si et seulement si il est ouvert }else{ fprintf(stderr,"le fichier %s ne peut pas être ouvert",nom_fichier); } return 0; // un main return 0 quand tout va bien }
On compile, on exécute :
(mando@polgara) (~) $ gcc -W -Wall plop.c (mando@polgara) (~) $ ./a.out entrez le nom du fichier à créer : plop.txt nombre d'enregistrements à créer : 5 entrez le nom de la personne : a1 entrez le nom de la personne : a2 entrez le nom de la personne : a3 entrez le nom de la personne : a4 entrez le nom de la personne : a5 (mando@polgara) (~) $ cat plop.txt a1 a2 a3 a4 a5
Bonne chance
Merci amigo pour ton assistance...
Le fichier que je t'ai envoyé, écrit sur C++ était un exemple d'un autre probleme qui n'a rien avoir avec celui là car l'enoncé qui fait l'objet de ma présence sur le forum "commentcamarche" c'est plutot pour rédiger un fichier où c'est trié par rapport au jour, mois et an... donc le principe je pense est le même mais le théme est différent... tu me suis ??
Donc, c'est voir comment réussir un fichier sur le language C++ qui vérifie un tri en jour, mois et an...
Est ce évident??
je cesse de chercher des solutions et des idées et je tombe vraiment pas sur la clé... Si t'as une idée??
Merci encore une fois mamiemando..
Le fichier que je t'ai envoyé, écrit sur C++ était un exemple d'un autre probleme qui n'a rien avoir avec celui là car l'enoncé qui fait l'objet de ma présence sur le forum "commentcamarche" c'est plutot pour rédiger un fichier où c'est trié par rapport au jour, mois et an... donc le principe je pense est le même mais le théme est différent... tu me suis ??
Donc, c'est voir comment réussir un fichier sur le language C++ qui vérifie un tri en jour, mois et an...
Est ce évident??
je cesse de chercher des solutions et des idées et je tombe vraiment pas sur la clé... Si t'as une idée??
Merci encore une fois mamiemando..
Hum le plus simple ce serait d'avoir un champ jour, un champ mois etc... En fait c'est assez facile à faire avec des std::map.
Ce qui donne à l'exécution
Donc là tu vois qu'on peut ordonner des événements dans l'ordre qui nous arrange avec la structure trier_cle. Ainsi si le but est de trier un fichier, il suffit de le lire, de le trier sur le même principe, et de le réecrire. S'il s'agit juste de vérifier qu'il est trié, il suffit de lire les lignes les unes après les autres, et de vérifier que la clé nouvellement lue est toujours "supérieure" à la précédente.
Bonne chance
#include <iostream> #include <set> #include <map> #include <string> typedef unsigned annee_t; typedef unsigned mois_t; typedef unsigned jour_t; typedef std::string data_t; // La clé struct cle_t{ annee_t annee; mois_t mois; jour_t jour; }; // la relation d'ordre entre les différentes clés struct trier_cle{ inline bool operator()(const cle_t & k1,const cle_t & k2){ return k1.annee < k2.annee || (k1.annee == k2.annee && k1.mois < k2.mois) || (k1.annee == k2.annee && k1.mois == k2.mois && k1.jour < k2.jour); } }; typedef std::map<cle_t,data_t,trier_cle> datas_t; int main(){ datas_t datas; unsigned nb_evenements; // Demander les evenements std::cout << "Nb evenements ? "; std::cin >> nb_evenements; for(unsigned int i=0;i<nb_evenements;++i){ struct cle_t k; data_t d; std::cout << "Evenement [" << (i+1) << '/' << nb_evenements << ']' << std::endl; std::cout << "Annee ? "; std::cin >> k.annee; std::cout << "Mois ? "; std::cin >> k.mois; std::cout << "Jour ? "; std::cin >> k.jour; std::cout << "Evenement ? "; std::cin >> d; datas[k] = d; } // Les afficher de manière ordonnée datas_t::const_iterator dit(datas.begin()),dend(datas.end()); for(;dit!=dend;++dit){ const cle_t & k = dit->first; const data_t & d = dit->second; std::cout << k.jour << '/' << k.mois << '/' << k.annee << '\t' << d << std::endl; } return 0; }
Ce qui donne à l'exécution
(mando@polgara) (~) $ ./a.out Nb evenements ? 3 Evenement [1/3] Annee ? 2005 Mois ? 11 Jour ? 2 Evenement ? plop Evenement [2/3] Annee ? 1983 Mois ? 03 Jour ? 18 Evenement ? naissance Evenement [3/3] Annee ? 2007 Mois ? 05 Jour ? 08 Evenement ? maintenant 18/3/1983 naissance 2/11/2005 plop 8/5/2007 maintenant
Donc là tu vois qu'on peut ordonner des événements dans l'ordre qui nous arrange avec la structure trier_cle. Ainsi si le but est de trier un fichier, il suffit de le lire, de le trier sur le même principe, et de le réecrire. S'il s'agit juste de vérifier qu'il est trié, il suffit de lire les lignes les unes après les autres, et de vérifier que la clé nouvellement lue est toujours "supérieure" à la précédente.
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je cherchais sur le forum et j'ai tombé sur ce programme qui m'interessait moi aussi.
J'ai pris alors la permission de l'utiliser et de l'exécuter sur ma machine, le probleme qui se pose c'est qu'au moment de l'exécution, avant qu'il m'affiche tous les événements ordonnés, ca se ferme... Je sais que c'est l'astuce d'une mauvaise utilisation mais je sais pas pourquoi, puisque je copie le programme tel qu'il est écrit et je l'exécute ... si quelqu'un sait pourquoi, qu'il me secoue avant de se nouer ;)
Je cherchais sur le forum et j'ai tombé sur ce programme qui m'interessait moi aussi.
J'ai pris alors la permission de l'utiliser et de l'exécuter sur ma machine, le probleme qui se pose c'est qu'au moment de l'exécution, avant qu'il m'affiche tous les événements ordonnés, ca se ferme... Je sais que c'est l'astuce d'une mauvaise utilisation mais je sais pas pourquoi, puisque je copie le programme tel qu'il est écrit et je l'exécute ... si quelqu'un sait pourquoi, qu'il me secoue avant de se nouer ;)
voilà un exemple du cours même, j'espère que ca vous aide à m'aider... Merci mamiemando, on se dit à plutard :
#include <stdio.h>
main()
{
FILE *P_FICHIER; /* déclaration */
char NOM_FICHIER[30], NOM_PERS[30];
int C,NB_ENREG, val;
/* Première partie : Créer et remplir le fichier */
printf("Entrez le nom du fichier à créer : ");
scanf("%s", NOM_FICHIER);
P_FICHIER = fopen(NOM_FICHIER, "w"); /* write */
printf("Nombre d'enregistrements à créer : ");
scanf("%d", &NB_ENREG);
C = 0;
while (C<NB_ENREG)
{
printf("Entrez le nom de la personne : ");
scanf("%s", &val);
fprintf(P_FICHIER, "%s\n", val);
C++;
}
fclose(P_FICHIER);
}