begin process at 2012 05 30 19:06:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Trie liste de saisit sans passer par une insertion


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

Trie liste de saisit sans passer par une insertion

samedi 1 juin 2002 à 12:26:32 | Trie liste de saisit sans passer par une insertion

Nexouille

Voila je dois a partir d'un fichier prendre toute les ip qui s'y trouve dont on ne connait pas le nombre et je dois compter combien de fois elles apparaisent.Je dois comparer l'ip avec la date ,si l'ip est apparut avant 3min ,l'ip ne doit pas etre compter donc je ne peux pas trier en inserant un élément mon probleme est comment faire alors pour trier les IP.


//voila les structure que j'utilise

struct Date //structure dont on a besoin dans la structure requete
{
char Periode[12];
int Heure;
int Minute;
int Seconde;
char Jour[9];
};


struct adresse
{
int AdresseIP[4]; //taille maximum d'une adresse ip
Date Daterequette;
struct adresse *suiv; //liste chain‚e
};

typedef adresse *Requette;

**********************************************************
Fonction de saisit des donnees a partir d'un fichier log
void saisitIP(char fichier[],Requette *debut)
{

FILE *logfile;

int j;

char site;
char toto[14];
char tmp;
char Buffer[512];

*debut=NULL;

Requette Visite=NULL;

flushall();

logfile=fopen("nomdufichier","r");

while(!feof(logfile)) //on scanne tout le fichier
{
j=0;
Visite=(Requette)malloc(sizeof(*Visite));

fscanf(logfile,"%d.%d.%d.%d - - [",&Visite->AdresseIP[j],&Visite->AdresseIP[j+1],&Visite->AdresseIP[j+2],&Visite->AdresseIP[j+3]);

fgets(Visite->Daterequette.Periode,12,logfile); //on scanne la date

Visite->suiv=*debut;
*debut=Visite;

}


fclose(logfile);
}


//fonction qui compare si la liste est trié
Ben elle est crée est marche si la liste est triée





Voila j'aimerais savoir comment je peux trier les ip pour les ranger dans l'ordre croissant car j'ai aussi une fonctin qui affiche et qui compte ainsi les ip en prenant en compte la durée de 3Min mais je sais pas comment faire pour les trier. Je pensais les inserer et les classer comme ca mais je suis embete a cause de la prise en compte de la duree de visite (si <3min alors faut pas compter) donc je pense trie la liste apres toute la saisit mais comment faire ca sans passer par des tableaux vue qu'on ne connait pas le nombre d'ip.
Je met pas tout mon programme vu que c'est un projet qu'on a a rendre pas envie de me le faire pomper ^^
Merci
dimanche 2 juin 2002 à 10:55:44 | Re : Trie liste de saisit sans passer par une insertion

fced42

Moi personnelement, j'utiliserais une liste chaine pour represente ta liste triée. Pour ajouter une ip dans ta liste(tu prend que celle dont <3min), il faut faire une recherche. tu t'arretes lorsque tu es arrivé a la fin de ta liste, ou lorsque ton ip a inserer est inferieur a l'element courant. Mais pour que tu puisse l'inserer, il faut que tu retiennes le predecesseur. En algo ca donnerais :

ins = ton adresseIp a insere
a,p,b : des adresses

a <- la tete de ta liste
p <- nil
tantque a /= nil et ins > a.adresseIp faire
p <- a
a <- a.suiv
fintantque
allouer(b)
b->adresseIP = ins
selon p
p = nil : {tu inseres en tete}
b.suiv = nil
tete de liste = b
p /= nil : {tu insere avec le predecesseur}
b->suiv = p->suiv
p.suiv = b
finselon

Voila, j'espere que j'ai ete clair et que j'ai pas fais trop de fautes. Si t'as du mal a comprendre dis le moi, je t'expliquerai mieux.






-------------------------------
Réponse au message :
-------------------------------

