INTRODUCCION A LA PROGRAMACION COMPONENTE PRÁCTICO
YEFERSSON SANCHEZ ANGEL T.I. 95112100904
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA (UNAD) NEIVA 2013
1. Crear un programa llamado EJERCICIO1, que permita al usuario introducir una serie de n valores que estén dentro del intervalo 1 a 1000 y realice las siguientes operaciones: • Sume todos los valores e imprima el resultado. • Muestre el total de valores pares e impares.
#include #include int main() { int num, k, n, suma=0,par=0,impar=0; printf("cuantos numeros desea sumar \n"); scanf("%d",&n); while(n<1) { printf("valor incorrecto, cuantos numeros desea sumar \n"); scanf("%d",&n); } for(k=1;k<=n;k++) { printf("ingrese un numero entre 1 y 1000 \n"); scanf("%d",&num); while(num<1 || num>1000) { printf("valor incorrecto, el numero debe estar entre 1 y 1000 \n"); scanf("%d",&num); } suma=suma+num; if(num%2==0) { par=par+1; } else impar=impar+1; } printf("la suma total de los numeros es: %d \n",suma); printf("total de numeros pares es: %d \n",par); printf("total de numeros imapres es: %d \n",impar); getch(); }
2. Crear un programa, llamado EJERCICIO2 que resuelva el siguiente problema: una Compañía fumigadora maneja las siguientes tarifas en sus trabajos: Tipo 1: fumigación contra moscas $10.000 por hectárea. Tipo 2: fumigación contra hongos $20.000 por hectárea. Tipo 3: fumigación contra gusanos $30.000 por hectárea. Para el ejercicio debe tener en cuenta que si el área a fumigar es mayor a 100 hectáreas, se tiene un descuento del 5%, si es mayor a 300 el 10%, y si es mayor a 500 el 15%. El programa debe ejecutarse para n agricultores y mostrar: Tipo de fumigación Número de hectáreas a fumigar Total a pagar
# include # include #include #include # define borrar system("cls"); void t1(); // funcion para fumigacion de moscas void t2(); // funcion para fumigacion de hongos void t3(); // funcion para fumigacion de gusanos float validar (float x); // funcion para validar descuentos using namespace std; int main (){ int a,r; char opcion; cout<<"DIGITE LA CANTIDAD DE VECES QUE DESEA HACER ESTA OPERACION \n\n"; cin>>a; for (r=1;r<=a;r++){
system("cls"); cout<<"DIGITE EL TIPO DE FUMIGACION \n\n"; // menu cout<<" 1. PARA FUMIGACION DE MOSCAS \n"; cout<<" 2. PARA FUMIGACION DE HONGOS \n"; cout<<" 3. PARA FUMIGACION DE GUSANOS \n\n"; opcion=getch(); switch(opcion){ case '1': system("cls"); t1(); break; case '2': system("cls"); t2(); break; case '3': system("cls"); t3(); break; default: system("cls"); printf("\n DIGITO ALGO INCORRECTO \n"); break; }
} } float validar (float v){ // funcion de validacion descuentos float des; if (v>100 && v<=300){ // valoida numero de hectareas y da el valor del descuento en un float des=0.05; } if (v>300 && v<=500){ des=0.1; } if (v>500){ des =0.15; } return des; // regresa el descuento que aplica } void t1(){ int v; float n,to; cout<<" DIGITE EL NUMERO DE HECTAREAS A FUMIGAR \n"; cin>>v; n = validar (v); // se envia a validar el descuento y devuelve para operar y dar el resultado to=10000*v*n; system("cls");
cout<<" EL TIPO DE FUMIGACION ES PARA MOSCAS \n"; cout<<" EL NUMERO DE HECTAREAS A FUMIGAR ES "<>v; n= validar (v); // se envia a validar el descuento y devuelve para operar y dar el resultado to=20000*v*n; system("cls"); cout<<" EL TIPO DE FUMIGACION ES PARA MOSCAS \n"; cout<<" EL NUMERO DE HECTAREAS A FUMIGAR ES "<>v;
n= validar (v); // se envia a validar el descuento y devuelve para operar y dar el resultado to=30000*v*n; system("cls"); cout<<" EL TIPO DE FUMIGACION ES PARA MOSCAS \n"; cout<<" EL NUMERO DE HECTAREAS A FUMIGAR ES "<
3. Crear un programa llamado EJERCICIO3 que permita registrar información de los accidentes de tránsito ocurridos en una ciudad X de Colombia. Los datos solicitados son edad y género del conductor. El software debe mostrar como resultado los siguientes resúmenes estadísticos: Cantidad y porcentaje de conductores menores de 25 años. Cantidad y porcentaje de conductores del género femenino. Cantidad y porcentaje de conductores del género masculino con edades comprendidas entre 18 y 25 años.
#include #include #include #include using namespace std; int main() { int total, edad, menores25 = 0; int femenino = 0, masculino18a25 = 0; char genero; cout<<"Cuantos registros desea ingresar?: "; cin>>total; for(int i = 0; i < total; i++){ cout<>edad; cout<<"Ingrese el genero[f o m]: "; cin>>genero; if(edad < 25){ menores25++; } if(genero == 'f'||genero == 'F'){
femenino++; }else if(edad >= 18 && edad <= 25){ masculino18a25++; } } cout<<"Conductores menores a 25\n"; cout<<"Cantidad: "<
4. Crear un programa llamado EJERCICIO4 que almacene en una matriz la información de 7 atletas, que realizan 10 pruebas, para promediar el tiempo que gastan en recorrer 1000 metros. El programa debe incluir un menú que permita:
Almacenar los tiempos de cada atleta, en cada prueba. Reportar el promedio de tiempo por atleta. Imprimir los 3 primeros atletas que obtuvieron los mejores tiempos. Imprimir el tiempo y el atleta que ocupó el último, por tener el promedio más alto.
main(){ int atleta[3][3]; int i,j, x, opc, acumula=0; float prom_atletas[3]; float auxiliar[3]; float mayor; do{ system ("cls"); printf("************MENU OPCIONES**************************\n"); printf("* 1-ALMACENAR LOS TIEMPOS DE LOS 7 ATLETAS *\n"); printf("* 2-REPORTE TIEMPO PROMEDIO POR ATLETA *\n"); printf("* 3-LOS TRES PRIMEROS ATLETAS CON MEJORES TIEMPOS *\n"); printf("* 4-ATLETA QUE OCUPO EL ULTIMO PUESTO *\n"); printf("* 5-SALIDA *\n"); printf("***************************************************\n"); printf("\n");
printf("Digite la opcion :"); scanf("%d",&opc); switch (opc){ case 1: printf("\nRegistre para los 7 atletas los 10 tiempos\n"); for (i=1; i<=3; i++){ for(j=1; j<=3; j++){ printf("\nDigite el tiempo (minutos) para el Atleta No %d y el tiempo No %d :",i,j); scanf("%d",&atleta[i][j]); } } printf("\nRegrese al menu\n"); break; case 2: printf("REPORTE TIEMPO PROMEDIO POR ATLETA\n"); for (i=1; i<=3; i++){ acumula=0; for(j=1; j<=3; j++){ acumula=acumula+atleta[i][j]; prom_atletas[i]=acumula/3; auxiliar[i]=prom_atletas[i]; } printf("\nEl promedio del Atleta No %d es %.2f% :\n", i,auxiliar[i]);
} break; case 3: printf("Imprimir los 3 primeros atletas que obtuvieron los mejores tiempos \n"); for (i=1; i<=3; i++){ for(j=1; j<=3; j++){ if (auxiliar[j] > auxiliar[j+1]){ mayor=auxiliar[j]; auxiliar[j]=auxiliar[j+1]; auxiliar[j+1]=mayor; } } for(i=1; i<=3; i++){ printf("\nLos atletas obtuvieron los mejores tiempos son %.2f% \n",auxiliar[i]); } } break; case 4: printf("El atleta que ocupo el ultimo puesto \n"); for (i=1; i<=3; i++){ for(j=1; j<=3; j++){ if (auxiliar[j] < auxiliar[j+1]){ mayor=auxiliar[j];
auxiliar[j]=auxiliar[j+1]; auxiliar[j+1]=mayor; } } } printf("El atleta que obtuvo el ultimo puesto es %d con un tiempo de %.2f% \n",i,auxiliar[i]); break; case 5: printf(" ....SALIENDO.....\n"); x=5; } system("pause"); }while(x!=5); return 0; }
5. Crear un programa llamado EJERCICIO5 utilizando archivos, que produzca los recibos de pago de una empresa cuyo objetivo es administrar servicios de energía eléctrica. Para generar los recibos se debe tener en cuenta:
La información de la factura incluye: código del cliente, lectura anterior, lectura actual, consumo por período, valor kilovatio/hora, valor a cancelar, fecha de vencimiento. El consumo por periodo es el resultado de lectura actual menos lectura anterior. El valor a pagar se calcula multiplicando el consumo por periodo por el valor de kilovatio/hora. El software debe funcionar para n clientes.
#include #include #include #include typedef struct TDACliente { char* codigo; float lectura_anterior; float lectura_actual; float consumo_por_periodo; float kilovatio_hora; float a_cancelar; int anno_de_vencimiento; int mes_de_vencimiento; int dia_de_vencimiento; } Cliente; char* leer_linea (const char *mensaje); char* leer_cadena (const char *mensaje, char *cadena); int leer_entero (const char *mensaje, int menor, int mayor); float leer_decimal (const char *mensaje); int leer_campo (FILE *archivo, char *campo); int comparar_cliente (const Cliente *cliente1, const Cliente *cliente2); void imprimir_cliente (Cliente *cliente, int *contador); void imprimir_en_archivo (Cliente *cliente, FILE *archivo); void** arreglo_insertar (void **arreglo, int *tamano, void *dato); void* arreglo_buscar (void **arreglo, int tamano, const void *dato, int (*comparar)(const void *dato1, const void *dato2)); void** arreglo_quitar (void **arreglo, int *tamano, const void *dato); void quick_sort (void **arreglo, int inicio, int fin, int (*comparar)(const void *dato1, const void *dato2)); int main () {
Cliente *dato, cliente; Cliente **arreglo = NULL; int i, tamano=0, opcion, contador=0; char campo[255], ruta[] = "clientes.tsv"; FILE *archivo = fopen (ruta, "r"); if (archivo!=NULL) { while (leer_campo (archivo, campo)) { dato = (Cliente*) malloc (sizeof (Cliente)); dato->codigo = strdup (campo); leer_campo (archivo, campo); dato->lectura_anterior = atof (campo); leer_campo (archivo, campo); dato->lectura_actual = atof (campo); leer_campo (archivo, campo); dato->consumo_por_periodo = atof (campo); leer_campo (archivo, campo); dato->kilovatio_hora = atof (campo); leer_campo (archivo, campo); dato->a_cancelar = atof (campo); leer_campo (archivo, campo); dato->anno_de_vencimiento = atoi (campo); leer_campo (archivo, campo); dato->mes_de_vencimiento = atoi (campo); leer_campo (archivo, campo); dato->dia_de_vencimiento = atoi (campo); arreglo = (Cliente**) arreglo_insertar ((void**)arreglo, &tamano, dato); } fclose (archivo); } do { system ("cls"); printf ("MEN\351\n1.- Altas\n2.- Consultas\n3.- Actualizaciones\n4.- Bajas"); printf ("\n5.- Ordenar registros\n6.- Listar registros\n7.- Salir\n"); opcion = leer_entero ("Seleccione una opci\242n", 1, 7); printf ("\n"); if (tamano==0 && opcion!=1 && opcion!=7) { printf ("\nNo hay registros.\n\n"); system ("pause"); continue; } if (opcion<5) { cliente.codigo = leer_cadena ("Ingrese el codigo del cliente", campo);
dato = (Cliente*) arreglo_buscar ( (void**)arreglo, tamano, &cliente, (int(*)(const void*,const void*))comparar_cliente); if (dato!=NULL) imprimir_cliente (dato, &contador); } if (dato!=NULL && opcion==1) printf ("\nEl registro ya existe."); else if (dato==NULL && opcion>=2 && opcion<=4) printf ("\nRegistro no encontrado."); else switch (opcion) { case 1: dato = (Cliente*) malloc (sizeof (Cliente)); dato->codigo = strdup (campo); dato->lectura_anterior = leer_decimal ("Ingrese el lectura anterior"); dato->lectura_actual = leer_decimal ("Ingrese el lectura actual"); dato->consumo_por_periodo = leer_decimal ("Ingrese el consumo por periodo"); dato->kilovatio_hora = leer_decimal ("Ingrese el kilovatio hora"); dato->a_cancelar = leer_decimal ("Ingrese el a cancelar"); dato->anno_de_vencimiento = leer_entero ("Ingrese el anno de vencimiento", 0, INT_MAX); dato->mes_de_vencimiento = leer_entero ("Ingrese el mes de vencimiento", 0, INT_MAX); dato->dia_de_vencimiento = leer_entero ("Ingrese el dia de vencimiento", 0, INT_MAX); arreglo = (Cliente**) arreglo_insertar ((void**)arreglo, &tamano, dato); printf ("\nRegistro agregado correctamente."); break; case 3: printf ("Men\243 de modificaci\242n de campos\n"); printf ("1.- lectura anterior\n"); printf ("2.- lectura actual\n"); printf ("3.- consumo por periodo\n"); printf ("4.- kilovatio hora\n"); printf ("5.- a cancelar\n"); printf ("6.- anno de vencimiento\n"); printf ("7.- mes de vencimiento\n"); printf ("8.- dia de vencimiento\n"); switch (leer_entero ("Seleccione un n\243mero de campo a modificar", 1, 8)) { case 1: dato->lectura_anterior = leer_decimal ("Ingrese el lectura anterior"); break; case 2:
dato->lectura_actual = leer_decimal ("Ingrese el lectura actual"); break; case 3: dato->consumo_por_periodo = leer_decimal ("Ingrese el consumo por periodo"); break; case 4: dato->kilovatio_hora = leer_decimal ("Ingrese el kilovatio hora"); break; case 5: dato->a_cancelar = leer_decimal ("Ingrese el a cancelar"); break; case 6: dato->anno_de_vencimiento = leer_entero ("Ingrese el anno de vencimiento", 0, INT_MAX); break; case 7: dato->mes_de_vencimiento = leer_entero ("Ingrese el mes de vencimiento", 0, INT_MAX); break; case 8: dato->dia_de_vencimiento = leer_entero ("Ingrese el dia de vencimiento", 0, INT_MAX); break; } printf ("\nRegistro actualizado correctamente."); break; case 4: arreglo = (Cliente**) arreglo_quitar ((void**)arreglo, &tamano, dato); free (dato->codigo); free (dato); printf ("\nRegistro borrado correctamente."); break; case 5: quick_sort ((void**)arreglo, 0, tamano-1, (int(*)(const void*,const void*))comparar_cliente); printf ("\nRegistros ordenados correctamente."); break; case 6: contador = 0; for (i=0; i=1)
{ printf ("\n\n"); system ("pause"); } } while (opcion!=7); archivo = fopen (ruta, "w"); if (archivo!=NULL) { for (i=0; i
void quick_sort (void **arreglo, int inicio, int fin, int (*comparar)(const void *dato1, const void *dato2)) { int menor = inicio, mayor = fin; void *pivote; if (fin>inicio) { for (pivote = arreglo[(inicio+fin)/2]; menor<=mayor; ) { for (; menorinicio && comparar (arreglo[mayor], pivote)>0; mayor--); if (menor<=mayor) { pivote = arreglo[menor]; arreglo[menor] = arreglo[mayor]; arreglo[mayor] = pivote; menor++; mayor--; } } if (iniciocodigo, cliente2->codigo); } void imprimir_cliente (Cliente *cliente, int *contador) { printf ("codigo : %s\n", cliente->codigo); printf ("lectura anterior : %g\n", cliente->lectura_anterior); printf ("lectura actual : %g\n", cliente->lectura_actual); printf ("consumo por periodo: %g\n", cliente->consumo_por_periodo); printf ("kilovatio hora : %g\n", cliente->kilovatio_hora); printf ("a cancelar : %g\n", cliente->a_cancelar); printf ("anno de vencimiento: %d\n", cliente->anno_de_vencimiento); printf ("mes de vencimiento : %d\n", cliente->mes_de_vencimiento); printf ("dia de vencimiento : %d\n", cliente->dia_de_vencimiento); printf ("\n"); (*contador)++;
} void imprimir_en_archivo (Cliente *cliente, FILE *archivo) { fprintf (archivo, "%s\t", cliente->codigo); fprintf (archivo, "%g\t", cliente->lectura_anterior); fprintf (archivo, "%g\t", cliente->lectura_actual); fprintf (archivo, "%g\t", cliente->consumo_por_periodo); fprintf (archivo, "%g\t", cliente->kilovatio_hora); fprintf (archivo, "%g\t", cliente->a_cancelar); fprintf (archivo, "%d\t", cliente->anno_de_vencimiento); fprintf (archivo, "%d\t", cliente->mes_de_vencimiento); fprintf (archivo, "%d\n", cliente->dia_de_vencimiento); } char* leer_linea (const char *mensaje) { char linea[255]; leer_cadena (mensaje, linea); return strdup (linea); } char* leer_cadena (const char *mensaje, char *cadena) { char *salto; printf ("%s: ", mensaje); fgets (cadena, 255, stdin); salto = strchr (cadena, '\n'); if (salto!=NULL) *salto = '\0'; return cadena; } int leer_entero (const char *mensaje, int menor, int mayor) { int entero; do { printf ("%s: ", mensaje); scanf ("%d", &entero); getchar(); if (enteromayor) printf ("N\243mero no v\240lido.\n"); } while (enteromayor); return entero; }
float leer_decimal (const char *mensaje) { float decimal; printf ("%s: ", mensaje); scanf ("%f", &decimal); getchar(); return decimal; } int leer_campo (FILE *archivo, char *campo) { fscanf (archivo, "%[^\t\n\r]", campo); if (feof (archivo)) return 0; fgetc (archivo); return 1; }