Jump to content

Ayuda con un programa en C


Recommended Posts

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

#include <stdio.h>

#include <string.h>

int main()

{

//declaracion de variables

char 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 variables

printf("*** 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 variables

char 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 variables

printf("*** 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

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 :ps2:

Link to comment
Share on other sites

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 by cañangasñangas
Link to comment
Share on other sites

/* 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 by Holic
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...