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
HappyHippyHippo

não está a faltar nada no teu post ? tipo o código ?


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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • 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.