Voila je dois a partir d'un fichier prendre toute les ip qui s'y trouve dont on ne connait pas le nombre et je dois compter combien de fois elles apparaisent.Je dois comparer l'ip avec la date ,si l'ip est apparut avant 3min ,l'ip ne doit pas etre compter donc je ne peux pas trier en inserant un élément mon probleme est comment faire alors pour trier les IP.


//voila les structure que j'utilise

struct Date //structure dont on a besoin dans la structure requete
{
char Periode[12];
int Heure;
int Minute;
int Seconde;
char Jour[9];
};


struct adresse
{
int AdresseIP[4]; //taille maximum d'une adresse ip
Date Daterequette;
struct adresse *suiv; //liste chain,e
};

typedef adresse *Requette;

**********************************************************
Fonction de saisit des donnees a partir d'un fichier log
void saisitIP(char fichier[],Requette *debut)
{

FILE *logfile;

int j;

char site;
char toto[14];
char tmp;
char Buffer[512];

*debut=NULL;

Requette Visite=NULL;

flushall();

logfile=fopen("nomdufichier","r");

while(!feof(logfile)) //on scanne tout le fichier
{
j=0;
Visite=(Requette)malloc(sizeof(*Visite));

fscanf(logfile,"%d.%d.%d.%d - - [",&Visite->AdresseIP[j],&Visite->AdresseIP[j+1],&Visite->AdresseIP[j+2],&Visite->AdresseIP[j+3]);

fgets(Visite->Daterequette.Periode,12,logfile); //on scanne la date

Visite->suiv=*debut;
*debut=Visite;

}


fclose(logfile);
}


//fonction qui compare si la liste est trié
Ben elle est crée est marche si la liste est triée





Voila j'aimerais savoir comment je peux trier les ip pour les ranger dans l'ordre croissant car j'ai aussi une fonctin qui affiche et qui compte ainsi les ip en prenant en compte la durée de 3Min mais je sais pas comment faire pour les trier. Je pensais les inserer et les classer comme ca mais je suis embete a cause de la prise en compte de la duree de visite (si <3min alors faut pas compter) donc je pense trie la liste apres toute la saisit mais comment faire ca sans passer par des tableaux vue qu'on ne connait pas le nombre d'ip.
Je met pas tout mon programme vu que c'est un projet qu'on a a rendre pas envie de me le faire pomper ^^
Merci
dimanche 2 juin 2002 à 12:23:53 | Re : Trie liste de saisit sans passer par une insertion

Nexouille

T'a été tres clair je vais essayer comme tu dit
Merci pour ta réponse



-------------------------------
Réponse au message :
-------------------------------

Moi personnelement, j'utiliserais une liste chaine pour represente ta liste triée. Pour ajouter une ip dans ta liste(tu prend que celle dont <3min), il faut faire une recherche. tu t'arretes lorsque tu es arrivé a la fin de ta liste, ou lorsque ton ip a inserer est inferieur a l'element courant. Mais pour que tu puisse l'inserer, il faut que tu retiennes le predecesseur. En algo ca donnerais :

ins = ton adresseIp a insere
a,p,b : des adresses

a <- la tete de ta liste
p <- nil
tantque a /= nil et ins > a.adresseIp faire
p <- a
a <- a.suiv
fintantque
allouer(b)
b->adresseIP = ins
selon p
p = nil : {tu inseres en tete}
b.suiv = nil
tete de liste = b
p /= nil : {tu insere avec le predecesseur}
b->suiv = p->suiv
p.suiv = b
finselon

Voila, j'espere que j'ai ete clair et que j'ai pas fais trop de fautes. Si t'as du mal a comprendre dis le moi, je t'expliquerai mieux.






-------------------------------
Réponse au message :
-------------------------------

Voila je dois a partir d'un fichier prendre toute les ip qui s'y trouve dont on ne connait pas le nombre et je dois compter combien de fois elles apparaisent.Je dois comparer l'ip avec la date ,si l'ip est apparut avant 3min ,l'ip ne doit pas etre compter donc je ne peux pas trier en inserant un élément mon probleme est comment faire alors pour trier les IP.


