lunes, 23 de mayo de 2011

Teoria Semana 05: Intercambio de dos elementos de una arreglo

Problema 01

Intercambie el primer número múltiplo de 3 por el último número múltiplo de 7.

Inicio
2       9       4       6       7       14     10     9
0              1              2              3              4              5              6              7
Fin
2       14     4       6       7       9       10     9
0              1              2              3              4              5              6              7

public void metodo(){

   //1 el primer número múltiplo de 3
   int posMulTres = -1, numMulTres = 0;
           
   for(int i = 0; i<indice; i++){
             if(x[i]%3==0){
                 numMulTres = x[i];
                 posMulTres = i;
                 break;       
         }
    }

   //2 el último número múltiplo de 7.
   int posMulSie =-1, numMulSie = 0 ;

   for(int i = indice-1; i>=0;i--){
             if(x[i]%7==0){
                        posMulSie  = i;
                        numMulSie = x[i];
                        break;
             }
   }
     //3 intercambio

   if(posMulTres == -1)
            imprime("No existe número múltiplo de 3");
   if(posMulSie == -1)
            imprime("No existe número múltiplo de 7");
   if(posMulTres != -1 && posMulSie!= -1){
            x[posMulTres] = numMulSie;
            x[posMulSie] = numMulTres;
   }

}






Problema 02

Inicio
2       12     4       17     7       14     10    
0              1              2              3              4              5              6             
Fin
2       17     4       12     7       14     10    
0              1              2              3              4              5              6             


public void metodo(){
    //1 termino central
    int posCen = 0,  numCen =0;  

    if(posCen %2 !=0){
            posCen = indice/2;   
            numCen = x[posCen];
    }     
    else
            posCen = -1;
    
    //2 el segundo mayor par
    int posPar , numPar = 0, segPar =0;
           
    for(int i = 0; i<indice; i++){
            if(x[i]%2==0 && x[i]>numPar){
                        numPar = x[i];
            }
    }
    for(int i = 0; i<indice; i++){
            if(x[i]%2==0 && x[i]!=numPar && x[i]>segPar){
                        segPar = x[i];
            }
    }
     //3 intercambio

    x[posCen] = segPar;
    x[posPar] = numCen;

}

No hay comentarios:

Publicar un comentario