You are on page 1of 23

1.

Crear un programa llamado EJERCICIO1, que permita al usuario introducir una serie de n valores que estn 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 <stdio.h> #include <conio.h> 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(); }

Crear un programa, llamado EJERCICIO2 que resuelva el siguiente problema: una Compaa fumigadora maneja las siguientes tarifas en sus trabajos: Tipo 1: fumigacin contra moscas $10.000 por hectrea. Tipo 2: fumigacin contra hongos $20.000 por hectrea. Tipo 3: fumigacin contra gusanos $30.000 por hectrea. Para el ejercicio debe tener en cuenta que si el rea a fumigar es mayor a 100 hectreas, 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 fumigacin Nmero de hectreas a fumigar Total a pagar

# include <conio.h> # include <iostream.h> #include <stdio.h> #include <stdlib.h> # 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";

cout<<" EL TOTAL A PAGAR ES "<<to<<" \n"; system ("pause"); } void t2(){ 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=20000*v*n; system("cls"); cout<<" EL TIPO DE FUMIGACION ES PARA MOSCAS \n"; cout<<" EL NUMERO DE HECTAREAS A FUMIGAR ES "<<v<<" \n"; cout<<" EL TOTAL A PAGAR ES "<<to<<" \n"; system ("pause"); } void t3(){ 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=30000*v*n; system("cls");

cout<<" EL TIPO DE FUMIGACION ES PARA MOSCAS \n"; cout<<" EL NUMERO DE HECTAREAS A FUMIGAR ES "<<v<<" \n"; cout<<" EL TOTAL A PAGAR ES "<<to<<" \n"; system ("pause"); }

Crear un programa llamado EJERCICIO3 que permita registrar informacin de los accidentes de trnsito ocurridos en una ciudad X de Colombia. Los datos solicitados son edad y gnero del conductor. El software debe mostrar como resultado los siguientes resmenes estadsticos: Cantidad y porcentaje de conductores menores de 25 aos. Cantidad y porcentaje de conductores del gnero femenino. Cantidad y porcentaje de conductores del gnero masculino con edades comprendidas entre 18 y 25 aos.

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <conio.h> 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<<i+1<<" conductor\n"; cout<<"Ingrese la edad: ";

cin>>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: "<<menores25<<"\t"; cout<<"Porcentaje: "<<(menores25*100.)/total<<endl; cout<<"Conductores de genero femenino\n"; cout<<"Cantidad: "<<femenino<<"\t"; cout<<"Porcentaje: "<<(femenino*100.)/total<<endl; cout<<"Conductores de genero masculino "; cout<<"con edades entre 18 y 25\n"; cout<<"Cantidad: "<<masculino18a25<<"\t"; cout<<"Porcentaje: "<<(masculino18a25*100.)/total<<endl;

printf ("\i\250Desea repetir el proceso? (S/N): ");

system("pause");

Crear un programa llamado EJERCICIO4 que almacene en una matriz la informacin 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 ms 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; }
Crear un programa llamado EJERCICIO5 utilizando archivos, que produzca los recibos de pago de una empresa cuyo objetivo es administrar servicios de energa elctrica. Para generar los recibos se debe tener en cuenta: La informacin de la factura incluye: cdigo del cliente, lectura anterior, lectura actual, consumo por perodo, 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

<stdio.h> <stdlib.h> <string.h> <limits.h>

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 C liente *cliente2); void imprimir_cliente (Cliente *cliente, int *contador) ; void imprimir_en_archivo (Cliente *cliente, FILE *archi vo); void** arreglo_insertar (void **arreglo, int *tamano, vo id *dato); void* arreglo_buscar (void **arreglo, int tamano, co nst void *dato, int (*comparar)(const void * dato1, const void *dato2)); void** arreglo_quitar (void **arreglo, int *tamano, co nst void *dato);

void fin,

quick_sort

