Sitio Web de Héctor E. Medellín Anaya

Tareas

Tarea #1 Conversión de bases numéricas (entrega 23/01/2003)

1. Convierta los números de la base indicada a base diez.

a. 110012         b. 637EE16       c. 76528           d. 111001112  e. 765216         f. 333211116

2. Convierta de base diez a la base indicada

a. 23901 a base 16      b. 23901 a base 8        c. 23901 a base 2        d. 10101 a base 2

3. Convierta de binario a octal y hexadecimal.

a. 101010001100        b. 11101111011         c. 10001010101          d. 1011100111

4. Convierta de Hexadecimal y octal a binario.

a. 32158          b. 101018        c. EFEE16       d. 1010116

5. convierta a octal los siguientes números en hexadecimal.

a. EDF231       b. 33EEAA      c. 56832          d. 4432CC

6. convierta a hexadecimal los siguientes números en octal.

a. 456312        b. 32456          c. 342245        d. 777111222

Tarea #2 Algoritmos y diagramas de flujo (entrega 25/01/2003)

1. Desarrolle algoritmos y haga diagramas de flujo para realizar las siguientes conversiones.

a) Leer una cantidad en euros e imprimir el equivalente en dólares americanos.

b) Leer una cantidad en pesos mexicanos e imprimir el equivalente dólares y en euros.

2. El siguiente es el menú de un puesto de tacos. Escriba un algoritmo y haga el diagrama de flujo que lea el número de cada taco ordenado y calcule la cuenta total.

            Taco de bistec ($ 4)

            Taco de arrachera ($ 8)

            Taco al pastor ($ 6)

            Refresco ($ 8)

            Orden de cebollitas ($ 5)

3. El índice de masa corporal se calcula dividiendo la masa de una persona en kilogramos entre el cuadrado de su estatura en metros. Escriba un algoritmo y haga el diagrama de flujo para leer los datos descritos y calcular el índice de masa corporal.

4. La temperatura T (en ºC) a la que hierve el agua está relacionada con la elevación h (en metros) sobre el nivel del mar por la fórmula

h = 1000(100 – T) + 580(100 – T)2

Escriba un algoritmo y haga el diagrama de flujo para leer una temperatura y calcular la altura sobre el nivel del mar.

5. El volumen y el área de un toroide (anillo de sección circular) están dados por las siguientes expresiones

V = 2p2 R r2                y          A = 4p2 R r

Donde R es la distancia del centro al centro de la sección circular del toro y r es el radio de la sección circular. Escriba un algoritmo y haga el diagrama de flujo para leer los valores de R y r y calcular el área y el volumen del toro.

Tarea #3 Escritura de programas en C (entrega 1/02/2003)

1. Escriba un programa que muestre la siguiente salida utilizando cuatro sentencias cout, todas con cadenas no vacías.

Lenguaje de programación C. Primer curso de programación.

2. Escriba una sola sentencia cout que despliegue las siguientes líneas. Utilice secuencias de escape para tabuladores y alimentos de línea.

Equipo        jj      jg      je      jp      pts

Cruz Azul     5       2       1       6       7

Guadalajara   6       4       2       0       14

3. Escriba un programa que calcule el número de segundos que contiene un año. Suponga que un año tiene 365 días. Defina variables para segundos por minuto, minutos por hora, horas por día y segundos por año y asígnele los valores apropiados.

4. Sabiendo que una persona ocupa un metro cuadrado de superficie. Hacer un programa para calcular cuantas personas cabrían en la superficie de la Luna. El diámetro de la Luna es de 3,476 km. Defina variables para radio de la luna, valor de pi, área de la luna, área por persona y número de personas y asígnele los valores apropiados.

5. Escriba un programa para calcular la masa en kg que se transforma en energía en una explosión de una bomba atómica de 20 Kilotones. Suponga que 1 kTon equivale 4184 GJouls. Ayuda E = mc2, c = 3x108 m/s. Defina variables para energía de la bomba, jouls por kiloton, velocidad de la luz y masa transformada y asígnele los valores apropiados.

Tarea #4 Lectura de variables C (entrega 8/02/2003)

1. Escriba un programa que lea un número entero representando segundos y despliegue el equivalente en días, horas, minutos y segundos. Por ejemplo: 34,622 segundos es equivalente a 0 días, 9 horas, 37 minutos, 2 segundos.

