nenevargas Posted November 30, 2012 Report Share Posted November 30, 2012 Buenas necesito alguna ayuda con el siguiente trabajo que debo hacer: Desarrollar software en el que abrir aparezcan 8 opciones a seleccionar.Opción 1:Ingresar rut sin dígito verificador y entregar el dígito.Debe mostrar todos los rut que se han guardado mientras el programa este abierto.Opción 2 a la 8 ,opciones de test de salud . La verdad la parte de rut es lo que mas me complica si alguien puede ayudarme se lo agradeceria. Saludos. Link to comment Share on other sites More sharing options...
nycko[!] Posted November 30, 2012 Report Share Posted November 30, 2012 con un switch y un arreglo de numeros long puedes hacer eso, manda lo que tienes y revisamos lo que te complica :rolleyes: Link to comment Share on other sites More sharing options...
AshWilliams Posted November 30, 2012 Report Share Posted November 30, 2012 #include <stdio.h>#include <string.h>int main(){//declaracion de variableschar rut[7];char rutvalidado[7];int total=0;int a,b,c;int contador=3;int acumulador=0;int resto=0;int digito=0;//fin declaracion de variablesprintf("*** CALCULO DEL DIGITO VERIFICADOR RUT (CHILE) ***");printf("\n\n");printf("Ingrese el rut que ejecutar: ");gets(rut);total=strlen(rut);if(total<=7) {for(a=0;a<=7;a++) {if(rut[0]==rut[a]) {rutvalidado[0]='0';rutvalidado[a+1]=rut[0];}else {rutvalidado[a+1]=rut[a];}}}else{for(b=0;b<=7;b++) {rutvalidado=rut;}}for(c=0;c<=7;c++) {if(contador==2) {acumulador=acumulador+((rutvalidado[c]-48)*contador);contador=8;}else{acumulador=acumulador+((rutvalidado[c]-48)*contador);}contador=contador-1;}digito=(11-(acumulador%11));if(digito>=10) {if(digito==10) {printf("\nEl digito verificador de su rut es: K"); }else{printf("\nEl digito verificador de su rut es: 0");}}else{printf("\nEl digito verificador de su rut es: %d", digito);}getchar();getchar();}#include <stdio.h>#include <string.h>int main(){//declaracion de variableschar rut[7];char rutvalidado[7];int total=0;int a,b,c;int contador=3;int acumulador=0;int resto=0;int digito=0;//fin declaracion de variablesprintf("*** CALCULO DEL DIGITO VERIFICADOR RUT (CHILE) ***");printf("\n\n");printf("Ingrese el rut que ejecutar: ");gets(rut);total=strlen(rut);if(total<=7) {for(a=0;a<=7;a++) {if(rut[0]==rut[a]) {rutvalidado[0]='0';rutvalidado[a+1]=rut[0];}else {rutvalidado[a+1]=rut[a];}}}else{for(b=0;b<=7;b++) {rutvalidado=rut;}}for(c=0;c<=7;c++) {if(contador==2) {acumulador=acumulador+((rutvalidado[c]-48)*contador);contador=8;}else{acumulador=acumulador+((rutvalidado[c]-48)*contador);}contador=contador-1;}digito=(11-(acumulador%11));if(digito>=10) {if(digito==10) {printf("\nEl digito verificador de su rut es: K"); }else{printf("\nEl digito verificador de su rut es: 0");}}else{printf("\nEl digito verificador de su rut es: %d", digito);}getchar();getchar();} O bien este http://mygnet.net/it/descargas/codigos/validar_un_rut_chileno.158.zip Tiene extensión cpp pero está en C ;) PS: Tienes que manejar arreglo simples como dice el user de arriba o puedes usar memoria dinámica?? Saludos :krider: Link to comment Share on other sites More sharing options...
nenevargas Posted December 5, 2012 Author Report Share Posted December 5, 2012 Muchas gracias por la ayuda,ahora que entiendo lo que se debe hacer les pido una ayudita :La idea del programa es un Test de Salud el cual contemple 8 opciones y entre ellas este el del rut ( digito verificador),el problema que tengo es que los otros 7 programa los tengo en C++ y me pidieron entregarlos en C, las 8 opciones incluyendo al del rut seria asi:1- RUT (el que ustedes me dieron)2- Test de colesterol #include #include using namespace std;int main (){float colt, colhdl, tri, colldl, colvldl;cout << "Ingrese su nivel de colesterol total. (mg/dL)\n";cin >> colt;cout << "Ingrese su nivel de colesterol HDL. (mg/dL)\n";cin >> colhdl;cout << "Ingrese su nivel de trigliceridos. (mg/dL)\n";cin >> tri;colvldl= tri/5;colldl= colt -(colvldl +colhdl);cout << "Su nivel de colesterol LDL es " << colldl << " mg/dL.\n";cout << "Su nivel de colesterol VLDL es " << colvldl << " mg/dL.\n";system("pause");return 0;} 3- Test de vejiga hiperactiva #include using namespace std;int main (){int sum=0;int cont,sexo;cout << "Ingrese 1 si es hombre, y cualquier numero si es mujer.\n";cin >> sexo;if (sexo == 1){cont=2;sum=sum+cont;}cout << "Hasta que punto sientes molestias debido a:\n";cout << "\nTener que orinar mas de 8 veces en un periodo de 24 horas?\n\n1)Nada.\n2)Un poco.\n3)Bastante.\n4)Mucho.\n";cin >> cont;sum=sum+cont-1;cout << "\nTener deseos molestos de orinar?\n\n1)Nada.\n2)Un poco.\n3)Bastante.\n4)Mucho.\n";cin >> cont;sum=sum+cont-1;cout << "\nTener deseos repentinos de orinar con poco o ningun aviso?\n\n1)Nada.\n2)Un poco.\n3)Bastante.\n4)Mucho.\n";cin >> cont;sum=sum+cont-1;cout << "\nTener perdida accidental de pequeñas cantidades de orina?\n\n1)Nada.\n2)Un poco.\n3)Bastante.\n4)Mucho.\n";cin >> cont;sum=sum+cont-1;cout << "\nTener que orinar por la noche?\n\n1)Nada.\n2)Un poco.\n3)Bastante.\n4)Mucho.\n";cin >> cont;sum=sum+cont-1;cout << "\nDespertarse por la noche porque tenia que orinar?\n\n1)Nada.\n2)Un poco.\n3)Bastante.\n4)Mucho.\n";cin >> cont;sum=sum+cont-1;cout << "\nEvitas alguna de las siguientes situaciones por miedo a no llegar a tiempo al baño?\n";cout << "\nSalir con familiares o amigos?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "\nIr al cine, un evento deportivo o de otro tipo).\n\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "\nViajes largos?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "\nReuniones largas?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "\nTransporte publico?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "\nTu indice DETEN es " << sum << ".\n" << "Si es mayor de 12 puntos, consulta con tu medico.\n";system("pause");return 0;} 4- Test de dependencia al cigarro #include #include using namespace std;int main (){int sum=0;int cont;cout << "Escriba como respuesta el numero correspondiente a la opcion que elija.\n\n";cout << "Cuantos minutos pasan entre el momento de levantarse y fumar el primer cigarrillo?\n\n1)Mas de 60.\n2)De 31 a 60.\n3)De 6 a 30.\n4)5 o menos.\n";cin >> cont;sum=sum+cont-1;cout << "Encuentras dificultad para abstenerse de fumar en lugares donde esta prohibido?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "Que cigarrillo te costaria mas abandonar?\n\n1)Otros.\n2)El primero de la mañana.\n";cin >> cont;sum=sum+cont-1;cout << "Cuantos cigarrillos fumas al dia?\n\n1)Menos de 11.\n2)Entre 11 y 20.\n3)Entre 21 y 30.\n4)Mas de 30.\n";cin >> cont;sum=sum+cont-1;cout << "Fumas mas durante las primeras horas de la mañana que durante el resto del dia?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "Fumas cuando no te encuentras bien o cuando estas enfermo?\n\n1)No.\n2)Si.\n";cin >> cont;sum=sum+cont-1;cout << "Tu indice de dependecia es " << sum << ".\n";if (sum <=1){cout << "Tu dependencia es muy baja.\n";}else if (sum <=3){cout << "Tu dependencia es baja.\n";}else if (sum <=5){cout << "Tu dependencia es moderada.\n";}else if (sum <=7){cout << "Tu dependencia es alta.\n";}else { cout << "Tu dependencia es muy alta.\n";}system("pause");return 0;} 5- Indice de Masa Corporal(IMC) #include #include using namespace std;int main (){float alt, peso, imc;cout << "Ingrese su altura en metros.\n";cin >> alt;cout << "Ingrese su peso en kilogramos.\n";cin >> peso;imc = peso/(alt*alt);cout << "Tu IMC es " << imc << ".\n";if (imc < 18.5){cout << "Tu peso esta por debajo de lo normal.\n";}else if (imc <= 24.9){cout << "Tu peso es normal.\n";}else if (imc <= 29.9){cout << "Estas en un estado de sobrepeso.\n";}else if (imc <=34.9){cout << "Estas en un estado de obesidad en grado 1.\n";}else if (imc <=39.9){cout << "Estas en un estado de obesidad en grado 2.\n";}else { cout << "Estas en un estado de obesidad en grado 3.\n";}system("pause");return 0;} 6- Presión arterial #include #include using namespace std;int main (){int ps,pd;cout << "Ingrese su presion sistolica.\n";cin >> ps;cout << "\nIngrese su presion diastolica.\n";cin >> pd;if (ps <120 && pd <80){cout << "\nSu presion arterial es optima.\n";}else if (ps <130 && pd <85){cout << "\nSu presion arterial es normal.\n";}else if (ps <140 || pd <90){cout << "\nSu presion arterial es normal alta.\n";}else if (ps <160 || pd <100){cout << "\nSu presion arterial esta en un estado de hipertension leve.\n";}else if (ps <180 || pd <110){cout << "\nSu presion arterial esta en un estado de hipertension moderada.\n";}else { cout << "\nSu presion arterial esta en un estado de hipertension grave.\n";}system("pause");return 0;} 7- Riesgo vascular #include using namespace std;int main (){loop:int edad,sexo,ct,hdl,ps,pd,dia,fum,sum,ptj,cont;cout << "Ingrese 1 si es hombre, y cualquier numero si es mujer.\n";cin >> sexo;cout << "Ingrese su edad.\n";cin >> edad;cout << "Ingrese su colesterol total.\n";cin >> ct;cout << "Ingrese su colesterol HDL.\n";cin >> hdl;cout << "Ingrese su presion sistolica.\n";cin >> ps;cout << "Ingrese su presion diastolica.\n";cin >> pd;cout << "Ingrese 1 si es diabetico, y cualquier numero si no lo es.\n";cin >> dia;cout << "Ingrese 1 si es fumador, y cualquier numero si no lo es.\n";cin >> fum;int redad,rct,rhdl,rpa,rdia,rfum;if (edad <= 34){if (sexo ==1){redad=-1;}else {redad= -9;}/**/}else if (edad <=39) {if (sexo ==1){redad=0;}else {redad= -4;}/**/}else if (edad <=44) {if (sexo ==1){redad=1;}else {redad=0;}/**/}else if (edad <=49){if (sexo ==1){redad=2;}else {redad=3;}/**/}else if (edad <= 54) {if (sexo ==1){redad=3;}else {redad=6;}/**/}else if (edad <=59){if (sexo ==1){redad=4;}else {redad=7;}/**/}else if (edad <=64){if (sexo ==1){redad=5;}else {redad=8;}/**/}else if (edad <=69){if (sexo ==1){redad=6;}else {redad=8;}/**/}else {if (sexo ==1){redad=7;}else {redad=8;}/**/}if (ct<160){if (sexo==1){rct =-3;}else {rct=-2;}/**/}else if (ct<=190){rct=0;}/**/else if (ct<=239){rct=1;}/**/else if (ct<=279){if (sexo==1){rct=2;}else {rct=1;}/**/}else{rct=3;}/**/if (hdl<35){if (sexo==1){rhdl=2;}else {rhdl=5;}/**/}else if (hdl<=44){if (sexo==1){rhdl=1;}else {rhdl=2;}/**/}else if (hdl<=49){if (sexo==1){rhdl=0;}else {rhdl=1;}/**/}else if (hdl<=59){rhdl=0;}/**/else {if (sexo==1){rhdl=-2;}else {rhdl=-3;}/**/}if (ps<120 && pd<80){if (sexo==1){rpa=0;}else {rpa=-3;}/**/}else if (ps<=129 && pd<=84){rpa=0;}/**/else if (ps<=139 && pd<=89){if (sexo==1){rpa=1;}else {rpa=0;}/**/}else if (ps<=159 && pd<=99){rpa=2;}/**/else {rpa=3;}/**/if (dia==1){if (sexo==1){rdia=2;}else {rdia=4;}/**/}else {rdia=0;}/**/if (fum==1){rfum=2;}else {rfum=0;}/**/int pje,rpje;pje=redad+rct+rhdl+rpa+rdia+rfum;if (pje<=-2){if (sexo==1){rpje=2;}else {rpje=1;}/**/}else if (pje==-1){rpje=2;}/**/else if (pje<=1){if (sexo==1){rpje=3;}else {rpje=2;}/**/}else if (pje==2){if (sexo==1){rpje=4;}else {rpje=3;}/**/}else if (pje==3){if (sexo==1){rpje=5;}else {rpje=3;}/**/}else if (pje==4){if (sexo==1){rpje=7;}else {rpje=4;}/**/}else if (pje==5){if (sexo==1){rpje=8;}else {rpje=4;}/**/}else if (pje==6){if (sexo==1){rpje=10;}else {rpje=5;}/**/}else if (pje==7){if (sexo==1){rpje=13;}else {rpje=6;}/**/}else if (pje==8){if (sexo==1){rpje=16;}else {rpje=7;}/**/}else if (pje==9){if (sexo==1){rpje=20;}else {rpje=8;}/**/}else if (pje==10){if (sexo==1){rpje=25;}else {rpje=10;}/**/}else if (pje==11){if (sexo==1){rpje=31;}else {rpje=11;}/**/}else if (pje==12){if (sexo==1){rpje=37;}else {rpje=13;}/**/}else if (pje==13){if (sexo==1){rpje=45;}else {rpje=15;}/**/}else if (pje==14){if (sexo==1){rpje=53;}else {rpje=18;}/**/}else if (pje==15){if (sexo==1){rpje=53;}else {rpje=18;}/**/}else if (pje==16){if (sexo==1){rpje=53;}else {rpje=24;}/**/}else {if (sexo==1){rpje=53;}else {rpje=27;}/**/}cout << "Tu probabilidad de sufrir un accidente cardiovascular es de " << rpje << "%.\n";cout << "\nSi desea seguir utilizando el programa, presione 1.\n";cout << "Si prefiere cerrar la aplicacion, presione cualquier tecla.\n";cin >> cont;if (cont == 1) goto loop;return 0;}//fin metodo main 8- Test de dependencia del alcohol #include #include using namespace std;int main (){int sum=0;int cont;cout << "Escriba como respuesta el numero correspondiente a la opcion que elija.\n\n";cout << "Con que frecuencia consumes bebidas alcoholicas?.\n\n1)Nunca.\n2)Una o menos veces al mes.\n3)2 a 4 veces al mes.\n4)2 o 3 veces a la semana.\n5)4 o mas veces a la semana.\n";cin >> cont;sum=sum+cont-1;cout << "\nCuantas bebidas alcoholicas consumes normalmente cuando bebes?\n\n1)1 o 2.\n2)3 o 4.\n3)5 o 6.\n4)7 a 9.\n5)10 o mas.\n";cin >> cont;sum=sum+cont-1;cout << "\nCon que frecuencia te tomas 6 o mas bebidas alcoholicas en un solo dia?\n\n1)Nunca.\n2)Menos de una vez/mes.\n3)Mensualmente.\n4)Semanalmente.\n5)A diario o casi a diario.\n";cin >> cont;sum=sum+cont-1;cout << "\nCon que frecuencia, en el curso del ultimo año, has sido incapaz de parar de beber una vez que habias empezado?\n\n1)Nunca.\n2)Menos de una vez/mes.\n3)Mensualmente.\n4)Semanalmente.\n5)A diario o casi a diario.\n";cin >> cont;sum=sum+cont-1;cout << "\nCon que frecuencia, en el curso del ultimo año, no pudiste atender tus obligaciones porque habias bebido?\n\n1)Nunca.\n2)Menos de una vez/mes.\n3)Mensualmente.\n4)Semanalmente.\n5)A diario o casi a diario.\n";cin >> cont;sum=sum+cont-1;cout << "\nCon que frecuencia, en el curso del ultimo año, has necesitado beber en ayunas para recuperarte despues de haber bebido mucho el dia anterior?\n\n1)Nunca.\n2)Menos de una vez/mes.\n3)Mensualmente.\n4)Semanalmente.\n5)A diario o casi a diario.\n";cin >> cont;sum=sum+cont-1;cout << "\nCon que frecuencia, en el curso del ultimo año, has tenido remordimientos o sentimientos de culpa despues de haber bebido?\n\n1)Nunca.\n2)Menos de una vez/mes.\n3)Mensualmente.\n4)Semanalmente.\n5)A diario o casi a diario.\n";cin >> cont;sum=sum+cont-1;cout << "\nCon que frecuencia, en el curso del ultimo año, no has podido recordar lo que sucedio la noche anterior porque habias estado bebiendo?\n\n1)Nunca.\n2)Menos de una vez/mes.\n3)Mensualmente.\n4)Semanalmente.\n5)A diario o casi a diario.\n";cin >> cont;sum=sum+cont-1;cout << "\nTu o alguna otra persona, han resultado heridos porque habias bebido?\n\n1)No.\n2)Si, pero no en el curso del ultimo año.\n3)Si, en el ultimo año.\n";cin >> cont;cont = (cont-1)*2;sum=sum+cont;cout << "\nAlgun familiar, amigo, medico o profesional sanitario han mostrado preocupacion por tu consumo de alcohol, o te han sugerido que dejes de beber?\n\n1)No.\n2)Si, pero no en el curso del ultimo año.\n3)Si, en el ultimo año.\n";cin >> cont;cont = (cont-1)*2;sum=sum+cont;cout << "\nTu puntuacion en el test es: " << sum << "." << "\nSi tu puntuacion es mayor de 8, puede ser sintoma de padecer algun problema relacionado con el alcohol.\n";system("pause");return 0;} De ante manos gracias por ayudarme con lo del rut agradecería infinitamente si me pueden ayudar de nuevo.Saludos Link to comment Share on other sites More sharing options...
cañangasñangas Posted December 5, 2012 Report Share Posted December 5, 2012 (edited) me da lata hacer el codigo en c ya que necesitas ademas una funcion que te entrege la reversa del rut, asique te dejo un pseudo codigo: String codeRut(String rut){ rut = rut.reverse(); // supone que reverse entrega el String rut al reves int aux = 1; int sizeOf = rut.length(); // supone que length entrega el largo de rut for(int i=0;i<sizeOf;i++){ aux++; s+=atoi(rut[i])+aux; if(aux == 7){ aux=1; } } digit = 11-s%11; String d; if(digit == 11){ d="0"; }elseif(digit == 10){ d="K"; }else{ d=itoa(digit); } return d; }eso seria mas o menos.. Edited December 5, 2012 by cañangasñangas Link to comment Share on other sites More sharing options...
zafrada Posted December 5, 2012 Report Share Posted December 5, 2012 Para pasarlo de c++ basta cambiar los cout por printf y los cin por scanf, un ejemplo de printf y scanf: int opcion;printf("Ingrese una opción: 1, 2 o 3:\n");scanf("%d", &opcion); if(opcion == 1) printf("\nIngresada opcion 1"); Link to comment Share on other sites More sharing options...
Holic Posted December 10, 2012 Report Share Posted December 10, 2012 (edited) /* Escrito por HoLiC * Compilacion: gcc -o digitoVerificador digitoVerificador.c * Uso: ./digitoVerificador * Se debe escribir un rut sin puntos ni digito verificador * y el programa imprimira su digito verificador calculado */ /* entrada y salida */ #include <stdio.h> /* cadenas */ #include <string.h> /* para exit() y EXIT_SUCCESS */ #include <stdlib.h> #define TAMANIO_RUT 10 int main(){ char rut[TAMANIO_RUT]; /* leemos el rut sin el digito */ fscanf(stdin, "%s" ,rut); int i; int j = 1, digito = 0, largo = strlen(rut); /* se multiplica desde el ultimo numero por una secuencia 2, 3, ..., 7, 2, ...*/ for(i=(largo-1); i>=0; i--){ j++; char buff = rut[i]; /* atoi realiza la conversion de buff a int */ digito += j*atoi(&buff); if(j == 7) j = 1; } digito = 11 - digito%11; rut[largo] = '-'; /* se verifican casos si el digito da 10 u 11 */ if( digito == 11 ) rut[largo+1] = '0'; else if( digito == 10 ) rut[largo+1] = 'K'; /* en caso de que sea un digito entre 1 y 9 se realiza la conversion int a char */ else rut[largo+1] = (char ) (digito + 48); /* se agrega el caracter fin de cadena*/ rut[largo+2] = '\0'; fprintf(stdout, "%s\n" ,rut); exit(EXIT_SUCCESS); } Edited December 10, 2012 by Holic Link to comment Share on other sites More sharing options...
cañangasñangas Posted December 13, 2012 Report Share Posted December 13, 2012 movido a aplicaciones de escritorio Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now