Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Prefiere el consumo de lo Hecho en México
BúsquedaHagamos que México crezca..
![]() Prefiere el consumo de lo Hecho en México Posts Recientes
Conversación |
C/C++ y algunos problemas de bachilleratoHace unos días me contacto un alumno de un COBAO(Colegio de Bachilleres) de Oaxaca, bachillerato dónde estudié hace algunos ayeres, pidiéndome que le asesorara con la resolución de algunos problemas de programación, por lo que le eché la mano ya que le habían pedido que resolviera algunos problemas simples de programación en C/C++ en su materia de informática y a la edad de 15 ó 16 años muy pocos son duchos con este lenguaje de programación - a menos que sean como Xiam que es un chavo que desde corta edad se le ha dado la programada, linuxeada y demás-.
Por lo que le pedí que me enviara las dudas para ayudarle a resolverlas, cabe mencionar que también tiene años que no programaba en C/C++ pues me he dedicado al desarrollo de aplicaciones web con PHP y AJAX, al igual que desarrollo de aplicaciones para móviles con .Net, por lo que me sirvió resolver estos problemas como recordatorio de C/C++. Los problemas son los siguientes:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main(int argc, char argv) { char *fecha; if(argc>1){ fecha = malloc(strlen(argv[1])); strcpy(fecha, argv[1]); }else{ char dato[10]; printf("fecha:"); scanf("%s", dato); fecha = malloc(strlen(dato)); strcpy(fecha, dato); } validaFecha(fecha); getch(); } validaFecha(char *fecha){ int datos[2]; char *ptr; int count = 0; int error = 0; ptr = strtok(fecha,"/"); while(ptr != NULL) { datos[count++] = atoi(ptr); ptr = strtok(NULL, "/"); } //Enero, Febrero, Marzo, Abril, Mayp, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre if(count!=3){ printf("Error en el formato de fecha...\nHelp :\nFormato del programa\nnextDay dia/mes/anio\n\nEjemplo: nextDay 12/12/2009"); error++; }else{ if(datos[1]>0 && datos[1]<=12){ if( datos[1]==1 || datos[1]==3 || datos[1]==5 || datos[1]==7 || datos[1]==8 || datos[1]==10 || datos[1]==12 ){ if(datos[0]>0 && datos[0]<=31){ if(datos[0]==31){ datos[0]=1; if(datos[1]<12){ datos[1]++; }else{ datos[1]=1; datos[2]++; } }else{ datos[0]++; } }else{ printf("Error en el dia de la fecha"); error++; } }else{ if( datos[0]>0 && ( (datos[0]<=30 && datos[1]!=2 ) || ( datos[0]<=29 && datos[1]==2 && datos[2]%4==0) || (datos[0]<=28 && datos[1]==2 && datos[2]%4!=0) ) ){ if(datos[0]==30 && datos[1]!=2){ datos[0]=1; datos[1]++; }else{ if(datos[1]==2){ if( (datos[0]==28 && datos[2]%4!=0) || (datos[0]==29 && datos[2]%4==0)){ datos[0]=1; datos[1]++; }else{ datos[0]++; } }else{ datos[0]++; } } }else{ printf(" Error en el formato de la fecha introducida "); error++; } } }else{ printf("%d Error en el mes", datos[1]); error++; } if(error==0){ printf("Dia siguiente: %d / %d / %d\n", datos[0], datos[1], datos[2]); } getch(); } }
#include <stdio.h> #include <stdlib.h> #include <conio.h> int factorial(int numero); int main(int argc, char argv) { int m = 0 ; int n = 0; int result = 0; if(argc>2){ m = atoi(argv[1]); n = atoi(argv[2]); }else{ printf("m:");scanf("%d", &m); printf("n:");scanf("%d", &n); } if(n<=m){ result = factorial(m)/ ( factorial(n) * factorial(m-n) ) ; printf("\nCombinacion de %d elementos tomados de %d : %d", m, n, result); }else{ printf ("Error el valor de [n] no puede ser mayor que el valor de [m]"); } getch(); } int factorial(int numero){ int i = 1; int value = numero; for(i=1 ;i<numero; i++){ value = value * i ; } return value; }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void romanos(int numero ); int main(int argc, char argv) { int numero = 0 ; if(argc>1){ numero = atoi(argv[1]); }else{ printf("Numero :"); scanf("%d", &numero); } if(numero>=0 && numero<=3000){ romanos(numero); }else{ printf("Error en el valor del numero introducido"); } } void romanos(int numero ){ int residuo = 0; int div = 0; char *a = ""; char *b = ""; char *c = ""; int i = 0; int value = 1000; char *romano; romano = (char *)malloc(sizeof(char)*100); strcpy(romano, ""); while(numero>0 && value>0 ){ residuo = numero % value; if(residuo<numero){ div = ((numero-residuo)/value); switch(value){ case 1000: a = "M"; b = "/V"; c = "/X"; break; case 100: a = "C"; b = "D"; c= "M"; break; case 10: a = "X"; b = "L"; c = "C"; break; case 1: a = "I"; b = "V"; c = "X"; break; } if(div==9){ strcat(romano, a); strcat(romano, c); }else if(div==4){ strcat(romano, a); strcat(romano, b); }else if(div<5){ for(i=1;i<=div;i++){ strcat(romano, a); } }else{ strcat(romano, b); for(i=1;i<=(div-5);i++){ strcat(romano, a); } }//fin del si no es menor que 5 }//fin de si residuo menor que numero numero = residuo; value = value/10; }//fin del while printf ("\nNumero Romano: %s\n", romano); getch(); }//fin de la funcion
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void getBase(int decimal, int base ); int main(int argc, char argv) { int decimal = 0 ; int base = 0; if(argc>2){ decimal = atoi(argv[1]); base = atoi(argv[2]); }else{ printf("decimal:"); scanf("%d", &decimal); printf("base:"); scanf("%d", &base); } if(base>=2 && base <=9){ getBase(decimal,base); }else{ printf("La base debe estar entre 2 y 9"); } } void getBase(int decimal, int base ){ //printf("%d::%d", decimal, base); int residuo = 0; int entero = decimal; char *result; char *temp; result = (char *)malloc(sizeof(char)*100); strcpy(result, ""); strcpy(temp, ""); while(decimal>=base){ residuo = decimal % base; itoa(residuo, temp, 10); strcat(result, temp); decimal = (decimal-residuo) / base; } itoa(decimal, temp, 10); strcat(result, temp); result = strrev(result); printf("El numero decimal %d en base %d es %s",entero, base, result ); getch(); }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void invertir(char *cadena); int main(int argc, char argv) { int decimal = 0 ; int base = 0; char *cadena; if(argc>1){ strcpy(cadena, argv[1]); }else{ strcpy(cadena, " "); } while(strlen(cadena)>0){ invertir(cadena); printf("\nCadena a Invertir[Enter para salir]: "); gets(cadena); } } void invertir(char *cadena){ int i = 0; for(i=strlen(cadena); i>=0; i--){ //result[j++] = cadena[i] ; printf("%c", cadena[i]); } }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void media(int num); int main(int argc, char argv) { int vector = 0 ; if(argc>1){ vector = atoi(argv[1]); }else{ vector = 100; } while(vector>0){ media(vector); printf("\nTamañoi del vector [0 para salir]: "); scanf("%d", &vector); } } void media(int num){ int *values; int i = 0; values = (int *)malloc(sizeof(int)*num); int suma = 0; float media = 0; for(i=0;i<num;i++){ values[i] = (rand()%100);//numeros aleatorios entre 0 y 99 suma = suma +values[i]; } printf ("\nVector: "); for(i=0; i<num;i++){ printf("%d, ", values[i]); } media = (float ) suma / num; printf("\nMedia :%10.5f", media); }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void tabla(int m, int n ); int main(int argc, char argv) { int m = 0 ; int n = 0; if(argc>2){ m = atoi(argv[1]); n = atoi(argv[2]); }else{ printf("Filas(m):"); scanf("%d", &m); printf("Columans(n):"); scanf("%d", &n); } tabla(m,n); } void tabla(int m, int n ){ int dato = 0; int pos = 0; int neg = 0; int i = 0; int j = 0; int *values = (int *)malloc(sizeof(int)*m*n); for (i = 0; i<m; i++){ for (j=0;j<n;j++){ printf("\ndato[%d,%d]: ", i+1, j+1); scanf("%d", &dato); values[(i*n)+j] = dato; if(dato>=0){ pos++; }else{ neg++; } } } printf("\nMatriz\n"); for (i = 0; i<m; i++){ for (j=0;j<n;j++){ printf ("%d, ", values[(i*n)+j] ); } printf("\n"); } printf("\nNumeros positivos: %d\nNumeros negativos: %d", pos, neg); getch(); }
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> int ferroviaria(int ciudades); int main(int argc, char argv) { int numCiudades = 0 ; int result = 0; if(argc>1){ numCiudades = atoi(argv[1]); }else{ printf("Ciudades:"); scanf("%d", &numCiudades); } if(numCiudades>1){ ferroviaria(numCiudades); }else{ printf ("Introduzca más de una ciudad"); } } int ferroviaria(int numCiudades){ int i = 0; int j = 0; char *ciudades[numCiudades]; char ciudad[1024]; strcpy(ciudad, ""); int *rutas = (int *)malloc(sizeof(int)*numCiudades*numCiudades); for(i=0; i<numCiudades; i++){ printf("\nCiudad [ %d ]", i+1) ; gets(ciudad); ciudades[i] = (char *)malloc(strlen(ciudad)*sizeof(char) ); strcpy(ciudades[i], ciudad); for(j=0;j<numCiudades;j++){ rutas[ (i*numCiudades)+j] = rand()%2;//1 si hay conexion de ruta, 0 no hay ruta de conexión if(rutas[(j*numCiudades)+i]==1|| rutas[(j*numCiudades)+i]==0 ){ rutas[ (i*numCiudades)+j] =rutas[(j*numCiudades)+i]; } } } printf("\nTabla de Ciudades y Rutas\n\t"); for(i= 0; i<numCiudades; i++){ printf("%s\t", ciudades[i]); } printf("\n"); for(i= 0; i<numCiudades; i++){ printf("%s\t", ciudades[i]); for(j= 0; j<numCiudades; j++){ printf("%d\t ", rutas[(i*numCiudades)+j]); } printf("\n"); } printf("\nDetalles de Ciudades y Rutas\n\n"); for(i= 0; i<numCiudades; i++){ printf("%s Conexiones: \n", ciudades[i]); for(j= 0; j<numCiudades; j++){ if(rutas[(i*numCiudades)+j]==1 && i!=j){ printf("%s\t", ciudades[j]); } } printf("\n\n"); } getch(); }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void transpuesta(int m, int n ); int main(int argc, char argv) { int m = 0 ; int n = 0; if(argc>2){ m = atoi(argv[1]); n = atoi(argv[2]); }else{ printf("Filas(m):"); scanf("%d", &m); printf("Columans(n):"); scanf("%d", &n); } transpuesta(m,n); } void transpuesta(int m, int n ){ int i,j; int *values = (int *)malloc(sizeof(int)*m*n); int *mTranspuesta = (int *)malloc(sizeof(int)*n*m); printf("\n matriz original\n"); for (i = 0; i<m; i++){ for (j=0;j<n;j++){ values[(i*n)+j] = values[i] = (rand()%100);//numeros aleatorios entre 0 y 99; mTranspuesta[(j*m)+i] = values[(i*n)+j] ; printf("%d, ", values[(i*n)+j]); } printf("\n"); } printf("\n Matriz Transpuesta\n"); for (i = 0; i<n; i++){ for (j=0;j<m;j++){ printf("%d, ", mTranspuesta[(i*m)+j]); } printf ("\n"); } getch(); }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void ventas(); int main(int argc, char argv) { ventas(); } void ventas(){ int i,j; int *ventasMP = (int *)malloc(sizeof(int)*12*103); int productos = 100; int mes = 12; int totalProducto = 0; int productoMV = 0; int mesMV = 0; int cantidadMV=0; printf("\n Listado de Ventas\n\n"); printf("\n\t\tEne\tFeb\tMar\tAbr\tMay\tJun\tJul\tAgo\tSep\tOct\tNov\tDec\tTotaln"); for (i = 0; i<productos; i++){ printf("\nProducto[%d]\t", i+1); totalProducto = 0; for (j=0;j<mes;j++){ ventasMP[(i*mes)+j] = rand()%100;//numeros aleatorios entre 0 y 99; printf("%d\t", ventasMP[(i*mes)+j]); totalProducto += ventasMP[(i*mes)+j]; ventasMP[(100*12)+j]+= ventasMP[(i*mes)+j]; if(ventasMP[(101*12)+j]<=ventasMP[(i*mes)+j]){ ventasMP[(101*12)+j]= ventasMP[(i*mes)+j]; ventasMP[(102*12)+j]= i; } if(cantidadMV<=ventasMP[(i*mes)+j] ){ cantidadMV = ventasMP[(i*mes)+j]; mesMV = j; productoMV = i; } } printf("%d\t", totalProducto); } printf("\nVta/Mes\t\t"); for(i=0;i<mes;i++){ printf("%d\t", ventasMP[(100*12)+i]); } printf("\nProd/Ven\t"); for(i=0;i<mes;i++){ printf("P%d[%d]\t", ventasMP[(102*12)+i], ventasMP[(101*12)+i]); } printf("\n\nProducto mas vendido: %d", productoMV); printf("\nMes: %d", mesMV); printf("\nCantidad: %d", cantidadMV); getch(); } hasta 1,500,000.00 0.00 % más de 1,500,000.00 y hasta 2,150,000.00 13.75 más de 2,150,000.00 y hasta 2,900,000.00 16.50 más de 2,900,000.00 y hasta 3,500,000.00 17.60% más de 3,350,000.00 18.85% Dicha tabla se habrá de cargar de un archivo secuencial que contiene tanto el límite superior como el porcentaje.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void comisiones(int numEmpleados); float *leeComisiones(char *archivo); int main(int argc, char **argv) { int numEmpleados=1; while(numEmpleados>0){ printf("Empleados[0 para salir]:"); scanf("%d", &numEmpleados); if(numEmpleados>0){ comisiones(numEmpleados); } } } void comisiones(int numEmpleados){ int i,j, k; int *comisiones = (int *)malloc(sizeof(int)*12*numEmpleados); int mes = 12; float comision =0; float porcentaje = 0; printf("\n Listado de Ventas por Empleado\n\n"); printf("\n\t\tEne\tFeb\tMar\tAbr\tMay\tJun\tJul\tAgo\tSep\tOct\tNov\tDec\tTotal\tPorc.\tComision\n"); float *porcentajes = leeComisiones("tabla.csv"); for (i = 0; i<numEmpleados; i++){ printf("\nEmpleado[%d]\t", i+1); comision = 0; for (j=0;j<mes;j++){ comisiones[(i*mes)+j] = rand()*(rand()%100);//ventas aleatorios de los empleados printf("%d\t", comisiones[(i*mes)+j]); comision = comision + comisiones[(i*mes)+j]; } printf("%10.5f\t", comision); k = 0; while( porcentajes[k]!=-1 || comision<=porcentajes[k]){ k+=2; } if(porcentajes[k]==-1){ porcentaje = porcentajes[k-1]; comision = comision * (porcentajes[k-1]/100); }else{ comision = comision * (porcentajes[k+1]/100); porcentaje = porcentajes[k+1]; } printf("%10.5f % \t", porcentaje); printf("%10.5f\t", comision); } printf("\n"); } float *leeComisiones(char *archivo){ int status = 1; int ok=0; float *porcentajes; char linea[1024]; char *ptr; int count = 0; int i; strcpy(linea, ""); porcentajes=(float *)malloc(sizeof(float)*2*10); FILE *flujo; /* Se declara un flujo */ if ( (flujo = fopen(archivo,"r")) == NULL ) { printf("No se pudo abrir %s\n",archivo); status = 0; }else{ do { ok = fscanf(flujo, "%s", &linea); if(ok && !feof(flujo)){ ptr = strtok(linea,","); while(ptr != NULL) { porcentajes[count++] = atof(ptr); ptr = strtok(NULL, ","); } } }while(!feof(flujo)); porcentajes[count]=-1; } return porcentajes; }
1500000,0.00 2150000,13.75 2900000,16.5 3350000,17.6 10000000,18.85
Fuentes XML de comentario: RSS | Atom
Estadísticas de visitantes135947 |
Nube de EtiquetasEventosEncuestaComentarios Recientes
|
Dejar un comentario