Bonjour,![]()
Je voudrai savoir comment compter le nombre de colonnes d'une matrice à 2 dimensions. Est-ce qu'il n'y aurait pas une fonction en perl pour le faire ??
Merci d'avance.
Bonjour,![]()
Je voudrai savoir comment compter le nombre de colonnes d'une matrice à 2 dimensions. Est-ce qu'il n'y aurait pas une fonction en perl pour le faire ??
Merci d'avance.
Et bien, tout dépend de ta définition de matrice et ton implémentation en Perl...
Pour être plus claire je vais donner un exemple :
Voici ce que j'appelle une matrice : elle contient 6 lignes et 5 colonnes. En remplissant une matrice à partir d'un fichier contenant un tableau je peux compter le nombre de lignes mais je ne vois pas comment compter le nombre de colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @matrice = ( [Well, Detector, Task, genes, Ct], [1, np1, Prkcc-Rn00440861_m1, Target, 31 547 514], [2, np1, Esr1-Rn00562166_m1, Target, 30 263 426], [3, np1, Vav1-Rn00562712_m1, Target, 30 333 063], [4, np1, Prkar2a-Rn00709403_m1, Target, 26 796 638], [5, np1, Nos1-Rn00583793_m1, Target, 3 283 813] );
Pour ce qui est de l'implémentation je ne vois pas ce que tu veux dire ...![]()
essaies peut etre ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for ($i=0;$i<scalar@matrice;$i++) { print "ma ligne $i fait ".scalar(@{$matrice[$i])})." colonnes\n"; ## scalar(@{$matrice[$i]}) te donnera le nombre de colonnes de ta ligne $i }
Bonjour,
Ta matrice est donc définie comme une liste de références de tableaux. Avec le formalisme que tu utilises, rien ne permet de s'assurer que tu as un nombre identique de colonnes pour chaque ligne. Tu peux donc faire une estimation du nombre de colonnes, en te basant sur la 1° ligne, mais ce n'est pas une garantie que les autres lignes en comportent autant... En revanche, tu peux savoir le nombre de lignes avec assurance:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 use strict; use warnings; my @matrice = ( ['Well', 'Detector', 'Task', 'genes', 'Ct'], [1, 'np1', 'Prkcc-Rn00440861_m1', 'Target', '31 547 514'], [2, 'np1', 'Esr1-Rn00562166_m1', 'Target', '30 263 426'], [3, 'np1', 'Vav1-Rn00562712_m1', 'Target', '30 333 063'], [4, 'np1', 'Prkar2a-Rn00709403_m1', 'Target', '26 796 638'], [5, 'np1', 'Nos1-Rn00583793_m1', 'Target', '3 283 813'] ); # nombre de lignes my $rows = scalar(@matrice); # estimation du nombre de colonnes basée uniquement sur la 1° ligne my $cols = scalar(@{ $matrice[0]} ); # affichage printf("la matrice à %d lignes\n", ($rows)); printf("la matrice à %d colonnes\n", ($cols) ); # affichage du nombre réél de colonnes pour chaque ligne print("\n\n"); foreach my $row (@matrice) { my $cols = scalar(@{$row}); printf("* ligne avec %d colonnes\n", ($cols)); }
Partager