Apellido:_______________________Nombre:__________________Firma:___________ CC1001 Control Nº 3: Pregunta 1 (ponderación: 2/3) – miércoles 29 de octubre de 2008 - Tpo: 1 hr 45 minutos Con apuntes individuales – Sin consultas - Contestar en esta hoja (no use el reverso) a) (1.5 ptos) Escriba una función recursiva que entregue la suma de los elementos en el arreglo X entre los índices I y J, ambos inclusive. Ej, si a={10,20,30,40,50}, suma(a,1,3) entrega 90. static public int suma(int[]X,int I, int J){ if(I>J) return 0; //0.5 return X[I] + suma(X,I+1,J); //1.0 } Nota. Si no se escribe recursiva, tendrá 0.25 ptos b) (4.5 ptos) Use la función suma en un programa que determine el número de concejales elegidos por cada lista en las recientes elecciones de la comuna de Santiago. Para determinar los elegidos de cada lista: 1º se calcula la “cifra repartidaora” como el total de votos dividido por 8 (la cantidad de concejales en Stgo) 2º se divide el total de votos de cada lista por la “cifra repartidora” Notas. - El total de votos que obtuvo cada candidato está contenido en una línea del archivo “votos.txt”. - Los primeros 8 candidatos corresponden a la 1ª lista, los sgtes 6 a la 2ª, 8 a la 3ª, 8 a la 4ª y 8 a la 5ª. - El resultado se muestra con 5 números reales correspondientes a los elegidos de la 1ª, 2ª, 3ª, 4ª y 5ª lista. //obtener y guardar votos de candidatos: 2 puntos final int N=40; int[]votos=new int[N]; //0.5 BR a=new BR(new FR(“votos.txt”)); //0.2 for(int i=0; i<N; ++i) //0.5 votos[i]=Integer.parseInt(a.readLine());//0.8 //calcular cifra repartidora: 1 punto double cifra=suma(votos,0,N-1)/8.0; //determinar concejales de cada lista: 1.5 punto for(int i=0; i<N; i+=8) //0.5 U.println(suma(votos,i,i+7)/cifra);//1.0 Apellido:_______________________Nombre:__________________Firma:___________ CC1001 Control Nº 3: Pregunta 2 (ponderación: 1/3)– miércoles 29 de octubre de 2008 - Tpo: 1 hr 45 minutos Con apuntes individuales – Sin consultas - Contestar en esta hoja (no use el reverso) a) (1 punto) Escriba en Matlab (y “a la Matlab”) el promedio ponderado de dos vectores es: (x1y1+x2y2+…+xnyn)/n function r=promedioPonderado(X,Y) r=sum(x.*y)/length(x) b) (3 puntos) Use la función anterior en un programa en Matlab que muestre la nota de control de cada alumno, considerando que las tres primeras notas se ponderan 0.2 y la cuarta (el examen) por 0.4. Los datos están guardados en una matriz que fue grabada con el comando store notas. Cada fila contiene las 4 notas de un alumno. load notas %0.5 [filas cols]=size(notas);%0.5 pond=[0.2 0.2 0.2 0.4];%0.5 for i=1..filas %0.5 disp( promedioPonderado(notas(I,:),pond) ); %1.0 end c) (2 ptos) Escriba en Java el equivalente a la función que en Matlab se se invoca en la forma rand(filas,columnas). static public double[][] rand(int filas, int columnas){ double[][]a=new double[filas][columnas]; //0.5 for(int i=0; i<filas; ++i) //0.3 for(int j=0; j<columnas; ++j)//0.3 a[i][j] = Math.random(); //0.5 return a;//0.4 }