Departamento de Informática y Sistemas Ejercicios AV 11: Arrays (II) Fundamentos de Informática Grado en Ingeniería Química 1. Indica qué salida produce el siguiente código: #define M 10 int v[M],i,j=9; for(i=0;i<M;i++) v[i]=j--; for(i=0;i<M;i++) printf("%d,",v[i]); 2. Indica qué salida produce el siguiente código: #define M 10 int v[M],i,j=1; for(i=0;i<M;i++) v[i]=i+1; j--; for(i=0;i<M;i+=2) j+=v[i]; printf("%d",j); 3. Escribe la instrucción que debe colocarse en la zona con interrogaciones para que el código guarde en cada posición del vector s la suma de los valores de los vectores a y b de las mismas posiciones. (nota: suponer que los tres vectores tienen la misma longitud M) for(i=0;i<M;i++) ???? 4. Indica qué salida produce el siguiente código: #define M 6 #define N 4 int v[M ],i,j,total=0; for(i=0;i<M;i++) v[i]=i+1; for(i=0;i<M;i++) for(j=0;j<N;j++) { total+=v[i%3]; j++; } printf("%d",total); Departamento de Informática y Sistemas 5. Escribe lo necesario en la zona indicada con interrogaciones para que el código calcule la suma de los valores de v que sean pares. (nota: no hay espacios en blanco en la solución) #define M 10000 int v[M],i,sumaPares; sumaPares=0; for(i=0;i<M;i++) if (????) sumaPares+=v[i]; printf("%d",sumaPares); 6. Escribe lo necesario en la zona indicada con interrogaciones para este código que compara dos matrices definidas como int a[M][N],b[M][N]; e indica si son idénticas o no. (nota: no hay espacios en blanco en la solución) flag=1; for(i=0;(i<M)&&flag;i++) for(j=0;(j<N)&&flag;j++) if (????) flag=0; if (flag) printf(“Identicas”); else printf(“No identicas); 7. Se pretende que el siguiente fragmento inicialice el array v con enteros aleatorios en rango 0 a 50, ambos inclusive. Escribe lo necesario para conseguirlo en la zona indicada con interrogaciones. (nota: no hay espacios en blanco en la solución) int i, v[TAM]; srand(time(NULL)); for (i=0; i<TAM; i++) v[i]= ???? ; 8. Se pretende que el siguiente fragmento de código inicialice el array v con valores introducidos por teclado. Escribe en la zona indicada con interrogaciones lo necesario para conseguirlo. (nota: la solución no contiene espacios en blanco) int i; float v[TAM]; for (i=0; i<TAM; i++) { printf (“\nIntroduce dato %d :”, i); ???? } Departamento de Informática y Sistemas 9. Se dispone de un array definido como float ingresos[365][4];. Cada fila del array se corresponde a un día de un año. En cada una de las 4 columnas se almacenan los ingresos obtenidos para ese día en cada uno de los 4 bares de una empresa. Se quiere calcular, partir de la semana sem (inclusive), la suma de los ingresos de los 4 bares los días de la semana que caen en dia (por ejemplo, todos los viernes, o todos los sábados). Tener en cuenta que el primer día de ese año era lunes. sem es un valor entero entre 1 y 52. dia un valor entero entre 1 y 7 (1 para el lunes, 2 para martes, etc.) El fragmento de código de abajo calcula el dato deseado. Obtén la expresión que calcula el valor inicial de la variable “i” en función de sem y dia (entre interrogaciones) e indica en la respuesta el valor inicial que toma “i” si se quiere hacer el cálculo para los miércoles a partir de la semana 22 (inclusive). total=0; for (i=????;i<365;i=i+7) for(j=0;j<4;j++) total+=ingresos[i][j]; printf("%.2f",total); 10. Se dispone de un array unidimensional “v” de longitud par M y cargado con datos de tipo entero. El siguiente fragmento de código modifica el array, de modo que las posiciones pares e impares consecutivas intercambian sus valores (Ej: v0 con v1, v2 con v3, v3 con v4, etc.) Indica qué debe colocarse en la zona entre interrogaciones para que el código realice la misión deseada. (nota: la solución no contiene espacios en blanco) for(i=0;i<M;i+=2) { aux=v[i]; ???? v[i+1]=aux; } 11. Una imagen en blanco y negro (tonos de grises, en realidad), suele codificarse con un entero entre 0 y 255 por cada píxel, donde 0 es negro y 255 blanco. Si Rx y Ry es la resolución de la imagen, de la que disponemos en el array img[Ry][Rx], completa la zona con ???? para conseguir que el siguiente fragmento de código escriba la imagen en un archivo. (nota: la respuesta no contiene espacios en blanco) fs=fopen(NA,”wb”); for(i=0;i<Ry;i++) for(j=0;j<Rx;j++) ???? fclose(fs); ---