2. Escribir un programa para obtener la hipotenusa y los ángulos agudos de un triángulo rectángulo a partir de las longitudes de los catetos.

6. La famosa ecuación de Einstein para la conversión de una masa m en energía viene dada por la fórmula E = mc2, donde c es la velocidad de la luz igual a 2.997925x1010cm/s. Escribir un programa que lea una masa en gramos y obtenga la cantidad de energía en Joules  producida de acuerdo con la ecuación de Einstein.

Tarea #5 Sentencia if (entrega 20/02/2003)

1. Escriba un programa que lea tres números reales y decida si forman un triángulo. Suponga que los números se leen de mayor a menor.

2. Escriba un programa que lea tres números reales representando los lados de un triángulo y decida si el triángulo es rectángulo o no. Suponga que los números se leen de mayor a menor.

3. Escriba un programa en C que lea tres números y los imprima en orden. Ayuda: existen 6 casos: a>b>c, a>c>b, b>a>c, b>c>a, c>a>b y c>b>a.
Haga una versión con condiciones compuestas y otra con sentencias if anidadas.
Parta del diseño del algoritmo, dibuje el diagrama de flujo y escriba el programa en C. Recuerde que el formateo del código es importante.

4. Escriba un programa que para resolver una ecuación cuadrática. Considere todos los casos posibles: 2 soluciones diferentes, una solución doble y raíces complejas conjugadas.

Tarea #6 Instrucción switch (entrega 1/03/2013)

Escriba un algoritmo y el diagrama de flujo y haga el programa en C correspondiente, que lea dos números reales y un símbolo de operación y realice la operación aritmética seleccionada (+, -, *, /, ^(potencia, función pow), %(residuo flotante, función fmod)) entre los dos números tecleados.

Utilice la sentencia switch. Verifique que el segundo número no sea cero para las operaciones de % y / y envíe el mensaje adecuado en estos casos. Si el operador no es alguno de los considerados, envíe el mensaje adecuado al usuario.

Tarea #7 Ciclo while (entrega 1/03/2013)

1. Diseñe un algoritmo para imprimir los cuadrados y cubos de los primeros 20 números enteros y escriba el programa en C.

2. Escriba programa con un ciclo controlado por centinela para leer una serie de números hasta que el usuario teclee el número 9999. Dentro del ciclo cuente los múltiplos de 2, de 3 y de 5. Imprima cuantos múltiplos se teclearon en cada caso

3. Escriba un programa que sume los cuadrados de los números de 1 hasta un número especificado por el usuario. Ejemplo, si el número es 4 sumará 1+4+9+16 = 30.

4. Escriba las siguientes expresiones utilizando los operadores de asignación y operadores de incremento o decremento.

a. a = a - 3;        b. a = a/(b+1);        c. a = - b + a;    d . a = a*(b-1)/(c+1);

Tarea #8 ciclos anidados

1. Escriba un programa que dibuje un rectángulo hueco con asteriscos. Deberá solicitar al usuario el ancho y el ato del rectángulo. Por ejemplo, si el usuario suministra un 5 para el ancho y un 7 para el alto, dibujará

*****
*   *
*   *
*   *
*   *
*   *
*****

2. Una terna pitagórica es una terna de números a, b y c tales que sus cuadrados cumple con a2 + b2 = c2, por ejemplo 32 + 42 = 52. Escriba un programa para encontrar todas las ternas pitagóricas de números a, b y c entre 1 y 100. Note que debe hacer tres ciclos anidados.

3. Diseñe un algoritmo para calcular y tabular los valores de la función

para x = 2, 4, 6, 8, y y = 6, 9, 12, 15, 18, 21.

Tarea #9 ciclos for

Haga los siguientes programas utilizando lazos for.

1. Escriba programas para evaluar las siguientes series.

2. Escriba un programa para sumar los primeros 100 números primos.

Ayuda:

Algoritmo
1. Iniciar suma a cero y n primer primo (=2)
2. Hacer ciclo 100 veces
3.   buscar siguiente primo
4.   acumular suma
5. finciclo