(void **arreglo, int inicio, int 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 ((voi d**)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*))compara r_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 (Client e)); 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 ((v oid**)arreglo, &tamano, dato); free (dato->codigo); free (dato); printf ("\nRegistro borrado correctamente."); break; case 5: quick_sort ((void**)arreglo, 0, tamano1, (int(*)(const void*,const void*))com parar_cliente); printf ("\nRegistros ordenados correctamente."); break; case 6: contador = 0; for (i=0; i<tamano; i++) imprimir_cliente (arreglo[i], &conta dor); printf ("Total de registros: %d.", contador); break; } if (opcion<7 && opcion>=1) { printf ("\n\n"); system ("pause"); }

} while (opcion!=7); archivo = fopen (ruta, "w"); if (archivo!=NULL) { for (i=0; i<tamano; i++) imprimir_en_archivo (arreglo[i], archivo); fclose (archivo); } return EXIT_SUCCESS; } void** arreglo_insertar (void **arreglo, int *tamano, vo id *dato) { arreglo = (void**) realloc (arreglo, sizeof (void*)* (*tamano+1)); arreglo[*tamano] = dato; (*tamano)++; return arreglo; } void* arreglo_buscar (void **arreglo, int tamano, const void *dato, int (*comparar)(const void *dato1, const void *dato2 )) { int i; for (i=0; i<tamano; i++) if (comparar (dato, arreglo[i])==0) return arreglo[i]; return NULL; } void** arreglo_quitar (void **arreglo, int *tamano, cons t void *dato) { int i; for (i=0; i<*tamano && dato!=arreglo[i]; i++);

if (i<*tamano) { for (i++; i<*tamano; i++) arreglo[i-1]=arreglo[i]; (*tamano)--; arreglo = (void**) realloc (arreglo, sizeof (voi d*)*(*tamano)); } return arreglo; } 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<=ma yor; ) { for (; menor<fin && comparar (arreglo[menor] , pivote)<0; menor++); for (; mayor>inicio && comparar (arreglo[may or], pivote)>0; mayor--); if (menor<=mayor) { pivote = arreglo[menor]; arreglo[menor] = arreglo[mayor]; arreglo[mayor] = pivote; menor++; mayor--; } } if (inicio<mayor) quick_sort (arreglo, inicio, mayor, comparar );

if (menor<fin) quick_sort (arreglo, menor, fin, comparar); } } int comparar_cliente (const Cliente *cliente1, const Cli ente *cliente2) { return cliente1==cliente2 ? 0 : strcmp (cliente1>codigo, cliente2->codigo); } void imprimir_cliente (Cliente *cliente, { printf ("codigo : %s\n", >codigo); printf ("lectura anterior : %g\n", >lectura_anterior); printf ("lectura actual : %g\n", >lectura_actual); printf ("consumo por periodo: %g\n", >consumo_por_periodo); printf ("kilovatio hora : %g\n", >kilovatio_hora); printf ("a cancelar : %g\n", >a_cancelar); printf ("anno de vencimiento: %d\n", >anno_de_vencimiento); printf ("mes de vencimiento : %d\n", >mes_de_vencimiento); printf ("dia de vencimiento : %d\n", >dia_de_vencimiento); printf ("\n"); (*contador)++; } int *contador) clienteclienteclienteclienteclienteclienteclienteclientecliente-

void imprimir_en_archivo (Cliente *cliente, FILE *archiv o)

{ fprintf (archivo, "%s\t", fprintf (archivo, "%g\t", >lectura_anterior); fprintf (archivo, "%g\t", fprintf (archivo, "%g\t", >consumo_por_periodo); fprintf (archivo, "%g\t", fprintf (archivo, "%g\t", fprintf (archivo, "%d\t", >anno_de_vencimiento); fprintf (archivo, "%d\t", >mes_de_vencimiento); fprintf (archivo, "%d\n", >dia_de_vencimiento); } cliente->codigo); clientecliente->lectura_actual); clientecliente->kilovatio_hora); cliente->a_cancelar); clienteclientecliente-

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 may or) {

int entero; do { printf ("%s: ", mensaje); scanf ("%d", &entero); getchar(); if (entero<menor || entero>mayor) printf ("N\243mero no v\240lido.\n"); } while (entero<menor || entero>mayor); 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; }

You might also like