Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - LaiaxanIV

#21
Perdona que no te haya respondido antes.

static void mergeSort(int[] A) {
       if (A.length > 1) {
           int q = A.length/2;
           int[] leftArray = new int[q];
           for(int i = 0; i < q;++i){
               leftArray[i]=A[i];
           }
           int[] rightArray = new int[A.length - q];
           for(int i = q; i < A.length; ++i){
               rightArray[i-q]=A[i];
           }

           mergeSort(leftArray);
           mergeSort(rightArray);

           merge(A,leftArray,rightArray);
       }
   }

   static void merge(int[] a, int[] l, int[] r) {
       int totElem = l.length + r.length;
       int i,li,ri;
       i = li = ri = 0;
       while ( i < totElem) {
           if ((li < l.length) && (ri<r.length)) {
               if (l[li] < r[ri]) {
                   a[i] = l[li];
                   i++;
                   li++;
               }
               else {
                   a[i] = r[ri];
                   i++;
                   ri++;
               }
           }
           else {
               if (li >= l.length) {
                   while (ri < r.length) {
                       a[i] = r[ri];
                       i++;
                       ri++;
                   }
               }
               if (ri >= r.length) {
                   while (li < l.length) {
                       a[i] = l[li];
                       li++;
                       i++;
                   }
               }
           }
       }
   }


Este algoritmo, merge sort ordena un int[] del tamaño que sea de menor a mayor.
Si puedes usar alguna libreria, si haces import java.util.Arrays, tienes la opción de usar la función Arrays.sort(Object[] A).
#22
Si no he entendido mal quieres ordenar las notas de cada alumno que tienes dentro de 3 arrays diferentes (practicas,trabajos,examenUnidad,notaunidad)?
El algoritmo buble sort (burbuja) es el algoritmo de ordenación más ineficiente de todos :P
#23
Échale un vistazo a mi mensaje anterior que lo he modificado. Lo que tiene no conocer las reglas del bingo :P
#24
Hola! Puedes hacer un array de 91 posiciones e ir comparando.

int rnum;
          int rnum;
           int cont = 0;
           int[] repetidos = new int [90];
           for(int i = 0; i < 90; ++i){
               repetidos[i] = 0;
           }
            while(cont<90){
                rnum = (int) (Math.random()*90 +1);
                System.out.println(rnum);
                if(repetidos[rnum-1]== 0){
                    repetidos[rnum-1]=1;
                    ++cont;
                }
                }
            }


Habia puesto 100 porque creía que había 100 posiciones y que el 0 estaba :P. Te modificio el código para que sea correcto
#25
Ejercicios / Re: 100 primeros primos [C++]
2 Abril 2016, 10:37 AM
Si no quieres almacenar solo los numeros primos no es necesario crear aux de n+1 posiciones. Lo importante son los dos fors que solos calculan los numeros que NO son primos.


vector <bool> Erastotenes(int n) {
vector <bool> aux(n + 1, true); //vector donde marca si un numero es primo o no
for (int i = 2; i*i <= n; ++i) {
for (int j = 2*i; j < aux.size(); j = j + i) {
aux[j] = false;
}
}
return aux;
}
#26
Si claro!
Supongamos que tienes que hacer un printe del total y tienes lo siguiente:

int MAX_SIZE = 30;
       int[] oc = new int[MAX_SIZE]; //Este lo usaremos para saber si una posición está o no ocupada.
       for(int i = 0; i < MAX_SIZE; ++i) oc[i] = -1; //-1 querra decir que la posición no ha sido ocupada.
       String[] name = new String[MAX_SIZE];
       int[] age = new int[MAX_SIZE];
       double[] height = new double[MAX_SIZE];
       
       for(int i = 0; i < MAX_SIZE; ++i){
           if(oc[i] != -1){
               System.out.println("Nombre: " + name[i]);
               System.out.println("Edad: " + age[i]);
               System.out.println("Altura: " + height[i]);
           }
       }


Si usas este metodo, usando oc para conocer si una posición ha sido usada o no, acuerdate que al dar de baja o al dar de alta, tienes que poner la posicion correspondiente un 0 o un -1.
Para hacer el caso del mostrar por nombre, en la condición de dentro del for, tendrías que añadir

if(oc[i] != -1 && name[i] == nombre)

donde nombre es el nombre que el usuario introduce.

Pruebalo, si tienes cualquier pregunta no dudes en hacérnosla saber.
#27
Buenass!!!
Te has planteado usar ArrayLists? O tenéis restricción de que estructuras de datos podéis usar?
Si no, siempre puedes modificar las estructuras para que contengan un valor imposible, si lo contienen a la hora de mostrar no se mostrarian.
Para hacer un cambio, después de conocer el número de registro tienes que modificar la posición de cada vector dependiendo de la opción que haya elegido para modificar.
Me explico si el usuario elige el registro r=1 y la opcion nombre tendras que hacer nombre[r] = sc.nextLine();

Para las consultoras tendras que hacer un print de todos los vectores que tienes en el caso del total.
Por otra parte, si se elige por nombre, necesitaras un condicional para ver si la posición que estas consultando contiene o no el nombre que ha introducido el usuario. Si coinciden tendras que sacar por pantalla los datos.

En ambos casos necesitas recorrer de principio a fin los vectores.
#28

allocate_DIR((struct task_struct*)child);
page_table_entry * PTc = get_PT((struct task_struct*)child);
page_table_entry * PTd = get_PT((struct task_struct*)dad);
 
 
for(i = 0; i < 256+8+20;++i){
    set_ss_pag(PTc, i,get_frame(PTd,i));
}
   
for( i = 264; i < 264+20; ++i){
    int f = alloc_frame(); //Agafem el frame lliure
    if(f == -1) return -5;
    set_ss_pag(PTd, (unsigned)i+500,f); //Assignem a la taula de pàgines del pare la traducció.
    set_ss_pag(PTc,(unsigned)i,f);          //Igualment per al fill.
   copy_data(((unsigned int)(get_frame(PTd,i)<<12)),((unsigned int)(f)<<12),4096);
  }


Así es el código, el error está en el segundo parametro que nos da page fault.
#29

  int f = alloc_frame();
  if(f == -1) return -1;
   copy_data((unsigned int)f<<12,0x00,4096);


alloc_frame() devuelve el numero de frame que está libre, sabiendo que el frame es de 4096B, necesito copiar eso a la pos 0x00 de memoria.


void copy_data(void *start, void *dest, int size)

Esta es la cabecera de copy_data.

Alguna idea de como lo puedo hacer? Me da un page_fault si pongo como dirección a copiar f*4096. Si pongo a mano la dirección me funciona perfectamente.
#30
Donde haces la conexion con la Base de Datos?

String sql = "select * from racestatus";
cn = db.getConnection();
PreparedStatement st1 = cn.prepareStatement(sql);
ResultSet rs = st1.executeQuery();


Las dos ultimas lineas serian las que a ti te interesan, pero necesitas tener la conexión creada. Podrías decirnos que error te da?