Allocation memoire

Amouna29 Messages postés 3 Statut Membre -  
Amouna29 Messages postés 3 Statut Membre -
Bonjour , j'ai un soucis avec mon code C
j'ai une matrice de 4000 ligne et 14000 colonnes dont laquel je veux comparer chaque colonne avec l'autre mais j'arrive pas de la charger en mémoire
y a t-il des astuces pour se faire ?
Merciii d'avance

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Peux-tu montrer ton code ? :-).

    Note : merci d'utiliser la balise "code c".
    Exemple : <code c>ici tu mets ton code</code>
    Cdlt,
    0
  2. Amouna29 Messages postés 3 Statut Membre
     
    
    #include <stdlib.h> 
    #include <string.h> 
    #include <stdint.h> 
    #include <stdio.h>     
    // les focnction et les procedure
    //la fonction combainaison
    // la fonction factoriel  
     
    
    
    
    /////////////////////// main /////////////////////////////////
    
    int main(int argc, char *argv[])
    {
      int n=4026 ; int nbc=14700;
      int m1[n][nbc]; int repeter[nbc];
      int i=0; int j=0; 
     FILE *filee;
      filee=fopen("base.txt", "r");// pour charger la matrice de données 
    
     for(i = 0; i < n; i++)
      {
          for(j = 0; j <nbc; j++) 
          {
      //Use lf format specifier, %c is for character
           if (!fscanf(filee, "%d",&m1[i][j])) 
               break;
          // mat[i][j] -= '0'; 
           //printf("%6d",m1[i][j]); //Use lf format specifier, \n is for new line
          // m1[ii][jj]=mat1[ii][jj];
    }//printf("\n");
    
      }
      fclose(filee);
    //////////////////////////////////////////////////////
    int occurence[3]={0}; 
    
      for(j=0;j<nbc;j++)
    {
      for(i=0;i<n;i++)
        {
          
        if (m1[i][j]==0)
           occurence[0]=occurence[0]+1;// nombre d'occurence de zero
         else 
           if  (m1[i][j]==1)
               occurence[1]=occurence[1]+1;// nombre d'occurence de 1
           else 
              occurence[2]=occurence[2]+1;// nombre d'occurence de -1
    
    
        } 
    
     //printf("%6d",occurence[0]);printf("%6d",occurence[1]);printf("%6d",occurence[2]);printf("\n");
    
    //////////// trouver l'occurence maximal
    int max=occurence[0]; int valmax=0;int k=0;
    //printf("%6d",max);printf("\n");
    
      if (occurence[1]>max) {max=occurence[1]; valmax=1;}
      if (occurence[2]>max) {max=occurence[2]; valmax=2;}
     ////////////////////////////// min 
    int min=occurence[0]; int valmin=0;
    //printf("%6d",max);printf("\n");
    
      if (occurence[1]<min) {min=occurence[1]; valmin=1;}
      if (occurence[2]<min) {min=occurence[2]; valmin=2;}
    
    /////////////////////////////////////trouver la moyenne 
    int val=0;
    if(valmin==0){
                  if(valmax==1) val=2;
                   else val=1;
                 }
    
    if(valmin==1){
                  if(valmax==0) val=2;
                   else val=0;
                 }
     
    if(valmin==2){
                  if(valmax==1) val=0;
                   else val=1;
                 }
    // val pour la moyenne
    if(val==0) repeter[j]=0;
    if(val==1) repeter[j]=1;
    if(val==2) repeter[j]=-1;
    //printf("\n");
    //printf("%6d",max);printf("\n");
    //printf("%6d",val);printf("\n");
    
    occurence[0]=0;occurence[1]=0;occurence[2]=0;
    }// fin du parcour de la collonne 
    int kk=0;
    printf("\n");
    printf("\n");
    for(kk=0;kk<nbc;kk++)printf("%6d",repeter[kk]);printf("\n");
    
    
    
    }// fin main
    
    
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonjour,

      int m1[n][nbc]; int repeter[nbc];
      Ce n'est pas bon.. n et nbc sont des int, tu dois mettre des nombres dans les tableaux. Donc soit en dur, soit avec #define.

      Tu as un oublié un return 0;

      Sinon, pour le problème, je te conseille de passer par malloc()... Et si ça ne fonctionne pas, tu peux peut-être passer par des tableaux de pointeurs...
      0
    2. Amouna29 Messages postés 3 Statut Membre
       
      Merci fiddy pour la réponse je vais essayer
      0