Jump to content
codedprobyte

[Resolvido] Cache em C

Recommended Posts

codedprobyte

Boas pessoal, é o seguinte:

Estou a desenvolver uma Cache em C, que tem de ser configurável. A questão é que o programa está todo implementado e em relação aos outputs que deve gerar, estão todos a corresponder. Porém ao submeter a um site de submissão de programas como é o caso do mooshak, este dá Wrong answer. Alguém pode dar uma vista de olhos por algumas partes e perceber do que se possa vir a tratar?

Cumprimentos

Edited by brunoais
titulo melhorado

Share this post


Link to post
Share on other sites
codedprobyte
int main(int argc, char *argv[]){

   char adress[MAX_SIZE];
   char *s=adress;
   char *w;
   int** matrix;
   int* fifoValues;

   int row, column, k;

   int index, nway, capacity, bloco, tagSize;

   int valido, tag,  b, fifo, posfifo, hit, filled, linhas, linhas2, contador, x, y;

   int adressSize, offsetSize, indexSize;

   fifo=0;
   index=0;
   nway=0;
   capacity=0;
   bloco=0;
   tagSize=0;

   adressSize=DEFAULT_ADRESS_SIZE;
   offsetSize=DEFAULT_OFFSET;
   indexSize=DEFAULT_INDEX;
   bloco=DEFAULT_BLOCO;
   capacity=DEFAULT_CAPACITY;
   nway= DEFAULT_WAYS;

   while(index<argc){

       if(*argv[index]=='W'){
           nway=atoi(argv[++index]);
       }else if(*argv[index]=='S'){
           capacity=atoi(argv[++index]);                    
       }else if(*argv[index]=='B'){
           bloco=atoi(argv[++index]);
           offsetSize= getOffset(bloco);    
       }else if(*argv[index]=='E'){
           adressSize=atoi(argv[++index]);                    
       }

       index++;
   }

   row=getRows(capacity, bloco, nway);                 
   column=(nway*THREE);
   indexSize=getOffset(row);
   tagSize=(adressSize-(offsetSize+indexSize));


   matrix=(int**)malloc(row*sizeof(int*));

   for(linhas=0; linhas<row; linhas++){
       matrix[linhas]=(int*)malloc(column*sizeof(int));
   }

   fifoValues=malloc(row*sizeof(int));



   while(s!=NULL){

       s=fgets(adress, MAX_SIZE, stdin);
       if(s==NULL){
           return 0;        
       }
       b=positionDefault(s, adressSize, offsetSize, indexSize);
       w=malloc(tagSize*sizeof(int));    
       strncpy(w, s, tagSize);
       k=toInt(w);
       free(w);

       valido=0;    
       tag=2;
       posfifo=1;
       hit=0;
       filled=0;


       while(valido*3 < column && filled==0){        
               if((matrix[b][valido*3])==0){

               matrix[b][valido*3]=1;            
               matrix[b][tag]=k;
               (fifoValues[b])++; //fifo++;
               matrix[b][posfifo]=(fifoValues[b]); //fifo;
               filled=1;


               }else if(matrix[b][tag]==k){
                  hit=1;
                  filled=1;
           }


               valido++;    
               tag=tag+3;
               posfifo=posfifo+3;

       }

       posfifo=1;
       contador=4;
       y=posfifo;
       x=matrix[b][posfifo];

       if(filled==0){

           while(contador < column){
               if(x > matrix[b][posfifo+3]){

                       x=matrix[b][posfifo+3];    
                       y=posfifo+3;
                       filled=1;
                     }

               contador+=3;
                     posfifo+=3;
           }

               if(matrix[b][y+1]!=k){

                  matrix[b][y+1]=k;
                  (fifoValues[b])++;
                  matrix[b][y]=(fifoValues[b]);
               }
           else

          hit=1;
       }

       if(hit==0)

              printf("%c\n",'M');
   else

              printf("%c\n",'H');

       }

   for(linhas=0; linhas<row; linhas++){
       free(matrix[linhas]);
   }

   free(matrix);

   return 0;    

}

Edited by thoga31
tags CODE + GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

se eu meter isso num ficheiro e enviar para um cmopilar, isso compila ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
codedprobyte

Já está resolvido, obrigado pessoal, podem eliminar se possível.

Boa programação!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.