Para buscar siguiente primo suponemos que n no es primo
1. p = 0
2. Hacer ciclo para j=n mientras p=0, incrementando j en 1
3.   hacer ciclo para divisor =2 hasta raiz(j)
4.     si j%divisor =0
5.       terminar ciclo
6.   finciclo
7.   si divisor>raiz(j)
8.     p = 1
9. finciclo

3. Escriba un programa que factorice un número en potencias de números primos. Por ejemplo: si se introduce 3000, el programa dará como salida: 23*31*53.

Tarea #10 Ciclos do-while

1. Encuentre las raíz reales de las siguientes ecuaciones con el método de Newton con 5 dígitos de precisión.

a. x3 – 2x2 + 3x +1 = 0, comenzar en x = 0

b. sen(2x) - 3x2 +2x - 1 = 0, comenzar en x = 0 y x=1.

2. Escriba un programa que lea un número entero y calcule el factorial de ese número. Calcule el factorial utilizando un lazo for, un lazo while y un lazo do-while.

3. Escriba un programa que lea un número n y despliegue el triángulo de Pascal de n niveles definido por

1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

etc.

Ayuda: utilice la fórmula de combinaciones de n elementos tomados de k en k que es igual a n!/(k!(n-k)!) con 0<=k<=n. Escriba código para asegurar que se lea un valor de n entre 1 y 20. Utilice solo ciclos do-while.

Tarea #11 Introducción a funciones

1. . Escriba una función en C para determinar el máximo común divisor de dos enteros.

2. Escriba una función que calcule la raíz cúbica de un número real. Utilice la función pow de la biblioteca math.h. Haga un programa para desplegar una tabla con las raíces cuadradas y cúbicas de los números de 1 a 20 para probar su función.

3. Escriba funciones que regresen un valor entero 0 o 1 si los argumento enteros cumplen con lo siguiente:

a) Es un número primo.

b) Es un número perfecto, es decir, la suma de sus divisores es igual a él mismo.

c) Son una terna pitagórica, es decir, a2+b2=c2, donde a, b y c son los argumentos.

d) Sus dos argumentos son primos entre si.

e) Sus cuatro argumentos son diferentes.

e) Sus primeros cuatro argumentos son diferentes al quinto argumento.

Tarea # 12 

1. Escribir funciones para hacer los siguientes cálculos:
a) el promedio de dos números.
b) la distancia entre dos puntos en el plano
c) El área de un triángulo dadas las longitudes de los lados

d) El área de un triángulo dadas las coordenadas de los vértices en el plano

e) El área de un triángulo dadas la base y la altura

f) El área de un triángulo dados dos lados y el ángulo que sustentan 

g) El área de un triángulo dados un lado y los dos ángulos contiguos.

Tarea #13 (parámetros por valor y por referencia)

1. Escriba una función que acepte como argumentos las ecuaciones de dos rectas (pendiente y ordenada al origen) y regrese en argumentos por referencia las coordenadas de la intersección y en otro argumento por referencia un valor 1 si hubo intersección o 0 si no la hubo.

2. Escriba una función para determinar los puntos de intersección de dos elipses. Informe, mediante un argumento, cuantas intersecciones hubo, 0, 1, 2, 3, 4 o 5(el valor 5 indicará que las elipses son coincidentes) y con otros argumentos los valores de x y y de las intersecciones.

Tarea #14 (funciones recursivas)

1. La multiplicación de dos enteros puede definirse recursivamente de la siguiente manera.

        a. mult(a,b) = a, si b=1

        b. mult(a,b) = a+mult(a,b-1)

Escriba una función recursiva para calcular el producto de dos enteros.

2. El triángulo de Pascal, que se ve en la figura, se obtiene al tomar los coeficientes de la expansión de un binomio a la n. Estos coeficientes también pueden obtenerse a partir del número de combinaciones de n objetos tomados de m en m, las cuales se expresan como

               1
             1    1
           1   2   1
        1    3    3    1
      1   4    6    4    1
    1   5   10   10    5   1
  1   6   15   20   15   6   1

etc.

Como puede verse cada término se obtiene de la suma de los dos encima de él. Esto podemos expresarlo en forma recursiva como , para 0<m<n, donde n es el número del renglón. Además . Escriba una función recursiva que calcule un coeficiente del triángulo de Pascal en función de n y m. Escriba una función main que lea el valor de n e imprima el triángulo de Pascal correspondiente.

