ProblemarioCI2126

Páginas: 37 (9197 palabras) Publicado: 9 de octubre de 2015
Problemario para CI-2126: Computación II
(versión 1)

Rosseline Rodríguez

Departamento de Computación y
Tecnología de la Información
Universidad Simón Bolívar

REPORTE INTERNO


ALCANCE DE VARIABLES. LOCALIDAD Y GLOBALIDAD

1.- En el siguiente programa usted debe verificar que las declaraciones de las variables son correctas, luego hacer la corrida del programa con el objeto de visualizar elalcance de las variables.

/* archivo p1 */
int k,x;

void r1(int a, int b)
{
int i;
i=0;
a=2*b;
r3(i);
printf("%d %d,x,y);
}

main()
{
k=1;
x=2;
r1(x,x);
printf("%d",x);
}


/*archivo p2*/
int r2(int i)
{
i=i+3;
if (k <= 2)
printf("%d %d",i,k)
return(i+k+a);
}

void r3(int a)
{
int x,y;
a=i+k;
x=r2(a);
y=r2(2*a);
printf ("%d %d",x,y);
}


2.- A continuación se presentan variosprogramas ilustrativos de lo que ocurre al combinar las reglas de alcance de variables y pasaje de parámetros en una forma no muy organizada. Su actividad concreta es dar los resultados de la corrida de estos programas atendiendo a dichas reglas. Escriba de nuevo los programas usando reglas de buen estilo de programación

a)
void pr(int x,int y,int *z);

main() {
int a=5,b=8,c=3;pr(a,b,&c);pr(7,a+b+c,&a); pr(a*b,a /b,&c);
}
void pr(int x,int y,int *z)
{*z=x+y+*z; printf("%d%d%d",x,y,*z);}
b)
void r1(int *a; int b);
int r2(int i,int a,int k);
void r3(int *a, int i, int k);

main()
{
int k=1,x=2;
r1(&x,x,k);
printf(“%d”,x);
}

void r1(int *a, int b,int y)
{
int i=0;

a=2*b;
r3(&i,a,y);
printf(“%d %d”,x,y);
}

c) main() {
int i,j,k;
i=0; j=1; k=2;
p2(0,&k);p2(1,&i);p2(2,&j);
}

void p1(int *i,int j,int k)
{ (*i)++;
printf(“%d %d %d”,*i,j,k);
}

void p2(int h,int *j,int k) {
int i=j;
if (h==0) p1(*j,j,k)
else if (h==1) p1(&i,*j,k);
else p3(&i,*j,k);
printf(“%d %d %d”,i,j,k);
}
void p3(int *i)
{ (*i)++;}

3.- ¿Es este un programa correcto en C?, de no serlo señales los errores e indique posibles correcciones. Si fuera correcto, entonceshaga la corrida del programa

main ()
{
int f=2,h=10;
a(f,h,'1'); a(h,f,'2');
}
void int A(int *x,int *y,char s)
{
int b,c;

b=x;
if (G(b) >= 40) c=D(-5);
else c=D(b*2);
}
void D int p
{
f=f+1; p=p+f; printf(f);
}
void G(int *r)
{
int a,f;
a=10; f=a*a;
r=r*a; printf(r);
return(r);
}

APUNTADORES Y ARREGLOS

1.- Conteste cada una de las siguientes preguntas. Cada parte del ejercicio deberáutilizar los resultados de las partes anteriores donde sea apropiado:
a) Declare un arreglo de tipo float, llamado numbers con 10 elementos, e inicialice los elementos a los valores 0.0, 1.1, 2.2,...9.9. Suponga que la constante simbólica SIZE ha sido definida como 10.
b) Declare un apuntador nPtr, que apunte a un objeto de tipo float.
c) Imprima los elementos del arreglo numbers, utilizandonotación de subíndice de arreglos. Utilice una estructura for, y suponga que se ha declarado la variable de control entera i.
d) Proporcione dos instrucciones por separado, que asignen la dirección inicial del arreglo numbers a la variable de apuntador nPtr.
e) Imprima los elementos del arreglo numbers, utilizando únicamente la variable nPtr.
f) Imprima los elementos del arreglo numbers, utilizando elnombre del arreglo como un apuntador.
g) Imprima los elementos del arreglo numbers mediante subíndices del apuntador nPtr.
h) Suponiendo que nPtr apunta al principio del arreglo numbers, ¿cuál es la dirección referenciada por nPtr+8 ? ¿ cuál es el valor almacenado en esa posición?
i) Suponiendo que nPtr apunta a numbers[5], ¿qué dirección es referenciada por nPtr=nPtr-4 ? ¿cuál es el valoralmacenado en esta posición?

2.- Encuentre el error en cada uno de los segmentos de programas siguientes. Suponga:
int *zPtr;
int *aPtr = NULL;
void *sPtr = NULL;
int number,i;
int z[5] = {1,2,3,4,5};
sPtr=z;

++z;
number = zPtr; /* uso del apuntador para obtener el
primer valor del arreglo */
number = *zPtr[2]; /* asigna el valor 3 a number*/
number = *sPtr;/* asigna el valor apuntado por sPtr a...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS