Extraire des données dans une matrice

bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009
- 9 juin 2009 à 17:32
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
- 4 juil. 2009 à 00:40
bonjour, voilà mon pb:
je dois créer une matrice de traffic avec java: cette matrice calcule la somme de duréé de l'appel entre l'appelant et l'appelé.j'ai des fichiers text dans lesquels il y a les différents données sur l'appelant et l'appelé et la durée de leurs appels, c pourquoi dans un premier temps, faudra que j'extrait les données dont g besoin et les mettre dans cette matrice puis cette matrice doit calculer la durée entre l'appelant et l'appelé.
merci de bien vouloir m'aider, c urgent.
A voir également:

109 réponses

cs_neone
Messages postés
96
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
7 mars 2011

9 juin 2009 à 17:53
Bonjour,
donc si j'ai bien compris , ton programme doit lire des fichiers textes et les mettre dans des matrices. pour lire un fichier txt les choix c pas ce qui manque!!! maint faudra juste pense a la structure de ton fichier txt genre tu les écris ligne par ligne ou colone par colone. met un example de fichier txt si tu ve. pour essayer de voir l'algo.
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
9 juin 2009 à 17:54
Salut,
pas plus de précisions ? pas de morceau de code?

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

9 juin 2009 à 18:46
slt;
oui exactement , pour lire les fichiers texts j'arrive à le faire, mais pour mettre les données dont g besoins dans une matrice, cela j'arrive pas à le faire.
il me faut un algorithme en java qui me permettra d'extraire juste les données dont g besoin de ces fichiers et les mettre sous forme d'une matrice;  dans cette matrice faudra que j'aille le numero de l'appelant et celui de l'appelé et entre l'appelant et l'appelé inserer la durée de leur appels.  je dispose d'un fichier qui contient l'ura de chaque plage de numéro et un autre fichier qui contient l'ura qui correspond à chaque centre, et un autre fichier qui contient le numéro de l'appelant et celui de l'applé et la durée et d'autre champs. donc le principe c'est de voir à quelle plage  le numéro  il appartient puis une fois on a detecté à quelle plage il appartient, faudra voir l'ura correspondant, une fois on detecte l'ura de l'appelant et de l'appelé la case entre eux doit etre remplie par leur durée d'appel.
je sais pas si j'étais assez clair.
merci bcp c gentil à vous de m'aider.

       
                  
0
cs_neone
Messages postés
96
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
7 mars 2011

10 juin 2009 à 10:46
Bonjour,
peux tu mettre les fichier sur un lien pour que je puisse voir.
boncourage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
10 juin 2009 à 13:15
Bonjour,

Pas de langage SMS s'il te plait.

"avec java"

Si c'est avec java, la question est au mauvais endroit : ici tu es sur cppfrance.

[ déplacé sur javafr ]
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

10 juin 2009 à 16:23
bonjour,
en fait je sais pas comment faire passer  ici ,les fichiers text avec lesquels je travaille.
est ce qu'il est imperatif de voir les fichiers pour me proposer un code?
merci encore pour votre aide.
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
10 juin 2009 à 16:26
Copier/coller !!
il nous faut une structure pour travailler sinon on peut partir dans tout les sens.

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

10 juin 2009 à 17:13
ce code pour lire mon fichier, j'ai fait la meme chose  pour les deux autre fichiers

import java.io.*;
import java.util.StringTokenizer;
public class CatFichier {
 public static void main(String[] args) throws IOException{
  
BufferedReader fichier = new BufferedReader(new FileReader("E://Documents and Settings//Ibtissame//Mes documents/Mes fichiers reçus//CAA.txt"));
String str;
str = fichier.readLine( );
 while (str != null){
   System.out.println(str);
   str = fichier.readLine( );
   
  }
}}

pour le contenu des fichiers :
mon fichiers ura:
ce fichier contient les plages( seuil min et seuil max) à laquelle apartient chaque operateur; pour UR001 et UR002  jusqu'à UR512 ( pour le moment je travaille juste sur un échantillon d'ura UR001 et UR002), ces ura corresponde au fix.
Ura               ;seuil_min        ;seuil_max;

UR001        ;028210000 ;028233999;
UR002        ;028292000 ;028292999;
mobile IAM ;010330000 ;078999999;
intern            ;00000        ;022920999;
meditel         ;020000000 ;082039999;
wana           ;038000000 ;088199999;




