0% encontró este documento útil (0 votos)
51 vistas12 páginas

Programas C Correctos

El documento contiene varios programas en C para resolver diferentes problemas matemáticos y lógicos de manera secuencial. Cada programa presenta un problema, solicita datos de entrada, realiza cálculos y muestra resultados. Los temas incluyen conversión de pesetas a euros, intercambio de valores de variables, validación de fechas y horas, y cálculo de notas y resultados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
51 vistas12 páginas

Programas C Correctos

El documento contiene varios programas en C para resolver diferentes problemas matemáticos y lógicos de manera secuencial. Cada programa presenta un problema, solicita datos de entrada, realiza cálculos y muestra resultados. Los temas incluyen conversión de pesetas a euros, intercambio de valores de variables, validación de fechas y horas, y cálculo de notas y resultados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

/* Programa: De pesetas a euros (Soluci�n 1) */

#include <conio.h>
#include <stdio.h>

#define EURO 166.386

int main()
{
int pesetas;
float euros;

printf( "\n Introduzca cantidad en pesetas: " );


scanf( "%d", &pesetas );

euros = pesetas / EURO;

printf( "\n Equivalen a: %.2f euros", euros );

getch(); /* Pausa */

return 0;
}
/* Programa: De pesetas a euros (Soluci�n 2) */

#include <conio.h>
#include <stdio.h>

int main()
{
int pesetas;

printf( "\n Introduzca cantidad en pesetas: " );


scanf( "%d", &pesetas );

printf( "\n Equivalen a: %.2f euros", pesetas / 166.386 );

getch(); /* Pausa */

return 0;
}
/* Programa: Intercambio de los valores de tres variables */

#include <conio.h>
#include <stdio.h>

int main()
{
int auxiliar, v1, v2, v3;

printf( "\n Introduzca el valor de v1: " );


scanf( "%d", &v1);
printf( " Introduzca el valor de v2: " );
scanf( "%d", &v2);
printf( " Introduzca el valor de v3: " );
scanf( "%d", &v3);

printf( "\n Intercambiando los valores..." );


auxiliar = v3;
v3 = v2;
v2 = v1;
v1 = auxiliar;

printf( "\n\n Ahora, el valor de v1 es: %d", v1 );


printf( "\n Ahora, el valor de v2 es: %d", v2 );
printf( "\n Ahora, el valor de v3 es: %d", v3 );

getch(); /* Pausa */

return 0;
}
/* Programa: N�mero m�ltiplo de 3 */

#include <conio.h>
#include <stdio.h>

int main()
{
int numero;

printf( "\n Introduzca un n%cmero entero: ", 163 );


scanf( "%d", &numero );

if ( numero % 3 == 0 )
printf( "\n ES M%cLTIPLO DE 3", 233 );
else
printf( "\n NO ES M%cLTIPLO DE 3", 233 );

getch(); /* Pausa */

return 0;
}

/* Programa: A�o bisiesto o no */

#include <conio.h>
#include <stdio.h>

int main()
{
int anio;

printf( "\n Introduzca un a%co: ", 164 );


scanf( "%d", &anio );

if ( anio % 4 == 0 && anio % 100 != 0 || anio % 400 == 0 )


printf( "\n ES BISIESTO" );
else
printf( "\n NO ES BISIESTO" );

getch(); /* Pausa */

return 0;
}
/* Programa: Color de un sem�foro (Soluci�n 1) */

#include <conio.h>
#include <stdio.h>

int main()
{
int numero;

printf( "\n Listado de colores de un sem%cforo:", 160 );


printf( "\n\n 1. Rojo" );
printf( "\n 2. Verde" );
printf( "\n 3. Amarillo" );
printf( "\n\n Introduzca n%cmero de color: ", 163 );

scanf( "%d", &numero );

switch ( numero )
{
case 1 : printf( "\n Rojo significa: \"No pasar\"" );
break;
case 2 : printf( "\n Verde significa: \"Adelante\"" );
break;
case 3 : printf( "\n Amarillo significa: \"Precauci%cn\"", 162 );
break;
default : printf( "\n ERROR: %d, no esta asociado a ning%cn color.",
numero, 163 );
}

getch(); /* Pausa */

return 0;
}
/* Programa: La hora un segundo despu�s */