//voila les structure que j'utilise

struct Date //structure dont on a besoin dans la structure requete
{
char Periode[12];
int Heure;
int Minute;
int Seconde;
char Jour[9];
};


struct adresse
{
int AdresseIP[4]; //taille maximum d'une adresse ip
Date Daterequette;
struct adresse *suiv; //liste chain,e
};

typedef adresse *Requette;

**********************************************************
Fonction de saisit des donnees a partir d'un fichier log
void saisitIP(char fichier[],Requette *debut)
{

FILE *logfile;

int j;

char site;
char toto[14];
char tmp;
char Buffer[512];

*debut=NULL;

Requette Visite=NULL;

flushall();

logfile=fopen("nomdufichier","r");

while(!feof(logfile)) //on scanne tout le fichier
{
j=0;
Visite=(Requette)malloc(sizeof(*Visite));

fscanf(logfile,"%d.%d.%d.%d - - [",&Visite->AdresseIP[j],&Visite->AdresseIP[j+1],&Visite->AdresseIP[j+2],&Visite->AdresseIP[j+3]);

fgets(Visite->Daterequette.Periode,12,logfile); //on scanne la date

Visite->suiv=*debut;
*debut=Visite;

}


fclose(logfile);
}


//fonction qui compare si la liste est trié
Ben elle est crée est marche si la liste est triée





Voila j'aimerais savoir comment je peux trier les ip pour les ranger dans l'ordre croissant car j'ai aussi une fonctin qui affiche et qui compte ainsi les ip en prenant en compte la durée de 3Min mais je sais pas comment faire pour les trier. Je pensais les inserer et les classer comme ca mais je suis embete a cause de la prise en compte de la duree de visite (si <3min alors faut pas compter) donc je pense trie la liste apres toute la saisit mais comment faire ca sans passer par des tableaux vue qu'on ne connait pas le nombre d'ip.
Je met pas tout mon programme vu que c'est un projet qu'on a a rendre pas envie de me le faire pomper ^^
Merci



Cette discussion est classée dans : liste, ip, char, visite, logfile


Répondre à ce message

Sujets en rapport avec ce message

Sniffing - raw socket [ par krum ] J'ai essayé de coder un programme capable de me donner la description de l'en tete IP et TCP des packets que je reçois d'une certaine IP,mais lorsque problème d'execution!!! [ par theidiot ] Bonjours,je suis débutant en programmation et je suis présentement dans l'apprentissage des tableaux dynamiques.J'ai fait un carnet d'adresse(avec les Socket -> Ip [ par CyberP ] Comment obtenir l'adresse ip (sous forme de char* : xxx.xxx.xxx.xxx) à partir d'un objet socket (je ne veut pas d'objet SOCK_ADDR mais une ip en char* Comparaison avec StrCmp() [ par lcampeur ] Bonjour, je souhaite effectuer une comparaison, j'ai un programme contenant une structure borne contenant: 1- char NomBorne [20] 2- char IP[16]M conversion int en char* [ par arwenita ] Encore un petit problème en C++...Dans mon programme, je voudrais afficher une liste de nombres (premiers), que je récupère de la fonction Crible(n).L socket RAW ICMP - fonctionnement et implémentation... [ par smirnoff69ice ] Salut, Je suis sur un projet et je dois simuler l'envoi de paquets ICMP sur le réseau. J'ai déjà fait un petit programme de test (repris en partie dep envoi de paquet ip [ par sendouda ] Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso urgent:envoi paquet [ par sendouda ] Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso pb abonnement pour socket multicast [ par Spiffou ] bonjour à tous,je rencontre un problème de programmation réseau sur les sockets (c++ sous visual studio).Je cherche à programmer une classe de gestion Sélection d'octet [ par dayvid75014 ] Bonjour à tous, Je récupère les octets de mon fichier vidéo dans un buffer "Buffer[]" et je voudrais sélectionner les octets 0x47 et je n'y a


Nos sponsors


Sondage...

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 : 0,468 sec (4)

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