begin process at 2012 05 29 10:54:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

éliminer les doublons !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

éliminer les doublons !

jeudi 29 octobre 2009 à 00:30:57 | éliminer les doublons !

jekburn

Membre Club
Bonsoir,

J'ai demandé de l'aide y'a 2 semaines, mais là je suis toujours bloqué !
Please help !
Je cherche à supprimer les doublons que me sort mon programme par n'importe quelle méthode.

Merci de votre aide

windows vista, dev c++




#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.c>

#define FileName "mail.txt" //fichier 65500 ligne max
#define FileName2 "ordre.txt"

char mail[1024];
int randi(int Min, int Max);

int main(int argc, char *argv[], char *envp[]){
int Number;
int Longueur=7;
int i,j;
char *temp;

printf("Nombre de Mail a generer: ");
scanf("%d", &Number);

FILE *File;File=fopen(FileName,"w");
FILE *File2;File2=fopen(FileName2,"w");

for (i=1; i<=Number; i++){
for (j=0; j<Longueur; j++){
switch(randi(1,2)){
case 1 : mail[j]=(char)randi(45,46); break;// symbole négatif
case 2 : mail[j]=(char)randi(95,122);break;
}

}
printf("%s\n",mail);// affiche à l'écran en désordre
//fprintf(File, "%s%s\%s\n", mail);// enregistre dans le fichier en désordre
}
fclose(File);fclose(File2);
system("sort mail.txt>>ordre.txt");//classe par ordre alpha
getch();

}

int randi(int Min, int Max){
return ( Min + ( rand() % (Max - Min+1) ) );
}
jeudi 29 octobre 2009 à 08:15:21 | Re : éliminer les doublons !

Lucky92

Réponse acceptée !
Salut,

J'ai dû modifier les lignes suivantes pour faire marcher ton programme sur mon pc :

Code C/C++ :
#include <conio.h> //au lieu de #include <conio.c>

fprintf(File, "%s\n%s\n", mail , mail );// enregistre dans le fichier en désordre

//l'option -u permet de gérer l'unicité
system("sort -u mail.txt>>ordre.txt");//classe par ordre alpha


Bonne continuation.
jeudi 29 octobre 2009 à 08:31:55 | Re : éliminer les doublons !

Lucky92

Réponse acceptée !
Attention le "sort" n'est pas celui de windows, c'est la commande gnu.
Tu peux le récupérer dans une "install" de cygwin par exemple.
jeudi 29 octobre 2009 à 10:04:47 | Re : éliminer les doublons !

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Plutôt que de faire des trucs gores à coup de "system", il te suffit de coder une fonction sort() qui tri une liste.
Coder une fonction sort n'est pas super dur (regarde tri à bulle, tri insertion, quick sort).
Pour supprimer les doublons, il suffit de mettre chacun des mails générés dans un tableau à chaque fois, et lorsque tu génères un mail, tu vérifies au préalable qu'il n'existe pas dans la liste.

Ne met pas tout dans le fichier, mais génère tes mail dans un tableau. Une fois le tableau trié (il n'y aura pas de doublons si tu vérifies à chaque fois), tu recopies les informations du tableau dans un fichier.

Tu dis développer sous dev-c++, tu fais du C ou du C++ ? En C++, les conteneurs de la STL feraient ce travail pour toi :)
jeudi 29 octobre 2009 à 10:44:01 | Re : éliminer les doublons !

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
En C++ ça donnerais ça:

- Utilisations du conteneur std::set (qui ne fait pas de doublons et tris automatiquement)
- Génération de mail et insertion dans le set
- Recopie du set dans un fichier

Le code (compilé avec gcc sous linux, a peut être adapter légèrement pour windows):
Code C/C++ :
#include <iostream>
#include <iomanip>
#include <set>
#include <cstdlib>
#include <fstream>

/*!
** Get a random number between min and max
**
** @param min The lower limit
** @param max The upper limit
**
** @return A random number
*/
int randi(int min, int max)
{
  return (min + (rand() % (max - min + 1)));
}