3. La función de Ackerman A está definida para todos los enteros positivos m y n como sigue:

A(0, n) = n + 1

A(m, 0) = A(m – 1, 1)

A(m, n)= A(m – 1, A(m, n – 1))

 

Escriba una función en C para calcular el valor de la función de Ackerman. Pruebe evaluando algunos valores de A(1, n), A(2, n) y A(3, n). Defina expresiones simples para estas funciones. La función tiene un crecimiento extremadamente grande para valores de m mayores que 3, por ejemplo A(4, 2) = 265536 – 3, evalúe A(4, 1).

4. Desarrolle la expansión de la función de Ackerman del  problema anterior para los siguientes parámetros: A(1,2), A(1,3) y A(2,1)

Tarea #15 (funciones y arreglos)

1. La siguiente función regresa un 1 si el arreglo que pasa como parámetro está ordenado, sino lo está regresa 0:

int ordenado(int a[],int n){

  int i;

  for(i=0;i<n-1;i++)

    if(a[i]>a[i+1])

      return 0;

  return 1;

}

Escriba una función basándose en la anterior que regrese la posición en que se encuentra el primer elemento desordenado, o regrese un -1 si está ordenado.

ejemplo:

   int a[]= {1,2,4,3,5};     funcion(a,5) ===> 3

   int a[]= {1,2,3,4,5};     funcion(a,5) ===> -1

2. Basándose en la función del problema 1 escriba una función regrese un 0 si el arreglo esta desordenado, un 1 si esta ordenado y un -1 si está en orden inverso.

ejemplo:

    int a[]= {1,2,3,4,5};   orden(a,5) ===>  1

   int a[]= {1,2,4,3,5};     orden(a,5) ===> 0

    int a[]= {5,4,3,2,1};     orden(a,5) ===> -1

3. Escriba una función que acepte un arreglo de tipo int  y haga lo siguiente:

a.  regrese la suma de los elementos con índice par menos la suma de los elementos con índice impar.

b. regrese la suma de los elementos pares menos la suma de los elementos impares

c. ponga a 0 los elementos negativos del arreglo

d. regrese el número de los elementos positivos

e. regrese el número de los elementos negativos

f. sume 1 a todos los elementos pares del arreglo

4. Escriba una función que encuentre la moda de un  arreglo de flotantes. La moda se define como el elemento que es mayor o igual a la mitad de los demás y menor o igual a la otra mitad.

5. Escriba un programa interactivo guiado por menú que utilice las siguientes funciones promedio y  desviacion. Deberá suministrar al menos las siguientes opciones:

a. Introducir nuevos datos

b. Calcular promedio y desviación estándar

c. Agregar más datos

d. Terminar

float promedio(float a[],int n){
  float total = 0;
  for (i = 0; i<MAX; i++ )
    total += a[i];
  return total/n;
}

float desviacion(float a[],int n){
  float prom = promedio(a,n);
  float total = 0,desv;
  for (i = 0; i<MAX; i++ )
    total += (a[i]-prom)*(a[i]-prom);
  desv = sqrt(total/(n-1));
  return desv;
}

Escriba las funciones que sea necesario para su programa.

Tarea #16

1. Escriba una función que acepte una matriz de 3x3 por argumento y regrese la traspuesta de esa matriz. La traspuesta de una matriz se obtiene al intercambiar los elementos de las columnas y renglones de la matriz. Por jemplo:

La traspuesta de   es  .

2. Escriba una función que acepte una matriz de 3x3 por argumento y regrese 1 si la matriz es simérica, regrese -1 si es antisimétrica y 0 si no es ninguna de las anteriores. Una matriz es simétrica si es igual a su traspuesta, es antisimétrica si es igual al negativo de su traspuesta. Por ejemplo

Si la matriz es: regresará 0.

Si la matriz es:  regresará 1.

Si la matriz es:  regresará -1.

3. Escriba una función que calcule el determinante de una matriz de 3x3.

4. Escriba un programa interactivo basado en menú para hacer operaciones con matrices de 3x3. Deberá tener opciones para capturar desde el teclado los valores de dos matrices, sumar, restar y multiplicar las matrices calculadas y calcular la traspuesta y el determinante de cada matriz.