Listado 1 última semana de Abril
los problemas a) y d) del listado siguiente:
a) Construir una función que reciba un entero como argumento y
que retorne su factorial.
b) Construir una función que calcule y retorne la hipotenusa de un
triangulo rectangulo.
c) Costruir una función que retorne un entero con el número de 1's
binarios que hay en un entero.
ayuda de operaciones binarias:
c = a | b; // or binario: 1+1=1, 1+0=1, 0+1=1,
0+0=0
c = a&b;// and binario: 1*1=1, 1*0=0, 0*1=0,
0+0=0
c = a^b; // xor binario: 1^1=0, 1^0=1, 0^1=1,
0+0=0
c = ~a; // complemento a 1, es decir cambia los
1's por 0's y los 0's por 1's
c = c << n; // desplaza n veces los bits a
la izquierda e inserta 0's a la derecha.
ej.: 0xff<< 2 queda
0xfe (hexadecimal)
c = c >>n; //idem anterior pero a la
derecha.
d) Graficar una función senoidal y los ejes correspondientes
#include <math.h>
double sin(double x); //x
está en radianes
e) Lo mismo de d) pero dibujar con un color el semiciclo
positivo y con otro el negativo.
f) Dibujar cuadrados de 15x15 pixeles desde las cordenadas (0,0) hasta
las coordenadas (300,300)
y que el cuadrado siguiente tenga su esquina superior izquierda
en el centro del anterior.
g) Dibujar un círculo cuyas coordenadas y radio se leen por teclado
y se almacenan
en las varibles globales enteras: xx, yy, rr.
h) Crear un programa que lea "n" enteros por teclado y entregue como
salida el entero menor, el mayor y la suma (sólo main()).
i) Crear una función que determina si un entero es primo.
j) Hacer un programa que lea un string por teclado y
determine si se encuantra dentro de un diccionario de palabras
almacenado en un arreglo de string.
l) Crear un programa que lea un conjunto de "n" de caracteres por
teclado y entregue como salida el número de veces que se ingresó cada
caracter (ej: todas las minúsculas). Ayuda: declarar una variable para
llevar la cuenta de cada símbolo del alfabeto.
m) Lo mismo de l) pero contando las mayúsculas. las minúsculas y los
dígitos. Ayuda: usar funciones isdigit(--), etc.
de #include <ctype.h>
n) Hacer un programa que imprima los números impares en un ciclo
iterativo dentro de la función main().
o) Lo mismo que n) pero que lo haga mediante una función recursiva.
p) Hacer una función que, dado un número n, obtenga simultaneamente
el cuadrado y el cubo del número de n. La función
main() debe leer el número por teclado e imprimir el n, el n
cuadrado y el n cubo que obtiene la función.
La función debe retornar void y los resultados no quedan
necesariamente en variables globales.
q) Determine que hacen los programas siguientes:
main(){
int i,j,k;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
for(k=0;k<8;k++)printf("%01d%01d%01d\n",i,j,k);
}
------------------------
void f(int *);
int main(){
int x = 3;
f(&x);
printf("%d\n",x);
}
void f(int *y){
*y = *y + 5;
}
------------------
void f(int);
int main(){
int x = 3;
f(x);
printf("%d\n",x);
}
void f(int y){
y = y + 5;
}
------------------
void f(int *, int);
int main(){
int x = 3, y = 5;
f(&x, y);
printf("%d\t%d\n",x, y);
}
void f(int *y, int z){
*y = *y + 5;
z = z + 3;
}
------------------
int dato[2];
main(){
int x;
x = almacen(999);
printf("%d\n",x);
x = almacen(888);
printf("%d\n",x);
x = almacen(777);
printf("%d\n",x);
x = almacen(666);
printf("%d\n",x);
x = almacen(555);
printf("%d\n",x);
}
int almacen(int entrada){
int salida;
salida = dato[1];
dato[1] = dato[0];
dato[0] = entrada;
return salida;
}
Listado 2
:
a) Hacer una función que invierta un string. Se le debe pasar la
referencia al string.
b) Hacer una función que devuelva un vector de índices que represente
el ordenamiento de un arreglo de strings.
c) Hacer una función que reciba la referencia a un string con una
expresión que contiene paréntesis y retorne "0" si los paréntesis
están pareados y "1" si no lo están.
d) Dibujar una circunferencia con una línea de radio que vaya rotando.
e) Lo mismo que d) pero que además la circunferencia vaya rodando.
e) Crear una arreglo de estructuras cuyos elementos se puedan accesar
también en forma encadenada.
Listado 3
:
f) Crear una función recursiva que devuelva la suma de los "n"
primeros enteros
g) Hacer una función que reciba un puntero a una estructura y la
inserte al comienzo de una fila. Debe ser una función recursiva.
i) Crear un programa que multiplique dos matrices.
j) Construya una función que rote circularmente el contenido de un
arreglo.
k) Cosntruya un programa que rote circularmente el contenido de un
archivo sin usar un arreglo igual al archivo. (probar ambos sentidos).
Tarea 2 (con nota):
Mostrar graficamente el funcionamiento del algortimo de ordenamiento
de la burbuja visto en clases.
Algunas sugerencias de formas de representar los enteros
graficamente:
- utilizar la funciones sprintf y drawString para imprimir los
valores.
- representar cada numero como una barra cuyo alto y/o ancho
depende del valor del numero.
- lo mismo usando circulos.
- representar cada numero por un rectangulo y la coordenada x
depende del valor del numero.
- mezclar algunas de las ideas anteriores.
Formas de ingreso valido de los numeros:
- ingresarlos usando scanf antes de llamar a l ambiente grafico.
- ingresarlos usando scanf durante el ambiente grafico
- ingresarlos usando el mouse (mousePress).
Tarea 2 (sin nota):
Dibujar un cuadrado grande, dibujar un cuadrado más pqueño que se pueda
mover con mouseDrag().
En todo momento debe aparecer un texto que describa la relación
espacial del cuadrado pequeño respecto del grande.