Trabajo Práctico Número 2: Estructuras de Control Repetitivas

Aquí vas a encontrar algunos ejercicios de las Estructuras Repetitivas con el for, do while y while.

Suma de enteros (for)


/**********************************************************************/
   /*
    Algoritmos y Estructuras de Datos  - UTN Regional San Francisco
 
    Codificacion de la suma de los cinco primeros numeros enteros a
    partir del cero, implementado con un for.
   */
/**********************************************************************/
#include <stdio.h>
#include <conio.h>
 
int main( )
{
   int i, suma=0;
   for(i=1; i<=5; i++)
      suma+=i; //Equivale a suma=suma + i
   printf("La suma de los cinco primeros numeros es: %d\n", suma);
}

  • Se presenta a continuación la modificación del programa.

/**********************************************************************/
   /*
    Algoritmos y Estructuras de Datos 2008 - UTN Regional San Francisco
 
    Codificacion de la suma de los cinco primeros numeros enteros a
    partir del cero, implementado con un while.
   */
/**********************************************************************/
 
#include <stdio.h>
#include <conio.h>
 
int main( )
{
   int i=1, suma=0;
   while (i<=5) /* se ejecuta el bloque mientras i<=5 */
   {
      suma+=i; /* equivale a suma=suma+i; */
      ++i;     /* equivale a i=i+1; */
   }
   printf("suma = %d\n", suma);
}


Ejercicio 5 del tp2

Desarrolle un programa que determine si un cliente de una tienda departamental ha excedido o no el límite de su cuenta de crédito. Se cuenta con la siguiente información: *a)* Número de cuenta, *b)* Total de artículos adquiridos a crédito por este cliente durante este mes, *c)* Total de todos los créditos aplicados a la cuenta de este cliente durante este mes, *c)* Límite de crédito permitido. Calcular el nuevo saldo (=saldo inicial + compras - créditos), mostrar el nuevo saldo y determinar si el mismo excede el límite de crédito del cliente. En el caso de los clientes que lo hicieron, el programa deberá mostrar el mensaje "Límite de crédito excedido". En todos los otros casos mostrar el nuevo saldo.

#include <stdio.h>
#include <conio2.h>
 
int main()
{
 
    int nroCuenta, i;
    float saldoAnterior, sumaDineroCompra, sumaDineroCredito, topeCredito, nuevoSaldo;
 
    for(i=0; i<5; i++)
    {
            printf("Ingrese el numero de cuenta del cliente %d: ", i+1); scanf("%d", &nroCuenta);
            printf("Ingrese el saldo del mes anterior ($$$): "); scanf("%f", &saldoAnterior);
            printf("Ingrese la suma total de articulos adquiridos a credito ($$$): "); scanf("%f", &sumaDineroCompra);
            printf("Ingrese la suma total del credito otorgado al cliente ($$$): "); scanf("%f", &sumaDineroCredito);
            printf("Ingrese el limite de credito del cliente ($$$): "); scanf("%f", &topeCredito);
 
            nuevoSaldo = saldoAnterior + sumaDineroCompra - sumaDineroCredito;
 
            printf("\n\nEl nuevo saldo calculado es: %.2f\n", nuevoSaldo);
 
            if(nuevoSaldo > topeCredito)
            {
                          printf("Numero de cuenta: %d\n", nroCuenta);
                          printf("El limite de credito es: %.2f\n", topeCredito);
                          printf("El saldo nuevo calculado es: %.2f\n", nuevoSaldo);
                          printf("LIMITE DE CREDITO EXCEDIDO!!!\n");
            }
 
            printf("\n\n");
    }
 
}



Potencias de PI

Utiliza las funciones definidas en las librerías adicionales "math.h".
Más info aquí.
/**********************************************************************/
   /*
    Algoritmos y Estructuras de Datos 2008 - UTN Regional San Francisco
 
    Implementación del uso de constantes. Utilización de librerías
    suplementarias como el "math.h" para la función "pow". Mas info
   */
/**********************************************************************/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PI 3.14159265359 //define una constante
 
int main( )
{
   int i;
   for (i=2; i<=10; i++)
   {
      printf("PI elevado a %d es %5.2lf y su raiz es %5.2lf\n", i, pow(PI, i), sqrt(pow(PI, i)));
   }
}



Comprobación de números primos

