256
Le logiciel R - Maˆ ıtriser le langage
3 extern "C" {
4 int main () {
5
void combnC ( int * combmat , int * n , int * m );
6
int * n , * m , * combmat , j;
7
double Cnm ;
8
n= new int [1];
9
m= new int [1];
10
n [0]=5;
11
m [0]=3;
12
Cnm =10;
13
combmat = new int [( int ) Cnm * m [0]];
14
combnC ( combmat ,n ,m );
15
for (j =1; j <= Cnm * m [0]; j ++) cout << combmat [j -1] << """;
16 }}
Le symbole ci-dessus indique que l’on doit entrer un espace. Par ailleurs,
on remarque que les indices commencent ` a z´ ero en C/C++, contrairement ` a R
o` u ils commencent ` a 1.
• Cr´ eation de la fonction Fortran
Code Fortran de la sous-routine combnF, disponible dans le fichier http:
//biostatisticien.eu/springeR/combn.f90 :
1 SUBROUTINE combnF ( combmat ,n ,m)
2
3 integer , intent ( in ) :: n ,m
4 integer
:: i ,j ,e ,h , nmmp1 , mp1
5 integer , dimension (m) :: a
6 integer , dimension ( * ), intent ( out ):: combmat
7
8 do i =1 , m
9 a(i )= i
10 end do
11 e =0
12 h=m
13 do i =1 , m
14 combmat (i )= i
15 end do
16 i =2
17 nmmp1 =n -m +1
18 mp1 =m +1
19 do while (a (1) . ne . nmmp1 )
20 if (e < n -h) then
21 h =1
Précédent

- 289/701

Suivant