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 - piete2

#21
Java / Problema repetición de números
21 Febrero 2015, 02:08 AM
Hola amigos, tengo un problema. Un profesor nos ha mandado "jugar la lotería" con un boleto que siempre contiene los mismos números (los números van entre 1 y 49). Entonces su intención es averiguar el número de dias, meses, etc que se tarda en realizar n coincidencias (máximo 6 coincidencias). Entonces, mi problema reside en la comparación de número random generado y los que ya tengo en el vector. He probado mil métodos y no doy con el adecuado, si me pudiérais ayudar os lo agradezco.

Código (java) [Seleccionar]

package sorteo;
import java.util.Random;
import java.util.Scanner;

public class Sorteo {

   
   public static void main(String[] args) {
     
       int i,j,contador = 0,semanas=0,n;
       
       int numeros[]=new int[6];
       int boleto[]=new int[6];
       Scanner s= new Scanner(System.in);
       System.out.println("Dame número de coincidencias");
       n=s.nextInt();
       //Boleto predefinido
       boleto[0]=1;
       boleto[1]=3;
       boleto[2]=15;
       boleto[3]=35;
       boleto[4]=39;
       boleto[5]=40;
Random rnd=new Random();
       //Generar números aleatorios
       while(contador!=n){
           semanas++;
           contador=0;
           for( i=0;i<6;i++){
               int x=(int)(rnd.nextInt(49-1+1)+1);
               
                   if(i==0)//Sólo para la primera posición del vector
                       numeros[i]=x;
                   else{
                       for(j=0;j<i;j++){
                           if((numeros[j]!=x)){//Comparación de número generado con el del vector
                               numeros[i]=x;
                                   
                           }
                           else{
                               i--;
                               //j=6;
                           }
                           
                        }
                   }          
                       
                   
               
       }
           //Ver numeros del vector aleatorios
       for(i=0;i<6;i++)
           System.out.println(numeros[i]);
           System.out.println("------------------------------------");
           
           //Comparar números del boleto aleatorio del fijo
       for(i=0;i<6;i++){
           for(j=0;j<6;j++){
               if((boleto[i])==(numeros[j])) {
                   contador++;
               }
                   
               }
           }
       //System.out.println("Contador"+contador);
       }
      // System.out.println("Contador"+contador);
       System.out.println("Las semanas han sido: "+semanas);
       double meses,años,siglos;
       meses=semanas/4;
       años=meses/12;
       siglos=años/100;
       System.out.println(meses+" meses");
       System.out.println(años+" años");
       System.out.println(siglos+" siglos");
   }
   
   }
#22
Hola, quisiera saber si alguno me hace el favor de decirme en qué me he equivocado porque me estoy volviendo loco y no encuentro el motivo. El ejercicio es el siguiente:

Escribe un subprograma que muestre las asignaturas en las que se encuentra matriculado un alumno, al subprograma se le pasará como parámetro la lista de alumnos, y el dni del alumno del que se quiere mostrar sus datos. Escribe un ejemplo de llamada.

Bien, yo he hecho lo siguiente:

#include <stdio.h>
#include <stdlib.h>
void verDatos(struct lista la, char *cdni);

struct asignatura{
   char nombre[30];
   int creditos;
};
struct alumno{
   char nombre [30];
   char dni[10];
   struct asignatura matricula[12];
   int nsignaturas;
};
struct lista{
   struct alumno listadoAlumnos[100];
   int numero_real;
};
struct informe{
   int creditosTotales;
   int nalumnos;
};
struct lista listaAdmitidos={
   {
       {"juan","334g",{{"física",6}},1},
       {"maria","445h",{{"fisica",2},{"fundamentos1",6}},2},
       {"luis","145g",{{"fisica",6}},1},
       {"pedro","678p",{{"fisica",3}},1},
       {"lorena","745h",{{"fisica",6},{"fundamentos1",6}},2},
       {"pascual","554g",{{"fisica",6},{"calculo",6},{"dibujo",9}},3},        
   },
   6
};

int main(int argc, char** argv) {

 
}
void verDatos(struct lista la, char *cdni){
   int i,j;
   for(i=0;i<la.numero_real;i++){
       if(strcmp(la.listadoAlumnos.dni,cdni)==0){
           for(j=0;j<la.listadoAlumnos.nsignaturas;j++){
               printf("Asignatura: %s\n",la.listadoAlumnos.matricula[j].nombre);
           }
       }
           
   }
 
   
     
}

Me da error en el subprograma como conflicto en verDatos.

Muchas gracias de antemano por leer tanto rollo.