Sunteți pe pagina 1din 4

PROGRAMACIN ALGORITMOS Y ESTRUCTURAS DE DATOS

PRACTICA N 4

ARREGLOS Y PUNTEROS

1. Hacer un programa que:


a) Cree un arreglo unidimensional de 30 elementos de tipo numrico entero y nombre
num.
b) Inicialice el vector con valores positivos, negativos y ceros.
c) Recorra el arreglo de izquierda a derecha mostrando el contenido de cada elemento,
usando las estructuras de control repetitivas (while, do-while, y for).
d) Contabilice el nmero de valores positivos, negativos y ceros almacenados en el
proceso de carga.
e) Muestre en pantalla los resultados obtenidos.

2. Repita el ejercicio anterior, pero esta vez, en el inciso b, que sea el usuario quien
introduzca los valores desde el teclado.

3. Hacer un programa que:


a) Lea una secuencia de 20 valores numricos reales y los almacene en un array de
nombre numeros.
b) Muestre en pantalla cul es el valor mximo, as como la posicin que ocupa en el
array. En caso de aparecer repetido el valor mximo se muestra el de menor ndice.

4. El siguiente cdigo imprime tres lneas en pantalla


a. Antes de ejecutarlo, analice el cdigo y prediga la salida que se obtendr del
mismo en pantalla.
b. Verifique su anlisis ejecutando el cdigo.
c. Interprete los resultados y explique las diferencias.

#include <stdio.h>
#define LARGO 11

int main()
{
char arr[LARGO] = {104,111,108,97,0,109,117,110,100,111,0};
int i;

for(i=0;i<LARGO;i++){
printf("%d ",arr[i]);
}
printf("\n");

for(i=0;i<LARGO;i++){
printf("%c",arr[i]);
}
printf("\n");

printf("%s",arr);
printf("\n");

return 0;
}

1
5. Qu debera modificar en el arreglo del ejercicio anterior para que la expresin
printf("%s",arr); imprima hola mundo?

6. Cada ao un profesor repite el mismo curso, al cual pueden inscribirse hasta un


mximo de 60 alumnos. El profesor desea usar un programa donde registrar las
notas finales del curso actual y obtener un promedio de las mismas. Quede bien
con el profesor y escriba el cdigo que permita implementar este programa.

NOTA: Si bien algunos compiladores modernos lo permiten, el estndar de C


prohbe la declaracin de un arreglo sin un tamao definido, como se ve en el
ejemplo de cdigo errneo a continuacin, que usted debe evitar.

int n;
scanf("%d",&n);
int arr[n];

7. Implemente el cdigo para convertir un nmero entero en una cadena con los caracteres
que lo representan, de la manera que se muestra en el siguiente ejemplo:

34256 3 4 2 5 6 \0

Realice luego el cdigo para la conversin inversa.

5. Analice, ejecute y verifique el siguiente cdigo.

#include <stdio.h>
int j, k;
int *ptr;
int main()
{
j = 1;
k = 2;
ptr = &k;
printf("\n");
printf("j tiene el valor %d y est almacenado en %p\n",j,&j);
printf("k tiene el valor %d y est almacenado en %p\n",k,&k);
printf("ptr tiene el valor %p y est almacenado en
%p\n",ptr,&ptr);
printf("El valor del entero al que apunta ptr is %d\n", *ptr);
return 0;
}

NOTA: el modificador %p permite mostrar nmeros en un formato en que los


programadores acostumbran ver las direcciones de memoria (valores hexadecimales de un
ancho de palabra fijo). Note tambin que el puntero ptr adems de almacenar una direccin
de memoria, est a su vez almacenado en otra direccin de memoria (&ptr) como el resto de
las variables.

6. Realice un programa donde el usuario ingrese por teclado los valores de dos variables
(un entero y un carcter), los incremente en 1 utilizando punteros e imprima dichas
variables en pantalla.

2
7. El siguiente cdigo forma parte de un programa

long int num = 0xFEDCA987;
long int *pl;
unsigned char *pc;
pl = &num;

Realice, utilizando punteros, el cdigo necesario para poder imprimir en pantalla cada uno
de los bytes que conforman la variable num.

NOTA: La variable num simplemente almacena un entero; en este caso ese entero se ha
escrito en formato hexadecimal para facilitar la identificacin de los bytes que lo componen
(para esto se us el prefijo 0x). Puede serle til recordar que con el modificador %x se
imprimen valores en formato hexadecimal.
Sabiendo que num se almacena utilizando el sistema CA2 qu signo supone que tiene el
valor asignado? Verifique imprimiendo con %d.

8. Dado el siguiente fragmento de cdigo


float a = 23.56;
float *b;
float *c;
b = &a;
c = b;
a = *c + *b;

8. 1 Indique las afirmaciones correctas


a) Las variables b y c se almacenan en la misma direccin de memoria
b) La sentencia *c = 4; modifica el contenido de a.
c) a tomar un valor indeterminado.
d) c almacena la direccin de la variable b.

8. 2 Cul es el valor final de la variable a?

9. Realice un programa que:


Defina un arreglo formado por los enteros 2,10,9,4,90 y 56.
Defina un puntero ptr al primer elemento del arreglo.
Recorra y muestre el valor de cada elemento del arreglo
a) utilizando ndices.
b) utilizando el puntero ptr.

10. Escribir un programa que calcule y visualice la media aritmtica de un vector de 10


elementos numricos enteros entrados por teclado, utilizando la variable puntero a dicho
vector.

11. Analice el siguiente cdigo:

#include <stdio.h>
char strA[40] = "Solamente una cadena de prueba";
char strB[40];
int main()
{
char *pA;
char *pB;
puts(strA);

3
pA = strA;
puts(pA);
pB = strB;
putchar('\n');
while(*pA != '\0'){
*pB++ = *pA++;
}
*pB = '\0';
puts(strB);
return 0;}

a) Ejecute el programa, utilice el debugger en su opcin paso a paso, mire las


variables strA, strB, pA y pB.
b) Inicialice strB[40] con la cadena
0123456789012334567890123456789012345678901234567890 , Saque
conclusiones.
c) Reemplace el cdigo necesario con la funcin de librera de C strcpy( ).

12. Realice un programa que:

a. Cargue un arreglo con 9 valores enteros.


b. Los ordene segn el mtodo de la burbuja, mostrando en pantalla como se va ordenando
el arreglo en cada iteracin externa.
c. Busque en el arreglo ordenado por el mtodo dicotmico o binario, un nmero que el
usuario entre por teclado. Contemple con mensajes de error valores que queden fuera del
rango que maneja el arreglo.

S-ar putea să vă placă și