#include <conio.h>
#include <stdio.h>

int main()
{
int h, m, s;

printf( "\n Introduzca horas: " );


scanf( "%d", &h );
printf( "\n Introduzca minutos: " );
scanf( "%d", &m );
printf( "\n Introduzca segundos: " );
scanf( "%d", &s );

if ( h >= 0 && h <= 23 && m >= 0 && m <= 59 && s >= 0 && s <= 59 )
{
s++;
if ( s == 60 )
{
s = 0;
m++;
if ( m == 60 )
{
m = 0;
h++;
if ( h == 24 )
h = 0;
}
}
printf( "\n Un segundo despu%cs la hora es: %d:%d:%d", 130, h, m, s );
}
else
printf( "\n ERROR: La hora es incorrecta." );

getch(); /* Pausa */

return 0;
}
/* Programa: Validar fecha (Soluci�n 1) */

#include <conio.h>
#include <stdio.h>

int main()
{
int dia, mes, anio;

printf( "\n Introduzca d%ca: ", 161 );


scanf( "%d", &dia );
printf( "\n Introduzca mes: " );
scanf( "%d", &mes );
printf( "\n Introduzca a%co: ", 164 );
scanf( "%d", &anio );

if ( mes >= 1 && mes <= 12 )


{
switch ( mes )
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : if ( dia >= 1 && dia <= 31 )
printf( "\n FECHA CORRECTA" );
else
printf( "\n FECHA INCORRECTA" );
break;

case 4 :
case 6 :
case 9 :
case 11 : if ( dia >= 1 && dia <= 30 )
printf( "\n FECHA CORRECTA" );
else
printf( "\n FECHA INCORRECTA" );
break;

case 2 : if( anio % 4 == 0 && anio % 100 != 0 || anio % 400 == 0 )


if ( dia >= 1 && dia <= 29 )
printf( "\n FECHA CORRECTA" );
else
printf( "\n FECHA INCORRECTA" );
else
if ( dia >= 1 && dia <= 28 )
printf( "\n FECHA CORRECTA" );
else
printf( "\n FECHA INCORRECTA" );
}
}
else
printf( "\n FECHA INCORRECTA" );

getch(); /* Pausa */

return 0;
}
Soluci�n 2: utilizando una variable interruptor
A continuaci�n, se muestra una segunda soluci�n, en la cual, se hace uso de una
variable interruptor (fecha_correcta), tambi�n llamada bandera, centinela o
conmutador:

/* Programa: Validar fecha (Soluci�n 2) */

#include <conio.h>
#include <stdio.h>

int main()
{
int dia, mes, anio, fecha_correcta;

printf( "\n Introduzca d%ca: ", 161 );


scanf( "%d", &dia );
printf( "\n Introduzca mes: " );
scanf( "%d", &mes );
printf( "\n Introduzca a%co: ", 164 );
scanf( "%d", &anio );

fecha_correcta = 0;

if ( mes >= 1 && mes <= 12 )


{
switch ( mes )
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : if ( dia >= 1 && dia <= 31 )
fecha_correcta = 1;
break;

case 4 :
case 6 :
case 9 :
case 11 : if ( dia >= 1 && dia <= 30 )
fecha_correcta = 1;
break;

case 2 : if ( anio % 4 == 0 && anio % 100 != 0 || anio % 400 == 0 )


{
if ( dia >= 1 && dia <= 29 )
fecha_correcta = 1;
}
else
if ( dia >= 1 && dia <= 28 )
fecha_correcta = 1;
}
}

/* Llegados a este punto, seg�n el valor de fecha_correcta,


por pantalla se mostrar� un mensaje u otro. */

if ( fecha_correcta )
printf( "\n FECHA CORRECTA" );
else
printf( "\n FECHA INCORRECTA" );

getch(); /* Pausa */

return 0;
}
Soluci�n 3: utilizando una nueva variable
Por �ltimo, se propone una tercera soluci�n, donde se utiliza una nueva variable
llamada dia_maximo:

/* Programa: Validar fecha (Soluci�n 3) */

#include <conio.h>
#include <stdio.h>

