Práctico 7: bucles, algoritmos, resolucion de problemas

Parte 1: otros bucles, pruebas de escritorio

1.1. Programas con bucles do-while

/* 1.1 */
int i = 0;
do
  i = i + 1;
while (i < 4);
}
/* 1.2 */
int i = 10;
do
  i = i + 1;
while (i < 4);
}
/* 1.3 */
int i = 3;
int a = 0;
do {
  i = i + 1;
  a = a + i;
}
while (i < 3);
while (i < 5)
 i = i + 2;
 a = a + i;
}

1.2. Programas con bucles for

/* 2.1 */
int i = 0;
int b = 0;
for(i = 0; i < 3; i = i + 1){
  b = b + 2;
}
/* 2.2 */
int i = 0;
for(i = 0; i < 2; i = i + 3){
  i = i - 2;
}
/* 2.3 */
int i = 10;
int b = 4;
for(i = 0; i < b; i = i + 2){
  b = b + 1;
}
/* 2.4 */
int i = 0;
int a = 1;
for(i = 0; i < 10; i = i + a){
   a = a + 1;
}

1.3. Programas con bucles anidados

/* 3.1 */
int i=0;
int j=0;
while (i < 3){
  while (j < 3)
    j = j + 1;
  i = i + 1;
}
/* 3.2 */
int i=0;
int j=0;
int a=0;
while (i < 4){
  if (i % 2 == 0){
    while (j < i){
      a = a + 1;
      j = j + 1;
    }
  } else
    a = a - 2;
  i = i+1;
}

1.4. Salida de programas

Acá no se trata de hacer pruebas de escritorio. En cambio, la consigna es decir cuál va a ser la salida cuando ejecutamos los programas siguientes.

/* 4.1 */
int i = 0;
int a = 20;
while(i < a){
  i = i + 1;
  a = a - 2;
  printf("%d < %d ?", i, a);
}
/* 4.2 */
int a = 0;
int b = 0;
while(a <= 10){
  b = 10 - a;
  if (b % 3 == 0){
    printf("%d", b);
  }
  a = a + 1;
}
/* 4.3 */
int i = 0;
int j = 0;
int a = 0;
for(i = 1; i <= 20; i = i + 1){
    for(j = 1; j <= 30 ; j = j + 1){
        a = a + 1;
    }
}
printf("%d %d %d", i, j, a);

2. Resolución de problemas (sin bucles)

Escribir algoritmos que permitan resolver los siguientes problemas:

  1. Ingresar dos valores numéricos, calcular su suma y mostrar el resultado.
  2. Ingresar un valor numérico, calcular y publicar el cubo de dicho número.
  3. Ingresar dos valores numéricos, que representan la base y la altura de un rectángulo. Calcular y publicar su perímetro y superficie.
  4. Ingresar la base de un triángulo, y calcular su área sabiendo que la altura es igual al doble de la base.
  5. Ingresar 3 valores numéricos, calcular y publicar su promedio.
  6. Ingresar dos valores numéricos diferentes, identificar y publicar el mayor de ellos.
  7. Ingresar 4 datos enteros denominados I, J, K y L. Si I/J es igual a K/L, publicar un mensaje indicando que los cocientes son iguales. Verificar que ambos divisores sean distintos de cero.
  8. Ingresar la cantidad de bancos de un aula, y la cantidad de alumnos inscriptos para trabajar en esa aula. Determinar si alcanzan los bancos disponibles para todos los alumnos. De no ser así, especificar cuántos bancos es necesario agregar en el aula.

Elaborá el algoritmo (pseudocódigo) de cada uno de los algoritmos propuestos. Codificá la solución en lenguaje C.

3. Resolución de problemas (en general)

Escribir algoritmos que permitan resolver los siguientes problemas.

  1. Ingresar un valor entero positivo nn, imprimir todos los enteros desde nn hasta 00.

  2. Ingresar un valor entero positivo nn, imprimir n/2n/2, luego n/4n/4, etc. hasta 00.

  3. Ingresar un valor entero nn, imprimir todos sus divisores.

  4. Ingresar un valor nn, luego nn enteros, y determinar el mayor de todos.

  5. Ingresar nn datos numéricos. Identificar y publicar el menor entre todos los mayores que 100.

  6. Ingresar nn datos numéricos. Identificar y publicar el mayor y el menor de todos, y en qué posición se encuentra cada uno

  7. Ingresar y sumar una serie de números positivos. La carga finaliza cuando se ingresa un valor negativo. Imprimir la suma resultante

  8. Ingresar nn datos numéricos. Contar e imprimir la cantidad de valores que son mayores que el primer dato ingresado.

  9. Ingresar nn. Calcular e imprimir i=1ni+i=13n\sum_{i=1}^n i+ \prod_{i=1}^3 n.

Codificar la solución para cada problema en lenguaje C.