Certamen 1 Lenguaje de Programación 2010-1         Prof.: Jorge López R.

1) (1.pto.) Sin modificar, eliminar o comentar las  líneas del programa siguiente, inserta líneas que logren que los datos de entrada dados, se correspondan con la salida en pantalla.
#include <stdio.h>
struct persona {
char nombre[100];
int numeroMatricula;
char sexo;
char carrera[100];
};
main(){
struct persona a,b;
struct persona *d;
scanf("%s %i %c %s",a.nombre,&a.numeroMatricula,&a.sexo,a.carrera);
printf("%s %i %c %s\n",a.nombre, a.numeroMatricula,a.sexo,a.carrera);
b=a; //copia los campos de una variable en otra
d=&b;
a.numeroMatricula=0;
printf("%s %i %c %s\n",d->nombre,d->numeroMatricula,d->sexo,d->carrera);
}

Entrada por teclado:
Chavez 20091111 F Enfermeria
Salida en pantalla:
Chavez 20091111 F Enfermeria
Chavez 20091111 F Enfermeria

2) (1 pto.) Corrige el siguiente programa para que sea coherente con su salida en pantalla. Explica la razón del (los) cambio(s).
#include <stdio.h>
//int elementosIguales(int m, float a[], float b[]){ "el orden de los parametros debe ser igual que la llamada"
int elementosIguales( float a[], float b[], int m){
int r=0,i;
for (i=0;i<m;i++){
if(a[i]==b[i])r++;
}
return r;
}
main(){
float w[5]={1.1,1.2,1.3,1.4,1.5};
float z[5]={1.5,1.4,1.3,1.2,1.1};
int n;
//elementosIguales(w,z,5); debe asiganar el valor retornado
n=elementosIguales(w,z,5);
//printf("Elementos iguales: %i\n",r); "r" es variable local a otra funcion, y "n" no se usaba en main
printf("Elementos iguales: %i\n",n);
return 0;
}


Salida en pantalla:
Elementos iguales: 1

3) (1 pto.) Construye la tabla de trazado (ruteo)  y escribe el contenido de z[][], del siguiente programa
#include <stdio.h>
#define FC 3
int x[2][3]={1,2,3,
4,5,6};
int y[2][3]={1,4,7,
2,5,8};
int z[2][3];
main(){
int i,j;
for(i=0;i<2;i++){
for(j=0;j<3;j++){
if((x
[i][j]+y[i][j])%2==0) z[i][j]=1;
else
z[i][j]=0;
}
}
}

i | j | z00 | z01 | z02 | z10 | z11 | z12 |
0 | 0 | 1 | | | | | |
| 1 | | 1 | | | | |
| 2 | | | 1 | | | |
1 | 0 | | | | 1 | | |
| 1 | | | | | 1 | |
| 2 | | | | | | 1 |
4) (1 pto.) Marca con una x la(s) líneas(s) del programa que se ejecuta(n) para los valores de edad que se indican en cada columna en la tabla:


valores para edad

3
20
15
6
11
  scanf("%s %d",nombre,&edad);
x
x
x
x
x
   if(18<=edad && edad <26)
x
x
x
x
x
     printf("%s esta en la U\n",nombre);

x



   else if(11<=edad && edad <18)
x

x
x
x
     printf("%s esta en la Media\n", nombre);


x

x
   else if(edad<11 && edad >=6)
x


x

      printf("%s esta en la Basica\n",nombre);



x


5) (2 ptos.) Crear el cuerpo de la función  que rota circularmente m veces a la izquierda el contenido  de una matriz unidimesional. El esqueleto  de la función de debe ser:
void rotarIzquierdaM(float  a[], int n, int m){
    int i,j;
    float aux;
    for(i=0; i<m; i++){
    
    aux=a[0];
        for(j=0; j<n-1; j++){
                            a[j]=a[j+1];
       }
      a[n-1]=aux;
    }
  
}

- desplazar: 1 pto.
- elementos extremos: 0,5 pto.
- veces: 0,5 pto.

Ejemplo:
main(){
float x[7]={1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7};
rotarIzquierdaM(x,7,3);
}
la matriz debe quedar:
1.4, 1.5, 1.6, 1.7
, 1.1, 1.2, 1.3