Curso de Programación en C/Prog58

De WikiCabal
Saltar a: navegación, buscar

Prog58

#include <stdio.h>

char obten_eleccion( void );
char obten_primer( void );
int obten_int( void );
void count( void );

int main( void )
{
  int eleccion;

  while( ( eleccion = obten_eleccion() ) != 'q' )
  {
    switch( eleccion )
    {
      case 'a' :  printf( "Compra bajo, vende alto.\n");
                  break;
      case 'b' :  putchar( '\a' );  /* ANSI */
                  break;
      case 'c' :  count();
                  break;
      default  :  printf( "¡Error en el Programa!\n");
                  break;
    }
  }
  printf("Adios\n");

  return 0;
}

void count( void )
{
  int i,
      n;

  printf( "Entra un intero:\n" );
  n = obten_int();
  for( i = 1; i <= n; i++ )
    printf( "%d\n", i );
  while( getchar() != '\n' )
    continue;
}

char obten_eleccion( void )
{
  int ch;

  printf( "\ta. aviso           b. timbre\n"
          "\tc. count           q. terminar\n"
          "\tEntra una letra: " );
  ch = obten_primer();
  while (  ( ch < 'a' || ch > 'c') && ch != 'q' )
  {
    printf( "Responde por favor con a, b, c, or q: " );
    ch = obten_primer();
  }

  return ch;
}

char obten_primer( void )
{
  int ch;

  ch = getchar();
  while( getchar() != '\n' )
    continue;

  return ch;
}

int obten_int( void )
{
  int ingreso;
  char ch;

  while( scanf( "%d", &ingreso ) != 1 )
  {
    while( ( ch = getchar()) != '\n' )
      putchar( ch );
      printf( "No es un intero.\nFavor a ingresar un "
              "intero cómo 25, -178, or 3: " );
  }

  return ingreso;
}

Resultado

[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog58 Prog58.c
[rrc@Pridd CClase]$ ./Prog58
	a. aviso           b. timbre
	c. count           q. terminar
	Entra una letra: 4
Responde por favor con a, b, c, or q: a
Compra bajo, vende alto.
	a. aviso           b. timbre 
	c. count           q. terminar
	Entra una letra: b
	a. aviso           b. timbre
	c. count           q. terminar
	Entra una letra: c
Entra un intero:
3
1
2
3
	a. aviso           b. timbre
	c. count           q. terminar
	Entra una letra: q
Adios

Explicación