1. Indica qué salida produce el siguiente código: 2. Indica qué

Anuncio
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);
---
Descargar