mon fichier centre:
indique pour chaque URA correspond un centre au quel appartient soit l'appelant ou l'appelé ( c'est Ura sont juste un echantillon):

 Ura  ; centre
UR001;Agadir Al Qods DMS
UR002;Aït Baha (U.DMS)
UR003;Ait Melloul 1 (U.DMS)
UR004;Assa (U.DMS)
UR005;Bensargao (U.DMS)

 
 
mon fichiers CAA:

c'est un fichiers qui contient plusieurs champs mais dont g besoin  se sont trois champs:
N_ORG et N_DEST et durée

N_ORIG   ; ID_SWITCH_ORIG  ;N_DEST   ;TYPE_DEST ;ID_SWITCH_DEst; D_SEBCOM       ;durée; Type_Ticket ;ID_jour; ;ID_SEMAINE;ID_Heure;

028877888 ;DDDDD                   ;052836003 ; 01               ;                           ; 20081001091449 ; 36   ;90              ; 20081001 ;2008100040; 9            ;
035271374; FFFF                       ;074387974 ; 01               ;                           ;20081001084525; 1      ;90               ;20081001;2008100040;11             ;

Donc comme je l'ai expliqué, il faudra dans un premier lieu tester le numéro appelant et appelé à quelle plage ils appartiennent pour determiner l'urade chacun d'eux, puis determiné la durée de leur appels et pou cela il faut extraire ces donnée qu'il nous faut de ces fichiers, donc ma question:
comment on fait pour extraire les données dont on a besoin parmis d'autre.
comment on fera le test pour savoir à quelle plage appartient chaque numéro appelant et appelé
et puis comment mettre le resultat sous forme de matrice de tel façon à avoir dans la case la durée d'appel entre l'appelant et l'appelé.

merci pour votre aide.
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
10 juin 2009 à 17:54
En ce qui concerne ton fichier CAA, ça serait bien si tu pouvais le convertir au format XML, les données seront accessibles plus facilement.

Sinon (pour tout tes fichiers) tu peux toujours lire une ligne entière et utilisée la fonction Split d'un string sur le caractère ';'. Tu récupères uniquement les données qui t'intéresse par la suite pour le fichier CAA (pour le reste tu devras récupérer toute les données).
Le nombre de lignes pouvant varié, utilise des tableaux dynamiques!

Pour connaître l'ura, tu n'as qu'à vérifier si le numéro est supérieur au seuil max (tant qu'il l'est, tu parcours ton tableau). Quand le numéro est inférieur, tu connaitras ta plage (et l'indice du tableau aussi normalement).
Il te suffira d'aller dans le tableau où tes données concernant les centres sont stocké et tu vas directement à l'indice que tu as récupéré.

PS: Perso je ferais peut être un seul tableau pour regrouper les données des ura, du genre :
tab[0] = ur001
tab[1] = seuil min
tab[2] = seuil max
tab[3] = centre

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

10 juin 2009 à 20:50
salut;
 stp mais comment recuperer juste les champs dont j'ai besoin parmi d'autre?
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
10 juin 2009 à 21:33
La structure de ton fichier est la même soit :
N_ORIG   ; ID_SWITCH_ORIG  ;N_DEST   ;TYPE_DEST
;ID_SWITCH_DEst; D_SEBCOM       ;durée; Type_Ticket ;ID_jour;
;ID_SEMAINE;ID_Heure;

Tu lis les lignes

String str;
str = fichier.readLine( );
 
while (str != null){
   System.out.println(str);
string[] tab = str.Split(...) // tu récupèreras un tableau du style
//tab[0] = N ORIG
//tab[1] = ID_SWITCH_ORIG ainsi de suite

   str = fichier.readLine( );
  }
dans ta boucle tu n'as plus qu'à récupérer ce qui t'intéresse, dans ton cas tu vas récupérer au moins tab[0] puisque tu as besoin du numéro d'origine...

Mais avec la structure XML c'est toujours mieux, mais enfin il faudra faire des traitements supplémentaires

understood?

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

11 juin 2009 à 09:43
bonjour,
oui merci je vais essayer .
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

11 juin 2009 à 15:23
bonjour,
j'ai fait cela pour recuperer tous le fichier,         
import java.io.*;
import java.util.StringTokenizer;
public class CatFichier {
    public static void main(String[] args) throws IOException{
        
BufferedReader fichier = new BufferedReader(new FileReader("E://Documents and Settings//Ibtissame//Mes documents/Mes fichiers reçus//CAA.txt"));
String str;
str = fichier.readLine( );
    while (str != null){
            System.out.println(str);
            str = fichier.readLine( );
            
        }
    
    
    
}
}