int main()
{
int dia_maximo, dia, mes, anio, fecha_correcta;

printf( "\n Introduzca d%ca: ", 161 );


scanf( "%d", &dia );
printf( "\n Introduzca mes: " );
scanf( "%d", &mes );
printf( "\n Introduzca a%co: ", 164 );
scanf( "%d", &anio );

fecha_correcta = 0;

if ( mes >= 1 && mes <= 12 )


{
switch ( mes )
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : dia_maximo = 31;
break;

case 4 :
case 6 :
case 9 :
case 11 : dia_maximo = 30;
break;

case 2 : if ( anio % 4 == 0 && anio % 100 != 0 || anio % 400 == 0 )


dia_maximo = 29;
else
dia_maximo = 28;
}

if ( dia >= 1 && dia <= dia_maximo )


fecha_correcta = 1;
}

if ( fecha_correcta )
printf( "\n FECHA CORRECTA" );
else
printf( "\n FECHA INCORRECTA" );

getch(); /* Pausa */

return 0;
}
/* Programa: Calificaci�n seg�n nota validada */

#include <conio.h>
#include <stdio.h>

int main()
{
float nota;

printf( "\n Introduzca nota (real): " );


scanf( "%f", &nota );

/* Si la primera nota introducida por el usuario es correcta,


el bucle no itera ninguna vez. */

while ( nota < 0 || nota > 10 )


{
printf( "\n ERROR: Nota incorrecta, debe ser >= 0 y <= 10\n" );
printf( "\n Introduzca nota (real): " );
scanf( "%f", &nota );
}

/* Mientras que el usuario introduzca una nota incorrecta,


el bucle iterar�. Y cuando introduzca una nota correcta,
el bucle finalizar�. */

if ( nota >= 5 )
printf( "\n APROBADO" );
else
printf( "\n SUSPENDIDO" );

getch(); /* Pausa */

return 0;
}
/* Programa: Suma y cantidad de resultados calculados */

#include <conio.h>
#include <stdio.h>

int main()
{
char seguir;
int acumulador, contador, numero, resultado;

acumulador = 0;
contador = 0;
do
{
printf( "\n Introduzca un n%cmero entero: ", 163 );
scanf( "%d", &numero);

resultado = numero * numero - numero;


printf( "\n %d * %d - %d = %d", numero, numero, numero, resultado );

acumulador += resultado;
contador++;

printf( "\n\n %cDesea introducir otro n%cmero (s/n)?: ", 168, 163 );
fflush( stdin );
scanf( "%c", &seguir);
} while ( seguir != 'n' );

printf( "\n Ha introducido %d n%cmero(s).", contador, 163 );


printf( "\n\n La suma de los resultados es: %d", acumulador );

getch(); /* Pausa */

return 0;
}
/* Programa: Cuadrados de los n�meros del 1 al 10 */

#include <conio.h>
#include <math.h>
#include <stdio.h>

int main()
{
int numero;

printf( "\n " );

for ( numero = 1 ; numero <= 10 ; numero++ )


{
printf( "%.f ", pow( numero, 2 ) );
}

getch(); /* Pausa */

return 0;
}
/* Programa: Multiplicaci�n con sumas sucesivas */

#include <conio.h>
#include <stdio.h>

int main()
{
int acumulador, contador, n1, n2;

printf( "\n Introduzca primer n%cmero (entero): ", 163 );


scanf( "%d", &n1 );
printf( "\n Introduzca segundo n%cmero (entero): ", 163 );
scanf( "%d", &n2 );

if ( n1 >= 0 && n2 >= 0 )


{
acumulador = 0;

if ( n2 != 0 )
{
contador = 1;
while ( contador <= n1 )
{
acumulador += n2;
contador++;
}
}

printf( "\n %d * %d = %d", n1, n2, acumulador );

}
else
printf( "\n ERROR: Ambos n%cmeros deben ser mayores o iguales que cero.",
163 );

getch(); /* Pausa */

return 0;
}
/* Programa: Tabla de multiplicar de un n�mero */

#include <stdio.h>