/*!
** Generate mail with a given size
**
** @param longueur The size of the mail
**
** @return A random mail
*/
std::string generateMail(int longueur)
{
  char mail[32] = {0};

  for (int j = 0; j < longueur; ++j)
    switch (randi(1, 2))
    {
      case 1:
	mail[j] = randi('-', '.');
	break;
      case 2:
	mail[j] = randi('a', 'z');
	break;
    }

  return mail;
}

/*!
** Fill a set with random mails
**
** @param mail The mail list
** @param nb Number of mail to add
** @param longueur Size of each mail
*/
void genMails(std::set<std::string>& mail, int nb, int longueur)
{
  for (int i = 1; i <= nb; ++i)
    mail.insert(generateMail(longueur));
}

/*!
** Display mails
**
** @param mail The mail list
*/
void displayMail(const std::set<std::string>& mail)
{
  typedef std::set<std::string>::const_iterator iter;
  for (iter it = mail.begin(); it != mail.end(); ++it)
    std::cout << *it << std::endl;
}

/*!
** Copy each mail into a file
**
** @param filename The file where to copy mail
** @param mail The mail list
*/
void copyMailIntoFile(const std::string& filename,
		      const std::set<std::string>& mail)
{
  typedef std::set<std::string>::const_iterator iter;
  std::ofstream file(filename.c_str(), std::ios::out | std::ios::trunc);

  if (!file)
  {
    std::cerr << "Impossible d'écrire dans le fichier" << std::endl;
    return;
  }

  for (iter it = mail.begin(); it != mail.end(); ++it)
    file<< *it << std::endl;

  file.close();
}

/*!
** The entry point :)
**
** @return 0
*/
int main()
{
  int number = 0;
  std::set<std::string> mail;
  const std::string filename = "mail.txt";

  srand(time(NULL));
  std::cout << "Nombre de mail à générer" << std::endl;
  std::cin >> number;
  genMails(mail, number, 7);

//   displayMail(mail);
  copyMailIntoFile(filename, mail);

  return 0;
}

jeudi 29 octobre 2009 à 11:44:01 | éliminer les doublons !

jekburn

Membre Club
Réponse acceptée !
Merci pour votre aide !
Je vais essayé sur ces solutions.
Bonnes continuations


Cette discussion est classée dans : int, include, char, max, min


Répondre à ce message

Sujets en rapport avec ce message

Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l jai un probleme avec ma source!!!!! jai vérifeir et je ne trouve rien...pouvez vous m'aider.... [ par retaks666 ] alors jai veut faire un programme ki génére une suite de caractere d'un nombre donné...et sa marche po... je vous done ma source si vous pouvez m'aide c++ creation d'un fichier texte a nom variable [ par sloaneaaaa ] ben voila je voudrai creer un fichier texte auquel je puisse donner n'importe quel nom ms g des erreurs que je comprend pasle nom de fichier est ds un pb error C2011 par pitié aidé moi [ par neonmix ] Voici mon prog:c'est un garage ki possède des voitures, ces voitures peuvent être "de course" ou "de série" (classe mere voiture, classe fille voiture problème de char [ par minet03 ] Coucoutout le monde, tout d'abord voilà mon code :#include #include #include #include #include #include char *bin_dec(char *binai Probleme avec une source [ par n3m3s1s ] Erreur de code , je copi bien ce que me dit le livre pourtant #include #define MAXLIGNE 1000 int lireligne(char ligne[], char de[]); void copier(ch Problème avec les classes. [ par xelados ] J'ai commencer les classes et j'avoue que je les comprend plus ou moin je ne sais pas exactement c quoi mes erreurs .. mais j'en nais 16 ... Ce que j' Prob avec les sockets [ par Sload ] Bonjour à tous ! Voila mon probleme , j'essaye de develloper un logiciel client/serveur. Je n'en suis qu'au tout début et j'ai déja un probleme lol ! oh non!! [ par bako25 ] Le prog suivant  calcule le nombre des 'e' dans un paragraphe: #include #include< langage C : probleme syntax [ par Keymi ] Bonjour , tous d'abord le but de l'exercice est de faire une fonction permettant de determiner la valeur maximale et minimale d'un tableau de flottant


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,649 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales