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


1. (0.25 puntos c/u)
 
a) Nombre  los componentes del Sistema Procesador y describa la función de cada uno de ellos. b) Mediante un diagrama, explique el proceso paso a paso para obtener un programa ejecutable a partir de dos archivos fuente.
c) Describe en palabras lo que ocurre con la siguiente de definición de estructura:
struct s {
      int x;
  struct s *p;
  struct s yo;
};

d) Identifica  el error de los siguientes  programas:
main(){
char *x="hola";
char y[10];
scanf("%s",y);
if(x == y)printf("saludando\n");
//resto del programa sin error
}

main(){
int x;
char s[10];
scanf("%d %s",y,s);
//resto del programa sin error
}

2.(0.5 puntos c/u) Qué imprimen los siguientes programas?(si haces el trazado, se valora el procedimiento):
 
a) 
#define FC
int x[
FC][FC]={1,2,3,
4,5,6,
7,8,9};

int y[
FC]={0,
0,
0};

main(){
int i,j;
for(i=0;i<
FC;i++)
for(j=0;j<
FC;j++)
y[i]=y[i]+x[i][j];
for(i=0;i<
FC;i++)
printf("y[%d]: %d\n",i,y[i]);
}
b)
void push(int);
int pop(void);
int notEmpty(void);
int dato[100];
int tope=0;
main(){
  int x;
  push(111);

  if(notEmpty()){
x =
pop();
  printf("%d\n",x);
}
  if(notEmpty()){
x =
pop();
  printf("%d\n",x);
}

}
void
push(int in){
  dato[tope]=in;
tope=tope+1;
}
int pop(void){
if(tope>0){
tope=tope-1;
return dato[tope];
}
}
int notEmpty(void){
if(tope > 0) return 1;
else return 0;
}
c)
int buffer(int);
main(){
  int x;
  x =
buffer(111);
  printf("%d\n",x);
  x =
buffer(222);
  printf("%d\n",x);
  x =
buffer(333);
  printf("%d\n",x);
}
int
buffer(int in){
  int dato[2]; 
  int out;
  out = dato[1];
  dato[1] = dato[0];
  dato[0] = in;
  return out;
}
d)
main(){
 int x=987;
 int *y;
y = &x;
x = x/10;
printf("%d\n",x);
 *y = *y%10;
 printf("%d\n",x);
}
e)
struct s {
      int x;
  struct s *p;
};
main(){
  struct s a, b, *n;
  a.p = &b;
  a.x = 555;
  b.p = &a;
  b.x = 222;
n = a.p->p;
  printf("%d\n",a.p->x);
  printf("%d\n",a.p->p->x);
printf("%d\n",n->p->x);
}
3. (1.1 puntos c/u)
 
a) Crear una función  que retorna el menor  de tres variables enteras que son locales a las funciones que la llaman. El prototipo de debe ser:
void menor(int ..., int ..., int ....);
Se debe reemplazar correctamente los puntos suspensivos de los parámetros del prototipo .
b) Crear una función que retorne el promedio de un conjunto almacenado en un vector de 10 enteros.
4. (2 puntos)

Hacer un programa que lea por teclado un string de unos y ceros, debe imprimir "aceptar" si el string tiene un número impar de caracteres y es simétrico, "rechazar" si no. Ej. aceptar: 1100m0011,     abc9z9cba,  818, etc.
Ej. rechazar: 01, ab1ab, zrrrr, etc.