|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - infonet
Páginas: [1]
1
« en: Lunes 2 de Noviembre de 2009, 16:17 »
switch (nMes){ case 1: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 2: if ((ndia<=29) && (ndia>=1)) nRes = 2; break; case 3: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 4: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 5: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 6: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 7: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 8: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 9: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 10: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 11: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 12: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; } [/code] podrias mejorar este switch de la siguiente forma -> case 1: case 3: case 7: case 8: case 10: case 12: if ((ndia<=31) && (ndia>=1)) nRes = 2; break;
case2: if ((ndia<=29) && (ndia>=1)) nRes = 2; break;
case 4: case 6: case 9: case 11: if ((ndia<=30) && (ndia>=1)) nRes = 2; break;
asi, te ahorras el que si te confundes en lo que sea, solo tienes que cambiarlo una vez por grupo, no 12 veces
ademas, si lo que estas haciendo es validar, tu respuesta deberia ser SI o NO, no un 1 o un 2. Es decir, que esos metodos de validacion te deberian devolver un boolean en lugar de un int.
sobre por que funciona o deja de funcionar: ni idea, no tengo tiempo para ponerme a depurar codigo, pero toma nota de ese par de consejillos luego cuando llegue a casa si tengo tiempo y no te ha contestado nadie, lo vuelvo a echar un ojo
muchas gracias, tienes razon, pero aun estoy con el problema de calculos de años int totalAños(Fecha f){ int tot_año; tot_año=0; else return (tot_año); }
ya que a este codigo el resultado no es exacto
2
« en: Lunes 2 de Noviembre de 2009, 15:09 »
Estimados, tengo estos codigos JAVA en donde realizo operaciones con Fechas, una es la Fecha del Sistema y la Otra es la Fecha ingresada por Teclado, pero al calcular los años entre fechas, este no me da exacto... ej: si ingreso 30/11/2008 este me dice que es 1 y mi idea es que me diga 11 mese y 28 dias... como lo puedo hacer import java.io.*; import java.util.*; import java.text.*; import java.util.Calendar; import java.util.GregorianCalendar; public class Fecha { public int dia; public int mes; public int año; public Fecha() {} public Fecha(int d, int m, int a) { this.dia = d; this.mes = m; this.año = a; } public Fecha(int d, int m ) { this.dia = d; this.mes = m; } public Fecha(int d) { this.dia = d; } public Fecha(Fecha f) {} void AsignarFecha(int d, int m, int a) { AsignarDia (d); AsignarMes (m); AsignarAño (a); } void AsignarDia(int n) { dia = n; } void AsignarMes(int n) { mes = n; } void AsignarAño(int n) { año =n; } int obtenerDia() { return(dia); } int obtenerMes() { return(mes); } int obtenerAño() { return(año); } int ValidaDia(int nMes, int ndia ) { int nRes=1; if ((ndia<=31) && (ndia>=1)) { switch (nMes){ case 1: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 2: if ((ndia<=29) && (ndia>=1)) nRes = 2; break; case 3: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 4: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 5: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 6: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 7: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 8: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 9: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 10: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; case 11: if ((ndia<=30) && (ndia>=1)) nRes = 2; break; case 12: if ((ndia<=31) && (ndia>=1)) nRes = 2; break; } } return (nRes); } int ValidaMes(int m) { int nRes = 1; if ((m<=12) && (m>=1)) nRes = 2; return (nRes); } int ValidaAño(int a) { int nRes = 1; if (a>=1900) nRes = 2; return (nRes); } int ValidaFecha(int d, int m, int a) { int nRes = 1; int nopp=0; nopp=ValidaMes(m); if (nopp==2) { nopp=ValidaDia(m,d); if (nopp==2) { nopp=ValidaAño(a); if (nopp==2) { if (m==2) { if ((a % 4 == 0) && ((a % 100 != 0) || (a % 400 == 0))) if ((d<=29) && (d>=1)) nRes=2; else System. out. println("Error el Año Ingreasado es bisiesto y su diabe debe estar en el rango 1 al 29, para el mes febrero"); } else nRes=2; } else System. out. println("Error en el Año Ingreasado debe ser mayor o igual 1900"); } else System. out. println("Error en el Dia Ingreasado"); } else System. out. println("Error en el Mes Ingreasado"); return (nRes); } public void Listar() { System. out. println(obtenerDia ()+"/"+obtenerMes () +"/"+obtenerAño ()); } public void print() { System. out. println(dia +"/"+mes +"/"+año ); } long totalDias(Fecha f) { Date fec1 = gc. getTime(); Date fec2 = gc1. getTime(); long time = fec2.getTime() - fec1.getTime(); long tot_dia=time / (3600*24*1000); return (tot_dia) ; } int totalAños(Fecha f){ int tot_año; tot_año=0; else return (tot_año); } String result ="NO es Bisiesto "; if ((obtenerAño() % 4 == 0) && ((obtenerAño() % 100 != 0) || (obtenerAño() % 400 == 0))) result="es bisiesto"; return (result); } public void listaFechaLarga (){ defaultDays = symbols.getShortWeekdays(); try { today =dy.parse(fec_str); output = sd.format(today); } { System. out. println("Error al asignar la fecha"); } } }
ESTE ES EL MAIN import java.io.*; import java.util.*; import java.text.*; import java.util.Calendar; import java.util.GregorianCalendar; public class UsaFecha { { int dia=0, mes=0, año=0; int d=0, m=0, a=0; int res=0; System. out. println("Operaciones para Fecha"); System. out. println("1. Total de Días a la fecha de hoy"); System. out. println("2. Total de Años a la fecha de hoy"); System. out. println("3. Es un año bisiesto"); System. out. println("4. Quiere Listar su fecha en formato largo"); System. out. println("0. Salir"); System. out. print("selecciona una opcion: "); int Respuesta = Integer. parseInt(tecla. readLine()); if(Respuesta ==0){ res =2; System. exit(0);} Fecha Objeto1 = new Fecha(); Fecha Objeto2 = new Fecha(); if (Respuesta==3) { System. out. print("Ingrese Año : "); año =Integer. parseInt(tecla. readLine()); Objeto1.AsignarAño(año); res=Objeto1.ValidaAño(año); if (res ==1) System. out. println("Error en el Año debe ser mayor o igual a 1900"); } else { System. out. print("Ingrese dia : "); dia =Integer. parseInt(tecla. readLine()); System. out. print("Ingrese mes : "); mes =Integer. parseInt(tecla. readLine()); System. out. print("Ingrese Año : "); año =Integer. parseInt(tecla. readLine()); Objeto1.AsignarFecha(dia, mes, año); res=Objeto1.ValidaFecha(dia, mes, año); } if (res == 2) { dateOut = dateFormatter.format(hoy); d =Integer. valueOf(dateOut. substring(0, 2)); string = dateOut.substring(3); m =Integer. valueOf(string. substring(0, 2)); string = string.substring(3); a =Integer. valueOf(string. substring(0, 4)); Objeto2.AsignarDia(d); Objeto2.AsignarMes(m); Objeto2.AsignarAño(a); switch(Respuesta) { case 1: //Total de Días a la fecha de hoy System. out. println("Total de Días a la fecha de hoy "+Objeto1. totalDias(Objeto2 )); break; case 2://Total de Años a la fecha de hoy System. out. println("El Total de Años a la fecha de hoy "+ Objeto1. totalAños (Objeto2 )); break; case 3://Es un año bisiesto System. out. println("El año ingresado "+ Objeto1. esBisiesto()); break; case 4://Quiere Listar su fecha en formato largo { System. out. println("Su fecha en formato largo es " ); Objeto1.listaFechaLarga(); } break; default: System. out. println("Selecciones una Operacion disponible"); break; } } } }
3
« en: Martes 15 de Septiembre de 2009, 22:34 »
Solucionado... y Gracias por sus ayudas.... #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #include <windows.h> #include <math.h> #include <dos.h> int Sigue,Tamano,Cont,PosIni,i,PosVec,j,PosParen,Error,CanTonk,Tamano2,k,Opcion; char string[150],CadenaLeida[150],Bloques[50][150],SiFor[150],Tokens[50][150],NuevaCadena[150]; int pIni; int EsOperador(char QueAnalizar) {if (QueAnalizar=='+') {return(1);} else if (QueAnalizar=='-') {return(1);} else if (QueAnalizar=='*') {return(1);} else if (QueAnalizar=='/') {return(1);} else if (QueAnalizar=='(') {return(2);} else if (QueAnalizar==')') {return(2);} else if (QueAnalizar=='[') {return(2);} else if (QueAnalizar==']') {return(2);} else if (QueAnalizar=='<') {return(3);} else if (QueAnalizar=='>') {return(3);} else if (QueAnalizar=='=') {return(3);} else if (QueAnalizar=='!') {return(3);} else {return(0);} } void EsFor() {printf("nntDigite la sentencia que desea evaluar: "); //Leer la cadena de caracteres que se va a evaluar. // scanf("%s",CadenaLeida); gets(string); printf("nCadena leida Completa: %s",string); int i; int j; for (i = j = 0; string[i] != ' '; i++) if (string[i] != ' ') string[j++] = string[i]; string[j] = ' '; printf("nCadena sin Espacios: %s", string); strcpy(CadenaLeida, string); //printf("n Cadena Final : %s ",CadenaLeida); //getche(); //Tomar el tama¤o de la cadena. Tamano=strlen(CadenaLeida); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Recorrer los caracteres de la cadena le¡da para reconocer si es una sentencia. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ PosParen=0; for(i=0;i<=Tamano-1;i++) {//Si el caracter es un '('. if(CadenaLeida[i]=='(') {PosVec=0; for(j=0;j<=i-1;j++) {SiFor[PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } PosParen=i; break; } } //------------------------------------------------------------------------------- //Si se han producido errores. if(PosParen!=3) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); printf("ntError: %s", SiFor); } else if (strcmp(SiFor,"for")!=0) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); printf("ntError: %s", SiFor); } else if (CadenaLeida[Tamano-1]!=')') {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); printf("ntError: %c falta par‚ntesis de cierre final", CadenaLeida[Tamano-1]); } else {Cont=0; PosIni=4; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Recorrer los car cteres de la cadena le¡da para reconocer los bloques del for. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ for(i=4;i<=Tamano-2;i++) {//Si el caracter es un ';' if(CadenaLeida[i]==';') {PosVec=0; //Guardar parte de la cadena en otra variable. for(j=PosIni;j<=i;j++) {Bloques[Cont][PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } Cont=Cont+1; PosIni=i+1; } } //Guardar parte de la cadena en otra variable. PosVec=0; for(j=PosIni;j<=Tamano-2;j++) {Bloques[Cont][PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } //--------------------------------------------------------------------------- //Si se han producido errores. if (Cont<2) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n for"); printf("ntError: faltan bloques del for 'for([init-expr];[cond-expr];[loop-expr])'"); } else if (Cont!=2) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n for"); printf("ntError: hay mas de 3 bloques para el for 'for([init-expr];[cond-expr];[loop-expr])'"); } else {//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Identificar los tokens existentes dentro de los bloques del for. //Almacenar los primero Tokens. strcpy(Tokens[0],SiFor); Tokens[1][0]=CadenaLeida[3]; CanTonk=1; //Recorrer todos los Bloques. for(i=0;i<=Cont;i++) {//Limpiar la variable NuevaCadena. PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} //Tomar el tamano del bloque actual. Tamano2=strlen(Bloques[i])-1; //Buscar los Tokens del Bloque Actual. for(j=0;j<=Tamano2;j++) {if(EsOperador(Bloques[i][j])==0 && Bloques[i][j]!=';') {NuevaCadena[PosVec]=Bloques[i][j]; PosVec=PosVec+1; } else {if (strlen(NuevaCadena)!=0) {CanTonk=CanTonk+1; for(k=0;k<=PosVec;k++) {Tokens[CanTonk][k]=NuevaCadena[k];} //Limpiar la variable NuevaCadena. PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} } CanTonk=CanTonk+1; Tokens[CanTonk][0]=Bloques[i][j]; } } } if (strlen(NuevaCadena)!=0) {CanTonk=CanTonk+1; for(k=0;k<=PosVec;k++) {Tokens[CanTonk][k]=NuevaCadena[k];} //Limpiar la variable NuevaCadena. PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} } CanTonk=CanTonk+1; Tokens[CanTonk][0]=41; //Ascii=')' //--------------------------------------------------------------- printf("nntNUMERO IDENTIFICADOS"); for(i=0;i<=CanTonk;i++) {if (strlen(Tokens[i])>0) {printf("nt%dt%s",i+1,Tokens[i]);} else {printf("nt%dt%c",i+1,Tokens[i]);} {printf("ttOK VALIDADO..!!!");} } } } } main() {Sigue=0; do { system("cls"); // clrscr(); printf("nntttPROGRAMA QUE VALIDA"); printf("nntttCICLO FORnn"); printf("nnttt1.ANALIZAR CICLO FORnnn"); printf("nntttDIGITE OPCION: "); scanf("%d", &Opcion); // flushall(); fflush(stdin); for(i=0;i<=149;i++) {CadenaLeida[i]=0; SiFor[i]=0; } // for(i=0;i<=49;i++) // {for(j=0;j<=149;j++) // {Bloques[i][j]=0; // Tokens[i][j]=0; // } // } if(Opcion==1) {EsFor(); printf("nnntEJECUTA EL PROGRAMA NUEVAMENTE?? [SI=1][NO=0]: "); scanf("%d",&Sigue); } else {printf("nnError digite una opci¢n valida.");} }while(Sigue!=0); }
4
« en: Domingo 13 de Septiembre de 2009, 08:12 »
TENGO ESTE CODIGO QUE ME DEJA EN "CadenaLeida" el ingreso de la sentencia sin espacio en blanco, pero al tomar esa "CadenaLeida" en el Programa anterio no me valida.... #include <iostream.h> #include <string.h> #include <conio.h> #include <dos.h> int main() { char string[150]; char CadenaLeida[150]; int pos, num_chars; for (pos = 0; pos < 80; pos++) { string[pos] =' '; //reset de string } cout << "INGRESE UNA CADENA CON LOS CARACTERES DEL ARREGLO: "; cin.get(string,150,'n'); int i; int j; for (i = j = 0; string[i] != ' '; i++) if (string[i] != ' ') string[j++] = string[i]; string[j] = ' '; printf("texto sin espacios: %s", string); strcpy(CadenaLeida, string); printf("n Cadena Final : %s ",CadenaLeida); getche(); return 0; }
5
« en: Domingo 13 de Septiembre de 2009, 08:12 »
Estimados tengo el siguiente código fuente, que me valida el ciclo for, pero lo único que me está faltando es que me considere los espacios en blanco, me podrían orientar como lo valido… Estaba buscando y algo encontré con isspace Pero no me resulta, tendré que guardarlo en un vector??? #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #include <windows.h> #include <math.h> #include <dos.h> int pos, num_chars, Sigue,Tamano,Cont,PosIni,i,PosVec,j,PosParen,Error,CanTonk,Tamano2,k,Opcion; char string[150],CadenaLeida[150],Bloques[50][150],SiFor[150],Tokens[50][150],NuevaCadena[150]; int EsOperador(char QueAnalizar) {if (QueAnalizar=='+') {return(1);} else if (QueAnalizar=='-') {return(1);} else if (QueAnalizar=='*') {return(1);} else if (QueAnalizar=='/') {return(1);} else if (QueAnalizar=='(') {return(2);} else if (QueAnalizar==')') {return(2);} else if (QueAnalizar=='[') {return(2);} else if (QueAnalizar==']') {return(2);} else if (QueAnalizar=='<') {return(3);} else if (QueAnalizar=='>') {return(3);} else if (QueAnalizar=='=') {return(3);} else if (QueAnalizar=='!') {return(3);} else {return(0);} } void EsFor() {printf("nntDigite la sentencia que desea evaluar: "); //Leer la cadena de caracteres que se va a evaluar. scanf("%s",CadenaLeida); //Tomar el tama¤o de la cadena. Tamano=strlen(CadenaLeida); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Recorrer los caracteres de la cadena le¡da para reconocer si es una sentencia. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ PosParen=0; for(i=0;i<=Tamano-1;i++) {//Si el caracter es un '('. if(CadenaLeida[i]=='(') {PosVec=0; for(j=0;j<=i-1;j++) {SiFor[PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } PosParen=i; break; } } //------------------------------------------------------------------------------- //Si se han producido errores. if(PosParen!=3) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); printf("ntError: %s", SiFor); } else if (strcmp(SiFor,"for")!=0) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); printf("ntError: %s", SiFor); } else if (CadenaLeida[Tamano-1]!=')') {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); printf("ntError: %c falta par‚ntesis de cierre final", CadenaLeida[Tamano-1]); } else {Cont=0; PosIni=4; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Recorrer los car cteres de la cadena le¡da para reconocer los bloques del for. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ for(i=4;i<=Tamano-2;i++) {//Si el caracter es un ';' if(CadenaLeida[i]==';') {PosVec=0; //Guardar parte de la cadena en otra variable. for(j=PosIni;j<=i;j++) {Bloques[Cont][PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } Cont=Cont+1; PosIni=i+1; } } //Guardar parte de la cadena en otra variable. PosVec=0; for(j=PosIni;j<=Tamano-2;j++) {Bloques[Cont][PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } //--------------------------------------------------------------------------- //Si se han producido errores. if (Cont<2) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n for"); printf("ntError: faltan bloques del for 'for([init-expr];[cond-expr];[loop-expr])'"); } else if (Cont!=2) {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n for"); printf("ntError: hay mas de 3 bloques para el for 'for([init-expr];[cond-expr];[loop-expr])'"); } else {//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Identificar los tokens existentes dentro de los bloques del for. //Almacenar los primero Tokens. strcpy(Tokens[0],SiFor); Tokens[1][0]=CadenaLeida[3]; CanTonk=1; //Recorrer todos los Bloques. for(i=0;i<=Cont;i++) {//Limpiar la variable NuevaCadena. PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} //Tomar el tamano del bloque actual. Tamano2=strlen(Bloques[i])-1; //Buscar los Tokens del Bloque Actual. for(j=0;j<=Tamano2;j++) {if(EsOperador(Bloques[i][j])==0 && Bloques[i][j]!=';') {NuevaCadena[PosVec]=Bloques[i][j]; PosVec=PosVec+1; } else {if (strlen(NuevaCadena)!=0) {CanTonk=CanTonk+1; for(k=0;k<=PosVec;k++) {Tokens[CanTonk][k]=NuevaCadena[k];} //Limpiar la variable NuevaCadena. PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} } CanTonk=CanTonk+1; Tokens[CanTonk][0]=Bloques[i][j]; } } } if (strlen(NuevaCadena)!=0) {CanTonk=CanTonk+1; for(k=0;k<=PosVec;k++) {Tokens[CanTonk][k]=NuevaCadena[k];} //Limpiar la variable NuevaCadena. PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} } CanTonk=CanTonk+1; Tokens[CanTonk][0]=41; //Ascii=')' //--------------------------------------------------------------- printf("nntNUMERO IDENTIFICADOS"); for(i=0;i<=CanTonk;i++) {if (strlen(Tokens[i])>0) {printf("nt%dt%s",i+1,Tokens[i]);} else {printf("nt%dt%c",i+1,Tokens[i]);} {printf("ttt OK VALIDADO..!!!");} } } } } main() {Sigue=0; do { system("cls"); printf("nnttttPROGRAMA QUE VALIDA"); printf("nntttttCICLO FORnn"); printf("nnttt1. ANALIZAR CICLO FORnnn"); printf("nnttttDIGITE OPCION: "); scanf("%d", &Opcion); for(i=0;i<=149;i++) {CadenaLeida[i]=0; SiFor[i]=0; } for(i=0;i<=49;i++) {for(j=0;j<=149;j++) {Bloques[i][j]=0; Tokens[i][j]=0; } } if(Opcion==1) {EsFor(); printf("nnntEJECUTA EL PROGRAMA NUEVAMENTE?? [SI=1][NO=0]: "); scanf("%d",&Sigue); } else {printf("nnError digite una opci¢n valida.");} }while(Sigue!=0); }
6
« en: Lunes 7 de Septiembre de 2009, 12:55 »
LISTO. int Sigue,Tamano,Cont,PosIni,i,PosVec,j,PosParen,Error,CanTonk,Tamano2,k,Opcion; char CadenaLeida[150],Bloques[50][150],SiFor[150],Tokens[50][150],NuevaCadena[150]; int pIni; char wh[10],od[10]; int EsOperador(char QueAnalizar) {if (QueAnalizar=='+') {return(1);} else if (QueAnalizar=='-') {return(1);} else if (QueAnalizar=='*') {return(1);} else if (QueAnalizar=='/') {return(1);} else if (QueAnalizar=='(') {return(2);} else if (QueAnalizar==')') {return(2);} else if (QueAnalizar=='[') {return(2);} else if (QueAnalizar==']') {return(2);} else if (QueAnalizar=='<') {return(3);} else if (QueAnalizar=='>') {return(3);} else if (QueAnalizar=='=') {return(3);} else if (QueAnalizar=='!') {return(3);} else {return(0);} } void EsFor() {printf("nntDIGITE LA SENTENCIA: "); scanf("%s",CadenaLeida); Tamano=strlen(CadenaLeida); PosParen=0; for(i=0;i<=Tamano-1;i++) { if(CadenaLeida[i]=='(') {PosVec=0; for(j=0;j<=i-1;j++) {SiFor[PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } PosParen=i; break; } } if(PosParen!=3) {printf("ntLA SENTENCIA DIGITADANO NO CUMPLE CON LA SINTAXIS DEL FOR"); printf("ntERROR: %s", SiFor); } else if(strcmp(SiFor,"for")!=0 && strcmp(SiFor,"For")!=0 && strcmp(SiFor,"FOR")!=0) {printf("ntLA SENTENCIA DIGITADANO NO CUMPLE CON LA SINTAXIS DEL FOR"); printf("ntERROR: %s", SiFor); } else if (CadenaLeida[Tamano-1]!=')') {printf("ntLA SENTENCIA DIGITADANO CUMPLE CON LA SINTAXIS DEL FOR"); printf("ntERROR: %c FALTA PARENTESIS DE CIERRE FINAL", CadenaLeida[Tamano-1]); } else {Cont=0; PosIni=4; for(i=4;i<=Tamano-2;i++) { if(CadenaLeida[i]==';') {PosVec=0; for(j=PosIni;j<=i;j++) {Bloques[Cont][PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } Cont=Cont+1; PosIni=i+1; } } PosVec=0; for(j=PosIni;j<=Tamano-2;j++) {Bloques[Cont][PosVec]=CadenaLeida[j]; PosVec=PosVec+1; } if (Cont<2) {printf("ntLA SENTENCIA DIGITADANO CUMPLE CON LA SINTAXIS DEL FOR"); printf("ntERROR: FALTAN BLOQUES DEL FOR 'for([init-expr];[cond-expr];[loop-expr])'"); } else if (Cont!=2) {printf("ntLA SENTENCIA DIGITADANO CUMPLE CON LA SINTAXIS DEL FOR"); printf("ntERROR: HAY 3 BLOQUES PARA EL FOR 'for([init-expr];[cond-expr];[loop-expr])'"); } else { strcpy(Tokens[0],SiFor); Tokens[1][0]=CadenaLeida[3]; CanTonk=1; for(i=0;i<=Cont;i++) { PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} Tamano2=strlen(Bloques[i])-1; for(j=0;j<=Tamano2;j++) {if(EsOperador(Bloques[i][j])==0 && Bloques[i][j]!=';') {NuevaCadena[PosVec]=Bloques[i][j]; PosVec=PosVec+1; } else {if (strlen(NuevaCadena)!=0) {CanTonk=CanTonk+1; for(k=0;k<=PosVec;k++) {Tokens[CanTonk][k]=NuevaCadena[k];} PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} } CanTonk=CanTonk+1; Tokens[CanTonk][0]=Bloques[i][j]; } } } if (strlen(NuevaCadena)!=0) {CanTonk=CanTonk+1; for(k=0;k<=PosVec;k++) {Tokens[CanTonk][k]=NuevaCadena[k];} PosVec=0; for(k=0;k<=149;k++) {NuevaCadena[k]=0;} } CanTonk=CanTonk+1; Tokens[CanTonk][0]=41; //Ascii=')' printf("nntTOKENS IDENTIFICADOS"); for(i=0;i<=CanTonk;i++) {if (strlen(Tokens[i])>0) {printf("nt%dt%s",i+1,Tokens[i]);} else {printf("nt%dt%c",i+1,Tokens[i]);} {printf("ttTOKENS OK VALIDADO..!!!");} } } } } main() {Sigue=0; do { system("cls"); printf("nnttttPROGRAMA QUE VALIDA"); printf("nntttttCICLO FORnn"); printf("nnttt1. ANALIZAR CICLO FORnnn"); printf("nnttttDIGITE OPCION: "); scanf("%d", &Opcion); for(i=0;i<=149;i++) {CadenaLeida[i]=0; SiFor[i]=0; } for(i=0;i<=49;i++) {for(j=0;j<=149;j++) {Bloques[i][j]=0; Tokens[i][j]=0; } } if(Opcion==1) {EsFor(); printf("nnntEJECUTA EL PROGRAMA NUEVAMENTE?? [SI=1][NO=0]: "); scanf("%d",&Sigue); } else {printf("nnERROE DIGITE UNA OPCION VALIDA.");} }while(Sigue!=0); }
7
« en: Lunes 7 de Septiembre de 2009, 12:48 »
con quie estas programando????? Cargaste simpson.h a la bibloteca de tu compilador, generalmente se llama la carpeta include??
8
« en: Miércoles 2 de Septiembre de 2009, 04:35 »
También estaba pensando en dejar en una variable el largo de la sentencia y con otro for validar… Que Opinan
9
« en: Martes 1 de Septiembre de 2009, 20:50 »
Estimados tengo la dura tare de Validar en C++ con DEV C++ el Cliclo For y tengo una vaga ide, plis si me pueden apoyar gracias les adjunto el codigo realizado hasta el momento Por ejemplo que me valide esta instruccion: for(x=1;x<=10;x=x+1) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> #include <math.h> void gotoxy(short x, short y) { HANDLE hConsoleOutput; COORD Cursor_Pos = {x, y}; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput, Cursor_Pos); } void carga_caracteres() { int i ; char car_mayusculas[100]; char car_minusculas[100]; char car_letras[100]; // for ( i=65; 90; i++); // mayusculas // car_mayusculas[i]=i; // for (i=97; 122; i++); // minusculas // car_minusculas[i]=i; //return; } void est_exit(int num) { switch(num) { case 0 :gotoxy(10,10);printf("Debe ingresar una f, en la primera posicion ");break; case 1 :gotoxy(10,11);printf("Debe ingresar una o, en la segunda posicion");break; case 1 :gotoxy(10,12);printf("Debe ingresar una r, en la tercera posicion");break; case 2 :gotoxy(10,13);printf("Debe ingresar parentecis (");break; case 3 :gotoxy(10,14);printf("Debe ingresar parentecis )");break; case 4 :gotoxy(10,15);printf("Debe ingresar un blanco");break; case 5 :gotoxy(10,16);printf("Debe ingresar una condición");break; case 6 :gotoxy(10,17);printf("Debe ingresar una una llave {");break; case 7 :gotoxy(10,18);printf("Debe ingresar una una llave }");break; } getch(); } main() { char sentencia [100]; int n; int i; int cont=0; char validos[11]; validos[0]='('; validos[1]=')'; validos[2]='{'; validos[3]='}'; validos[4]='<'; validos[5]='>'; validos[6]='='; validos[7]='!'; validos[8]='&'; validos[9]='|'; validos[10]=char(32); system("cls"); gotoxy(5,5);printf(" Ingrese sentencia--> ");scanf("%s",sentencia); n=strlen(sentencia); i=0; // do { if (sentencia[i] != 'f') est_exit(i); else { i=i+1; if (sentencia[i]!= 'o') est_exit(i); else { i=i+1; if (sentencia[i]!= 'r') est_exit(i); else { i=i+1; printf("%d",i); if ( sentencia[i] != ' ' ) est_exit(4); else; do { cont=cont+1; i=i+1; } while ( sentencia[i]= '(') ; } } // } while ( i != n); }
10
« en: Martes 25 de Agosto de 2009, 21:40 »
LISTO Y FUNCIONANDO EN DEV C++ #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #define MAX 100 int longitud;//LONGITUD DE LA CADENA ENTRADA int salgo;//BANDERA Q HACE ACABAR EL PROGRAMA SI EL USUARIO HA INSERTADO UNA MALA ENTRADA char entrada[MAX];//ENTRADA DEL USUARIO char salida[MAX];//SALIDA YA CONVERTIDA A LETRAS char actual[MAX];//VALOR DEL NUMERO ACTUAL char actualposterior[MAX];//VALOR DEL NUMERO POSTERIOR char revisada[MAX]; //LA ENTRADA UNA VEZ REVISADA PARA Q EL USUARIO NO ENTRE LETRAS char opcio[MAX]; //OPCION SELECCIONADA 1 CASTELLANO 2 ROMANO int p; int aux; int revisaelnumero(char a_revisar[]);//MIRA Q LA LONGITUD DEL TEXTO SEA MENOR DE 9 Y Q NO HAYAN LETRAS void traduce_a_Cas(char revisada[]); //FUNCION Q "TRADUCE" AL CASTELLANO void traduce_a_Rom(int); //FUNCION Q "TRADUCE" AL ROMANO void interface(); //FUNCION Q PRINTA EL MENSAJE DE BIENVENIDA Y LAS OPCIONES void Bienvenida(); //TAMBIEN ES LA Q SE ENCARGA DE RECOGER LA ENTRADA DEL USUARIO /*********************************MAIN DEL PROGRAMA**************************************/ int main() { while (salgo != 2)// 0. MIENTRAS NO DECIDAN SALIR... { Bienvenida();// LLAMA A LA FUNCION BIENBENIDA... getche(); interface();//1. MUESTRA EL TEXTO EN PANTALLA Y ESPERA ENTRADA salgo = revisaelnumero(entrada);//2. REVISA Q LA ENTRADA ESTE BIEN if (salgo == 0) { system("cls"); printf("n_______________________________________________________________nn"); printf("La entrada ha sido erronea! Vuelva a intentarlo!n"); printf("nRecuerde que la longitud maxima son 3 numeros y no ponga letras!!"); printf("n_______________________________________________________________nn"); getche(); main(); } if (salgo == 3) { system("cls"); printf("n_______________________________________________________________nn"); printf("La entrada ha sido erronea! Vuelva a intentarlo!n"); printf("nSolo el Numero 100 es soportado para 3 digitos!!"); printf("n_______________________________________________________________nn"); getche(); main(); } if (salgo == 2) { printf("nAdios!!!n");//3.5 EL USUARIO HA DECIDIDO SALIR } else //4. SI LA ENTRADA ESTA BIEN LO TRADUCE AL IDIOMA SELECCIONADO { if (strcmp(opcio,"1") == 0) { system("cls"); printf("n__________________________________________________________nn"); printf("nSU NUMERO EN PALABRAS:n"); printf("n__________________________________________________________nn"); traduce_a_Cas(entrada); } else { system("cls"); printf("n__________________________________________________________nn"); printf("nSU NUMERO EN ROMANO:n"); printf("n__________________________________________________________nn"); traduce_a_Rom(p); } printf("nn"); printf("%sn ",salida);//5. MUESTRA LA SALIDA printf("nn"); strcpy(salida,"");//6. VACIO LA SALIDA PARA NO CONCATENAR getche(); } } } /*************************************FUNCIONES*******************************************/ // FUNCION QUE "TRADUCE" EL NUMERO A EL CASTELLANO void traduce_a_Cas(char revisada[]) { char unidades[MAX][MAX]={"uno ","dos ","tres ","cuatro ","cinco ","seis ","siete ","ocho ","nueve "}; char decenas[MAX][MAX]={"diez ","veinte ","treinta ","cuarenta ","cincuenta ","sesenta ","setenta ","ochenta ","noventa "}; char centenas[MAX][MAX]={"ciento ","doscientos ","trescientos ","cuatrocientos ","quinientos ","seiscientos ","setecientos ","ochocientos ","novecientos "}; char decenasespeciales[MAX][MAX]={"diez ","once ","doce ","trece ","catorce ","quince ","dieciseis ","diecisiete ","dieciocho ","diecinueve "}; int numerito; int numeritoposterior; int i; int bandera; int posicionactual; longitud = strlen(revisada); for (i=longitud;i >= 1 ;i--) { bandera = longitud - i; posicionactual = longitud - bandera; switch(posicionactual) { case 1:case 4:case 7: //unidades actual[0] = revisada[bandera];actual[1] = ' '; numerito = atoi(actual); if (numerito != 1) { strcat(salida,unidades[numerito-1]); } else { if (longitud == 4 && posicionactual == 4) { } else if(longitud == 7 && posicionactual == 7) { strcat(salida,"un "); } else { strcat(salida,unidades[numerito-1]); } } break; case 2:case 5:case 8: //decenas actual[0] = revisada[bandera];actual[1] = ' '; numerito = atoi(actual); actualposterior[0] = revisada[bandera+1];actualposterior[1] = ' '; numeritoposterior = atoi(actualposterior); if (numerito == 1) { if (numeritoposterior != 0) { strcat(salida,decenasespeciales[numeritoposterior]); i--; } else { strcat(salida,decenas[numerito-1]); } } else { strcat(salida,decenas[numerito-1]); if (numeritoposterior !=0 && numerito != 0) strcat(salida,"y "); } break; case 3:case 6: //centenas actual[0] = revisada[bandera];actual[1] = ' '; numerito = atoi(actual); if (posicionactual == 6 && longitud > 6) { if (longitud == 7 && revisada[bandera-1] == '1') { strcat(salida,"millon "); } else { strcat(salida,"millones "); } } else if (posicionactual == 3 && longitud > 3) { if(revisada[bandera-1] =='0' && revisada[bandera-2] == '0' && revisada[bandera-3] == '0') { } else { strcat(salida,"mil "); } } if (numerito == 1 && revisada[bandera+1] == '0' && revisada[bandera+2] == '0') { strcat(salida,"cien "); } else { strcat(salida,centenas[numerito - 1]); } break; }//fin del switch }//fin del for } //fin de funcion /*******************************************/ // FUNCION QUE "TRADUCE" EL NUMERO AL ROMANO void traduce_a_Rom(int x) { while(x>=1000){x-=1000;printf("M");} while(x>=900){x-=900;printf("CM");} while(x>=500){x-=500;printf("D");} while(x>=400){x-=400;printf("CD");} while(x>=100){x-=100;printf("C");} while(x>=90){x-=90;printf("XC");} while(x>=50){x-=50;printf("L");} while(x>=40){x-=40;printf("XL");} while(x>=10){x-=10;printf("X");} while(x>=9){x-=9;printf("IX");} while(x>=5){x-=5;printf("V");} while(x>=4){x-=4;printf("IV");} while(x>=1){x-=1;printf("I");} } //fin de funcion /***********************/ // FUNCION DE BIENVENIDA void Bienvenida() { system("cls"); printf("n________________________________________________________________________________nn"); printf("BIENVENIDO SR USUARIOn"); printf("ESTA APLICACION LE PERMITE TRADUCIR NUMEROS A PALABRAS O NUMEROS ROMANOS.n"); printf("n________________________________________________________________________________nn"); printf("presione la tecla ENTERn"); } /******************/ //FUNCION OPCIONES void interface() { system("cls"); printf("n__________________________________________________________nn"); printf(" Digite un numero entre 1 y 100 , luego presione ENTER.n"); printf(" Si desea salir pulse * y ENTER.n"); printf("n__________________________________________________________nn"); printf("nNumero : "); scanf("%s",entrada); p=atoi(entrada); if (entrada[0] != '*') { system("cls"); printf("n__________________________________________________________nn"); printf("nSELECCIONE UN TIPO DE TRADUCCION:n"); printf("n__________________________________________________________nn"); printf("nn"); printf("n[1] - TRADUCIR A PALABRAS.n"); printf("nn"); printf("n[2] - TRADUIR A NUMERO ROMANO.n"); printf("nn"); printf("nOpcion : "); scanf("n%s",opcio); } } /*********************************************************************************/ //FUNCION Q REVISA EL NUMERO EN BUSCA DE UNA LONGITUD INCORRECTA O CARACTERES ALFA int revisaelnumero(char a_revisar[]) { int decision = 1; int largo; int i; largo = strlen(a_revisar); aux=atoi(a_revisar); if (aux>100) { decision = 3; } if ((largo > 3) || (largo < 1)) //MIRO Q LA LONGITUD SEA CORRECTA { decision = 0; } else if(a_revisar[0] == '*') { decision = 2; } else { for(i=0;i<largo;i++) { if(isalpha(a_revisar[i]) != 0) //MIRO Q NO HAYA LETRAS INTRODUCIDAS { decision = 0; } } } return decision; }
11
« en: Lunes 24 de Agosto de 2009, 17:48 »
ESTIMADOS TENGO ESTE CODIGO QUE LA IDEA ES INGRESAR UN NUMERO Y ESTE PREGUNTE POR UN MENU SI LO QUIERO EN LETRAS O ROMANO, PERO AL INGRESAR LA FUNCION A ROMANO NO ME TOMA, PLIS AYUDA.... /****************************DECLARACIONES*********************************************/ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #define MAX 100 int longitud;//LONGITUD DE LA CADENA ENTRADA int salgo;//BANDERA Q HACE ACABAR EL PROGRAMA SI EL USUARIO HA INSERTADO UNA MALA ENTRADA char entrada[MAX];//ENTRADA DEL USUARIO char salida[MAX];//SALIDA YA CONVERTIDA A LETRAS char actual[MAX];//VALOR DEL NUMERO ACTUAL char actualposterior[MAX];//VALOR DEL NUMERO POSTERIOR char revisada[MAX]; //LA ENTRADA UNA VEZ REVISADA PARA Q EL USUARIO NO ENTRE LETRAS char opcio[MAX]; //OPCION SELECCIONADA 1 CASTELLANO 2 ROMANO int revisaelnumero(char a_revisar[]);//MIRA Q LA LONGITUD DEL TEXTO SEA MENOR DE 9 Y Q NO HAYAN LETRAS void traduce_a_Let(char revisada[]); //FUNCION Q "TRADUCE" AL CASTELLANO void traduce_a_Rom(char revisada[]); //FUNCION Q "TRADUCE" AL ROMANO void interface(); //FUNCION Q MUESTRA EL MENSAJE DE BIENVENIDA Y LAS OPCIONES void romanos(int); //FUNCION QUE VALIDA NUMERO ROMANO /*********************************MAIN DEL PROGRAMA**************************************/ main() { while (salgo != 2){ // 0. MIENTRAS NO DECIDAN SALIR... interface(); //1. MUESTRA EL TEXTO EN PANTALLA Y ESPERA ENTRADA salgo = revisaelnumero(entrada); //2. REVISA Q LA ENTRADA ESTE BIEN if (salgo == 0){ //3. SI LA ENTRADA NO ESTA BIEN SE QUEJA printf("INCORRECTO!! INTENTELO NUEVAMENTE!!!n"); printf("nLOMGITUD MAXIMA 3!!"); printf(" "); } else{ if (strcmp(opcio,"1") == 0){ traduce_a_Let(entrada); } else{ traduce_a_Rom(entrada); } printf("nSU NUMERO ES :n"); printf("%sn",salida); //5. MUESTRA LA SALIDA printf("---n"); strcpy(salida,""); //6. VACIO LA SALIDA PARA NO CONCATENAR } } } /*************************************FUNCIONES*******************************************/ // FUNCION QUE "TRADUCE" EL NUMERO A LETRA void traduce_a_Let(char revisada[]){ char unidades[MAX][MAX]={"UNO","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE"}; char decenas[MAX][MAX]={"DIEZ","VEINTE","TRINTA","CUARENTA","CINCUENTA","SESENTA","SETENTA","OCHENTA","NOVENTA"}; char centenas[MAX][MAX]={"CIENTO"}; char decenasespeciales[MAX][MAX]={"DIEZ","ONCE","DOCE","TRECE","CATORCE","QUINCE","DIECISEIS","DIECISIETE","DIECIOCHO","DIECINUEVE"}; int numerito; int numeritoposterior; int i; int bandera; int posicionactual; longitud = strlen(revisada); for (i=longitud;i >= 1 ;i--){ bandera = longitud - i; posicionactual = longitud - bandera; switch(posicionactual){ case 1:case 4:case 7: //unidades actual[0] = revisada[bandera];actual[1] = ' '; numerito = atoi(actual); if (numerito != 1){ strcat(salida,unidades[numerito-1]); } else{ if (longitud == 4 && posicionactual == 4){ } else if(longitud == 7 && posicionactual == 7){ strcat(salida," UN "); }else{ strcat(salida,unidades[numerito-1]); } } break; case 2:case 5:case 8: //decenas actual[0] = revisada[bandera];actual[1] = ' '; numerito = atoi(actual); actualposterior[0] = revisada[bandera+1];actualposterior[1] = ' '; numeritoposterior = atoi(actualposterior); if (numerito == 1){ if (numeritoposterior != 0){ strcat(salida,decenasespeciales[numeritoposterior]); i--; }else{ strcat(salida,decenas[numerito-1]); } } else{ strcat(salida,decenas[numerito-1]); if (numeritoposterior !=0 && numerito != 0) strcat(salida," Y "); } break; case 3:case 6: //centenas actual[0] = revisada[bandera];actual[1] = ' '; numerito = atoi(actual); if (numerito == 1 && revisada[bandera+1] == '0' && revisada[bandera+2] == '0'){ strcat(salida,"CIEN"); }else{ strcat(salida,centenas[numerito - 1]); } break; }//fin del switch }//fin del for } //fin de funcion //FUNCION QUE "TRADUCE" EL NUMERO ROMANO void traduce_a_Rom(char revisada[]) { /* void traduce_a_Rom(int); { int p; do { printf("Inserte un numero: "); scanf("%d",&p); if(p<1) printf("Deben ser mayores a ceron"); else { if(p<4000) traduce_a_Rom(p); else { if((p/1000)>3) printf("®"); traduce_a_Rom((p/1000)); printf("¯"); traduce_a_Rom(p%1000); } } } while(p<1); getchar(); getchar(); return 0; } void traduce_a_Rom(int x) { while(x>=1000){x-=1000;printf("M");} while(x>=900){x-=900;printf("CM");} while(x>=500){x-=500;printf("D");} while(x>=400){x-=400;printf("CD");} while(x>=100){x-=100;printf("C");} while(x>=90){x-=90;printf("XC");} while(x>=50){x-=50;printf("L");} while(x>=40){x-=40;printf("XL");} while(x>=10){x-=10;printf("X");} while(x>=9){x-=9;printf("IX");} while(x>=5){x-=5;printf("V");} while(x>=4){x-=4;printf("IV");} while(x>=1){x-=1;printf("I");} } */ } //fin de funcion //FUNCION QUE MUESTRA EL MENSAJE DE BIENVENIDA Y LAS OPCIONES void interface(){ printf("nEscriba un numero de 1 a 100 : n"); printf("* Para Salir.n"); scanf("%s",entrada); if (entrada[0] != '*'){ printf("nSELECCIONE UNA OPCION:n"); printf("n1 - TRADUCIR AL LETRAS.n"); printf("n2 - TRADUIR A NUM. ROMANO.n"); scanf("n%s",opcio); } } //FUNCION Q REVISA EL NUMERO EN BUSCA DE UNA LONGITUD INCORRECTA O CARACTERES ALFA int revisaelnumero(char a_revisar[]){ int decision = 1; int largo; int i; largo = strlen(a_revisar); if ((largo > 3) || (largo < 1)){ //MIRO Q LA LONGITUD SEA CORRECTA decision = 0; } else if(a_revisar[0] == '*'){ decision = 2; } else{ for(i=0;i<largo;i++){ if(isalpha(a_revisar[i]) != 0){ //MIRO Q NO HAYA LETRAS INTRODUCIDAS decision = 0; } } } return decision; }
ESTE ES EL QUE VALIDA A NUMERO ROMANO //FUNCION QUE "TRADUCE" EL NUMERO ROMANO //void traduce_a_Rom(int); #include<stdio.h> void traduce_a_Rom(int); main() { int p; do { printf("Inserte un numero: "); scanf("%d",&p); if(p<1) printf("Deben ser mayores a ceron"); else { if(p<4000) traduce_a_Rom(p); else { if((p/1000)>3) printf("®"); traduce_a_Rom((p/1000)); printf("¯"); traduce_a_Rom(p%1000); } } }while(p<1); getchar(); getchar(); return 0; } void traduce_a_Rom(int x) { while(x>=1000){x-=1000;printf("M");} while(x>=900){x-=900;printf("CM");} while(x>=500){x-=500;printf("D");} while(x>=400){x-=400;printf("CD");} while(x>=100){x-=100;printf("C");} while(x>=90){x-=90;printf("XC");} while(x>=50){x-=50;printf("L");} while(x>=40){x-=40;printf("XL");} while(x>=10){x-=10;printf("X");} while(x>=9){x-=9;printf("IX");} while(x>=5){x-=5;printf("V");} while(x>=4){x-=4;printf("IV");} while(x>=1){x-=1;printf("I");} }
12
« en: Martes 18 de Agosto de 2009, 23:12 »
a ver probraremos con el float.... Muchas Gracias estimado....
13
« en: Martes 18 de Agosto de 2009, 22:28 »
SOLUCIONADO...... # include <stdio.h> # include <conio.h> # include <string.h> # include <stdlib.h> char cadena[100]; int estado=0; int i=0; main () { printf("INGRESE UN VALOR DECIMAL :"); gets(cadena); for (i=0;((i<strlen(cadena))&&(estado!=3));i++) { if (estado==0) { if ((cadena[i]>=48)&&(cadena[i]<=57)) estado=1; else if (cadena[i]=='.') estado=2; else estado=4; } else //else1 { if (estado==1) { if ((cadena[i] >=48)&&(cadena[i]<=57)) estado=1; else if (cadena[i]=='.') estado=2; else estado=5; } else //else2 { if (estado==2) { if ((cadena[i] >=48)&&(cadena[i]<=57)) estado=3; else estado=6; } else //else3 { if (estado==3) { if ((cadena[i] >=48)&&(cadena[i]<=57)) estado=3; else estado=7; } }//else3 }//else2 }//else1 }// for if (estado==1) printf("EL NUMERO ES DECIMAL"); if (estado==2) printf("EL NUMERO CONTIENE PUNTO"); if (estado==3) printf("EL NUMERO DECIMAL ES CORRECTO"); if (estado==4) printf("ERROR: DEBE EMPEZAR CON NUMERO O PUNTO"); if (estado==5) printf("ERROR: SOLO SE ACEPTAN NUMEROS"); if (estado==6) printf("DEBE INGRESAR PUNTO DECIMAL"); if (estado==7) printf("SOLO SE HACEPTAN NUMEROS"); getch(); }
14
« en: Martes 18 de Agosto de 2009, 06:41 »
ENCUAENTRAN ALGUN ERROR EN ESTE CODIGO.... NO ME CORRE OK... # include <stdio.h> # include <conio.h> # include <string.h> # include <stdlib.h> char cadena[100]; int estado=0; int i=0; main () { printf("INGRESE UN VALOR DECIMAL :"); gets(cadena); for (i=0;((i<strlen(cadena))&&(estado!=3));i++) { if (estado==0) { if ((cadena[i]>=48)&&(cadena[i]<=57)) estado=1; if (cadena[i]=='.') estado=2; else estado=4; } else if (estado==1) { if ((cadena[i] >=48)&&(cadena[i]<=57)) estado=1; if (cadena[i]=='.') estado=2; else estado=5; } else if (estado==2) { if ((cadena[i] >=48)&&(cadena[i]<=57)) estado=3; else estado=6; } else if (estado==3) { if ((cadena[i] >=48)&&(cadena[i]<=57)) estado=3; else estado=7; } } if (estado==1) printf("EL NUMERO ES DECIMAL"); { if (estado==2) printf("EL NUMERO CONTIENE PUNTO"); { if (estado==3) printf("EL NUMERO DECIMAL ES CORRECTO"); { if (estado==4) printf("ERROR: DEBE EMPEZAR CON NUMERO O PUNTO"); { if (estado==5) printf("ERROR: SOLO SE ACEPTAN NUMEROS"); { if (estado==6) printf("DEBE INGRESAR PUNTO DECIMAL"); { if (estado==7) printf("SOLO SE HACEPTAN NUMEROS"); } } } } } getch(); } }
Páginas: [1]
|
|
|