2014

Clase 8

Menu Principal | VIM | Clase 1 | Clase 2 | Clase 3 | Clase 4 | Clase 5 | Clase 6 | Clase 7

Segunda Prueba Lunes 20 de Octubre 2014.

Memoria dinámica

En esta sesión trabajaremos con tres problemas que usted deberá intentar por sí mismo. Cualquier duda de implementación (es decir, cómo se programa determinada cosa) la veremos caso a caso, pero es fundamental que ustedes mismos piensen los algoritmos, es decir, paso a paso lo que el programa debe hacer y cómo, para los tres problemas.

Representación de un número de doble precisión

Usted deberá escribir un programa que:

  1. Averigue el tamaño de un double y lo muestre en pantalla.
  2. Pida un número de doble precisión al usuario y muestre cómo se representa ese double en términos de sus bytes (que a su vez son enteros entre 0 y 255).

Hints:

  1. Para determinar el tamaño de un double, use sizeof(double).
  2. Debe pasar de puntero a double a puntero a unsigned char para explorar los bytes.
  #include <stdio.h>

int main()
{
 double *nd;
 double a;
 printf("Ingrese un numero double \n");
 scanf("%lf",&a);
 nd=&a;
 printf("El numero ingresado es %lf \n", *nd);
 int s = sizeof(*nd);
 printf("El tamano de su double es %d \n", s);

 for (int i = 0 ; i< s ; ++i)
 {
  unsigned char byte = *((unsigned char *)&a + i);
  printf("byte %d = %u \n", i, (unsigned)byte);
 }
 return 0;
}

Compile con:

   $ gcc double.c -o double -std=c99

Inversión de texto

Ahora, usted deberá escribir un programa que reciba una línea de texto ingresada por el usuario y la muestre invertida en pantalla. Por ejemplo, ingresar hola mundo debe producir odnum aloh.

Hints:

  1. Para leer una línea de texto no use scanf sino fgets. Un ejemplo de cómo se usa fgets:
#include <stdio.h>

int main()
{
   char str[50];

   printf("Enter a string : ");
   fgets(str,50,stdin);

   printf("You entered: %s \n", str);

   return(0);
}
  1. Para invertir, trabaje con un arreglo de char, manipulando las letras individualmente.

Concatenación de líneas

Ahora, usted deberá escribir un programa que reciba varias líneas de texto ingresadas por el usuario y, al final, las muestre todas una tras otra. El programa debe dejar de pedir líneas al usuario cuando reciba una conteniendo únicamente la palabra END.

Hints:

  1. Use realloc para extender un arreglo de char a medida que vaya recibiendo más líneas.
  2. Para poner un salto de línea, utilice el carácter especial \n.
  3. Puede usar la función strcmp para detectar la palabra END (incluya string.h para usarla) o simplemente comparar las tres primeras letras con E, N y D por separado. Si lo hace de la segunda forma, debe asegurarse que el largo de la línea sea 3.

University

Personal

edit SideBar