alors si je veux récuperer juste les champs qui m'interesse faudra que je les insère sous forme de
                                      tab[0]= ID_ORG

                                     tab[1]=ID_DEST ...... ect 

et puis je fais appel au champs dont j'ai besoin, c'est ça?
je vois pas trop comment jvais faire pour l'algorithme.
merci pour votre aide et pacience.
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
11 juin 2009 à 16:57
 Salut
tu dois spliter le string str avec le caractère ';', sa te renverra un tableau de la sorte tab[0]= ID_ORG... bien sûr ID_ORG sera remplacé par le numéro de télépehone après tu n'auras plus qu'à récuper les valeurs dans le tableau des indices qui t'intéresse

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

11 juin 2009 à 17:25
salut;
voilà c'est ce que j'ai fait:

import java.io.*;
import java.util.StringTokenizer;
public class CatFichier {
    public static void main(String[] args) throws IOException{
       
BufferedReader fichier = new BufferedReader(new FileReader("E://Documents and Settings//Ibtissame//Mes documents/Mes fichiers reçus//CAA.txt"));
String str;
str = fichier.readLine( );
    while (str != null){
        String tab[]=str.split(";");
        System.out.println(tab[2]);
        System.out.println(tab[0]);
        System.out.println(tab[6]);
        str = fichier.readLine( );
        }
   

   
}
}

et voilà ce que j'obtiens:

N_DEST      
N_ORIG  
 durée
052836003   
028877888
 36  
065847546   
028877888
 17  
072333568   
037520986
 14  
074387978   
035271374
 1   
013340125   
035271374
 101 
079080890   
035271374
 87  
0033494998162
037520986
 60  
0034677071567
028877888
 11  
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at CatFichier.main(CatFichier.java:12)
comment faire pour obtenir chacune dans une colonne , et non pas dans une seule colonne.

merci encore pour votre aide précieuse.
0
cs_neone
Messages postés
96
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
7 mars 2011

11 juin 2009 à 17:29
Bonjour,
l'instruction de permet de lire la ligne entiére chose qui facilite pas les choses str = fichier.readLine( ).  ben on est sous java quand meme!!!!!. donc tu défini une classe a toi qui contiendra tes données de ton choix et avec ça tu rajoutera une méthode qui te permet de passer d'un string a un objet de la classe, enfin un set(string). donc c le traitement qu'il faut faire c de séparer tes données dans la ligne , chose qui est déja faite avec ";". ce qu'on appel parser en java.
Boncourage
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
11 juin 2009 à 17:41
Ton erreur indique que ton indice dépasse les limites du tableau, toutes les lignes sont-elles vraiment identique ?
Maintenant que tu as plus ou moins compris le principe à toi de jouer !!

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

11 juin 2009 à 18:43
slt, merci bcp pour votre aide.
en fait j'ai pas trop compris ce que vous m'avez dit, shui debutante en jave , ce qui fait il m'est difficil de comprendre rapidement certaines choses.
je crée une classe qui contient quoi exactement?
et concernant les lignes elle sont pas identique, comment faire  alors?
merci encore de bien vouloir m'éclaircir.
0
cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
1
12 juin 2009 à 03:00
Si ton fichier n'a pas toujours ce format :
N_ORIG   ; ID_SWITCH_ORIG  ;N_DEST   ;TYPE_DEST ;ID_SWITCH_DEst; D_SEBCOM       ;durée; Type_Ticket ;ID_jour; ;ID_SEMAINE;ID_Heure;

 eh bien pour ton traitement c'est râpé !!!
Si une ligne contient moins d'éléments tu risques de sélectionner de mauvaises données ou bien sortir tout simplement générer ton erreur...

PS: n'oublie pas d'écrire correctement sur le forum

The possible meet the impossible to become the possimpible !!
0
bettysatte
Messages postés
58
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
2 juillet 2009

12 juin 2009 à 09:55
bonjour,
j'arrive à afficher tout le fichier, et même n'importe quelle ligne que je veux, le problème qui se pose c'est quand je choisis mes champs que je veux qu'il s'affiche:

str = fichier.readLine( );
    while (str != null){
        String tab[]=str.split(";");
        System.out.println(tab[2]);
        System.out.println(tab[0]);
        System.out.println(tab[6]);
        str = fichier.readLine( );
        }

il y'a un chevauchement , c'est à dire que mes trois colonnes choisies, s'affichent en une seule, est ce que je dois créer des classes pour chaque fichier où j'identifie chaque champs et puis je fais appel à ces champs?! si c'est oui comment faire s'il vous plait?
ps: est ce que c'est interdit d'abréger les  mots en ce forum?
0