El siguiente programa comprueba si un número es primo o no. Recuerda que un número primo es aquél que puede dividirse únicamente por sí mismo y por la unidad. Una manera de decidir si un número es primo o no, es dividirlo por todos los números comprendidos entre el 1 y el número. Si se encuentra que el número es divisible por alguno de ellos, se deduce que ese número no es primo. Vamos a utilizar el operador módulo o resto de la división entera (%) para comprobar si la división es exacta. Este operador da como resultado el resto de la división del primer operando por el segundo. Por ejemplo, 5%2 es 1, puesto que el resto de dividir 5 entre 2 es 1.


 
[[code]]
[[code format="c"]]
#include <stdio.h>
#include <conio.h>
 
int main( )
{
   int i, band=0,b=0,r, num;
   printf(" ingrese un numero");
   scanf ("%d", &num);
   if ( num==1 || num==2 || num==3) prinft("el numero %d es primo",num);
   else {
         for (i=2; i<num; i++)
          {
           r=num%i;
           if (r==0) band=1;
          }
         if(band==0) <span style="font-family: arial,helvetica,sans-serif; line-height: 1.5;">prinft("el numero %d es primo",num);
                else prinft("el numero %d no es primo",num);
      }
}
 
</span>


  • Ejercicio en donde usamos la sentencia switch y menu.

El siguiente es el menú de un restaurante de bocadillos. Diseñar un programa que lea el número de unidades consumidas de cada alimento y muestre el total de unidades de alimentos consumidos y el total en $ que tiene que pagar. Cuando el cliente termine de consumir, elige la opción terminar.

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int op,bj=0, bq=0,r=0,c=0,pt=0,cant;
 float pbj,pbq,pr,pc,ppt,total;
 do
 {
      printf("\n1. Bocadillo de jamón (2.50 $)");
      printf("\n2. Bocadillo de queso (2.00 $)");
      printf("\n3. Patatas fritas (1.50 $)");
      printf("\n4. Refresco (2.75 $)");
      printf("\n5. Cerveza (3.25 $)");
      printf("\n0. TERMINAR");
      printf("\nElija opción -> ");
      scanf("%d",&op);
      if(op!=0)
      {
        printf("\n Cantidad-> ");
        scanf("%d",&cant);
      }
      switch(op)
      {
           case 1: bj=bj+cant;
                   break;
           case 2: bq=bq+cant;
                   break;
           case 3: pt=pt+cant;
                   break;
           case 4: r=r+cant;
                   break;
           case 5: c=c+cant;
                   break;
           case 0: pbj=bj*2.50;
                   pbq=bq*2.00;
                   pr=r*1.75;
                   ppt=pt*1.50;
                   pc=c*1.25;
                   total=pbj+pbq+pr+ppt+pc;
                   printf("\n   Cantidad\tProducto       \tPrecio");
                   if(bj!=0)
                   printf("\n\t%d      \tBocadillo jamon\t%f",bj,pbj);
                   if(bq!=0)
                   printf("\n\t%d      \tBocadillo queso\t%f",bq,pbq);
                   if(pt!=0)
                   printf("\n\t%d      \tPatatas fritas \t%f",pt,ppt);
                   if(r!=0)
                   printf("\n\t%d      \tRefresco       \t%f",r,pr);
                   if(c!=0)
                   printf("\n\t%d      \tCerveza        \t%f",c,pc);
                   printf("\n\n        \tTOTAL   ->     \t%f",total);
                   printf("\n\n\n");
                   getch();
                   break;
            default: printf("\n opcion incorrecta");
            }
}while(op!=0);
}
  • Ejercicio para invertir dígitos

Diseñar un programa que lea un número natural n y escriba sus dígitos invertidos.
#include <stdio.h>
#include <conio.h>
int main()
{
    int n;
    /*Pide el numero*/
    printf("\nIntroduzca un numero:\n");
    scanf("%d",&n);
 
    /*Antes comprueba que sea un numero no negativo*/
    if(n<0)
        printf("\nError: numero negativo\n");
 
    else if(n==0)/*Caso especial*/
        printf("\nNumero invertido: 0\n");
 
    else/*Invierte el numero cifra por cifra*/
    {
        printf("\nNumero invertido: ");
 
        while(n>0)
        {
            printf("%d", n%10);
            n/=10;
        }
 
    }
 
}