int main()
{
char seguir;
int i, numero;

do
{
printf( "\n Introduzca un n%cmero entero: ", 163 );
scanf( "%d", &numero );

printf( "\n La tabla de multiplicar del %d es:\n", numero );

/* Inicio del anidamiento */

for ( i = 1 ; i <= 10 ; i++ )


printf( "\n %d * %d = %d", i, numero, i * numero );

/* Fin del anidamiento */

printf( "\n\n %cDesea ver otra tabla (s/n)?: ", 168 );


fflush( stdin );
scanf( "%c", &seguir );
} while ( seguir != 'n' );

return 0;
}
/* Programa: Men� calculadora de n�meros enteros */

#include <conio.h>
#include <stdio.h>

int main()
{
char opcion;
int n1, n2;

do
{
printf( "\n >>> MENU CALCULADORA <<<" );
printf( "\n\n 1. Sumar dos n%cmeros.", 163 );
printf( "\n 2. Restar dos n%cmeros.", 163 );
printf( "\n 3. Multiplicar dos n%cmeros.", 163 );
printf( "\n 4. Dividir dos n%cmeros.", 163 );
printf( "\n 5. Salir.\n" );

/* Filtramos la opci�n elegida por el usuario */


do
{
printf( "\n Introduzca opci%cn (1-5): ", 162 );
fflush( stdin );
scanf( "%c", &opcion);

} while ( opcion < '1' || opcion > '5' );


/* La opci�n s�lo puede ser '1', '2', '3', '4' o '5' */

switch ( opcion )
{
/* Opci�n 1: Sumar */
case '1': printf( "\n Introduzca primer sumando: " );
scanf( "%d", &n1);
printf( "\n Introduzca segundo sumando: " );
scanf( "%d", &n2);
printf( "\n %d + %d = %d\n", n1, n2, n1 + n2 );
break;

/* Opci�n 2: Restar */
case '2': printf( "\n Introduzca minuendo: " );
scanf( "%d", &n1);
printf( "\n Introduzca sustraendo: " );
scanf( "%d", &n2);
printf( "\n %d - %d = %d\n", n1, n2, n1 - n2 );
break;

/* Opci�n 3: Multiplicar */
case '3': printf( "\n Introduzca primer operando: " );
scanf( "%d", &n1);
printf( "\n Introduzca segundo operando: " );
scanf( "%d", &n2);
printf( "\n %d * %d = %d\n", n1, n2, n1 * n2 );
break;
/* Opci�n 4: Divisi�n entera */
case '4': printf( "\n Introduzca dividendo: " );
scanf( "%d", &n1);
printf( "\n Introduzca divisor: " );
scanf( "%d", &n2);
if ( n2 != 0 )
printf( "\n %d div %d = %d ( Resto = %d )\n", n1, n2,
n1 / n2, n1 % n2 );
else
printf( "\n ERROR: No se puede dividir entre cero.\
n" );
}

} while ( opcion != '5' );

return 0;
}
/* Programa: Ceros introducidos (Soluci�n 1) */

#include <conio.h>
#include <stdio.h>

int main()
{
int ceros, i, numero;

ceros = 0;

for ( i = 1 ; i <= 5 ; i++ )


{
printf( "\n Introduzca n%cmero entero %d: ", 163, i );
scanf( "%d", &numero );

while ( numero == 0 )
{
ceros++;
printf( "\n Introduzca n%cmero entero %d: ", 163, i );
scanf( "%d", &numero );
}
}

printf( "\n Ha introducido %d cero(s).", ceros );

getch(); /* Pausa */

return 0;
}
/* Programa: Divisi�n entera con restas sucesivas */

#include <conio.h>
#include <stdio.h>

int main()
{
int cociente, dividendo, divisor, resto;

printf( "\n Introduzca dividendo (entero): " );


scanf( "%d", &dividendo );
printf( "\n Introduzca divisor (entero): " );
scanf( "%d", &divisor );

if ( dividendo > 0 && divisor > 0 )


{
cociente = 0;
resto = dividendo;

while ( resto >= divisor )


{
resto -= divisor;
cociente++;
}

printf( "\n %d div %d = %d ( Resto = %d )", dividendo, divisor, cociente,


resto );
}
else
printf( "\n ERROR: Ambos n%cmeros deben ser mayores que cero.", 163 );

getch(); /* Pausa */

return 0;
}

También podría gustarte