ayuda porfavor validador de rut con menu en dev c++

Iniciado por osvaldo.87, 28 Septiembre 2010, 09:42 AM

0 Miembros y 1 Visitante están viendo este tema.

osvaldo.87

hola a todos tengo que crear un algoritmo que valide verifique rut con menu y todo bueno este es el algoritmo que llevo echo pero al momento de compilar me tira errores quisiera saber si ustedes podrian ayudarme a corregirlos porfavor aqui les dejo el algoritmo aa lo tengo que compilar en dev c++

# include <stdlib.h>
# include <conio.h>
# include <ctype.h>

# define K 10 /*DECLARACION DE CONSTANTES*/
# define LIMITE 1000000
# define M 11

/*FUNCION DIGITOVER:CALCULA EL DIGITO VERIFICADOR*/
int digitover(int digito){
int resto=0,mult=1,i=2,suma=0;
while(digito!=0){
resto=digito%K;
digito=digito/K;
mult=resto*i;
suma+=mult;
i++;
if(i+1==9){
i=2;
}
}
resto=suma/M;
digito=resto*M;
resto=suma-digito;
digito=M-resto;
return digito;/*RETORNA DIGITO VERIFICADOR*/
}
/*FUNCION ERROR:MUESTRA MENSAJE EN PANTALLA*/
char error(){
printf;("\n\n\ERROR<<<<EL RUT(RUN")
" ES INCORRECTO!!!");
}
/*FUNCION MENSAJE:MUESTRA MENSAJE EN PANTALLA*/
char mensaje(){
printf("\n\n\t<<<<PRESIONE UNA TECLA PARA VOLVER AL MENU");
getch();
}
/*FUNCION MENU:MUESTRA MENU EN PANTALLA*/
char menu(){
printf("\tMENU DE OPCIONES\n");
printf("\n\t1-VALIDAR RUT(RUN)");
printf("\n\t2-OBTENER DIGITO VERIFICADOR RUT(RUN)");
printf("\n\t3-SALIR");
printf("\n\n\tESCOJA SU OPCION: ");
}
/*PROGRAMA PRINCIPAL*/
int main(){
int rut,dig,digito=0;
char c,resp,d;
do{
do{
system("CLS()"); /*LIMPIA LA PANTALLA*/
menu();
c=getche();
getch();
if ((c=='1?)||(c=='2?)||(c=='3?)){/*VALIDA LA OPCION DE MENU*/
switch ©{
case '1?:
rut=0; /*INICIALIZACION*/
system("CLS()"); /*LIMPIA LA PANTALLA*/
printf("\n\tEJEMPLO RUT(RUN):12.345.678-X,"
"INGRESAR:12345678-X");
printf("\n\n\tINGRESAR RUT(RUN): ");
scanf("%d-%c",&rut,&d);

/*VALIDA EL DIGITO VERIFICADOR INGRESADO POR EL USUARIO*/
/* OTORGANDO UN VALOR TIPO INT A LA VARIABLE DIG */

if((d=='k')||(d=='K')){
dig=K;/*dig=10*/
}
else if(d=='0?){
dig=M;/*dig=11*/
}
else if(d=='1?){
dig=1;
}
else if(d=='2?){
dig=2;
}
else if(d=='3?){
dig=3;
}
else if(d=='4?){
dig=4;
}
else if(d=='5?){
dig=5;
}
else if(d=='6?){
dig=6;
}
else if(d=='7?){
dig=7;
}
else if(d=='8?){
dig=8;
}
else if(d=='9?){
dig=9;
}
else{
dig=-1;/*EL DIGITO VERIFICADOR INGRESADO NO ES VALIDO*/
}
if(dig!=-1){/*SE REALIZA CUANDO ES VALIDO EL*/
/* DIGITO VERIFICADOR INGRESADO */
if(rut>LIMITE){/*ACEPTA RUT(RUN)MAYORES QUE LIMITE*/
digito=digitover(rut);
if(digito==dig){
printf("\n\tEL RUT(RUN) \"%d-%c\" A PASADO"
" LA VALIDACION",rut,d);
}
else{/*SE REALIZA CUANDO EL DIGITO */
/* VERIFICADOR NO ES VALIDO */
error();/*INVOCA FUNCION ERROR*/
}
}
else{ /*SE REALIZA CUANDO EL RUT NO ES VALIDO*/
error();/*INVOCA FUNCION ERROR*/
}
}
else{/*SE REALIZA CUANDO EL DIGITO VERIFICADOR INGRESADO NO ES VALIDO */
error();/*INVOCA FUNCION ERROR*/
}
mensaje();/*INVOCA FUNCION MENSAJE*/
break;/*FIN CASE 1*/
case '2?:
rut=0; /*INICIALIZACION*/
system("CLS()"); /*LIMPIA LA PANTALLA*/
printf("\n\tEJEMPLO RUT(RUN):12.345.678-X,"
"INGRESAR:12345678?);
printf("\n\n\tINGRESAR RUT(RUN): ");
scanf("%d",&rut);

if(rut>LIMITE) /*ACEPTA RUT(RUN) MAYORES A LIMITE*/
{
digito=digitover(rut); /*ASIGNACION MEDIANTE INVOCACION*/
/* A FUNCION DIGITOVER */
if(digito==M)
{
digito=0;
printf("\n\tEL DIGITO VERIFICADOR ES: %d",digito);
}
else if(digito==K)
{
printf("\n\tEL DIGITO VERIFICADOR ES: %c",'K');
}
else{
printf("\n\tEL DIGITO VERIFICADOR ES: %d",digito);
}
else /*SE REALIZA SI EL RUT NO ES VALIDO*/
{
error(); /*INVOCA FUNCION ERROR*/
}
mensaje();/*INVOCA FUNCION MENSAJE*/

break; /*FIN CASE 2*/
}/*FIN SWITCH*/
} /*FIN IF*/
else{/*SE REALIZA CUANDO LA OPCION DE MENU NO ES VALIDA*/
printf("\n\tERROR<<<<DEBE ELEGIR UNA OPCION VALIDA");
mensaje();/*INVOCA FUNCION MENSAJE*/
}
}while(c!='3?);
printf("\n\n\t\tQUIRES SALIR DEL PROGRAMA?"
"\n\n\t<<<SI...ENTONCES PULSA [ S ]"
"\n\t\<<<NO...ENTONCES PULSA UNA TECLA PARA VOLVER AL MENU");
resp=toupper(getch());/*CONVIERTE A MAYUSCULA [s -> S]*/
}while(resp!='S');
return 0;
}/*FIN DEL PROGRAMA*/



no se si algo sobre falte o si esta bien echo porfavor ayudenme es coeficiente este trabajo de ante mano muchas gracias adios.

Littlehorse

#1
osvaldo.87, bienvenido al foro. Postea los errores que te da el compilador asi podemos verlos en detalle.

Para postear código, utiliza las etiquetas GeShi.

C
[code=c]codigo[/code]

C++
[code=cpp]codigo[/code]

Edit: Arreglado, gracias! se me paso  :)
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

MasterPunk

Cita de: Littlehorse en 28 Septiembre 2010, 15:05 PM
osvaldo.87, bienvenido al foro. Postea los errores que te da el compilador asi podemos verlos en detalle.

Para postear código, utiliza las etiquetas GeShi.

C
[code=c]codigo[/code]

C++
[code=c]codigo[/code]

has puesto el mismo codigo para c que para c++. El de c++ es:
C++
[code=cpp]codigo[/code]
[/quote]

(se lo digo a osvaldo, ya se que tu lo sabes)

[L]ord [R]NA

Solo viendo el codigo dentro de las etiquetas Geshi se ve el error... hay muchos errores de sintaxis...

creo que necesitas un buen libro... o en su defecto diferenciar entre comillas y una tilde.

osvaldo.87

#4
aqui ise otro me falta hacer solamente el marco ojala me puedan ayudar porfa se los agradeceria mucho saludos


#include<stdio.h>
#include<conio.h>
#include<string.h>

int main()

{
int i,j,suma,valor,dijito,ult,resp;
char rut[9],var,ultimo;
       
resp=0;

do
{
fflush(stdin);//libera el buffer de entrada  y salida
suma=0;


printf("ingrese rut:");
gets(rut);

j=2;

for(i=7;i>=0;i--)
{
if(j==8)j=2;
{
suma=((rut[i]-'0')*j)+suma;
j++;
}

ultimo=rut[8];
ult=rut[8]-'0';//trasforma en entero
valor=suma%11;
}
dijito=11-valor;

if(dijito==10)
{
var='k';
if((ultimo=='k')||(ultimo=='k'))
{
printf("rut es correcto \n");
getch();
}
else
{
rut[8]=var;
//printf("rut incorrecto el ultimo dijito deberia se %c \n",var);
printf("rut incorrecto,el rut deberia ser %s-%d",rut,var);
getch();
}
}
else if(dijito==11)
{
dijito=0;
if(dijito==ult)
{
printf("rut es correcto \n");
getche();
}
else if(dijito!=ult)
{
rut[8]=dijito;
//printf("el rut es incorrecto,ultimo dijito deberia ser %d \n",dijito);
printf("rut incorrecto,el rut deberia ser %s-%d",rut,dijito);
getch();
}
}
else
{
if(dijito==ult)
{
printf("rut correcto \n");
getch();
}
else if(dijito!=ult)
{
 rut[8]=dijito;
//printf("rut incorrecto, ultimo dijito deberia ser %d \n",dijito);
 printf("rut incorrecto,el rut deberia ser %s-%d",rut,dijito);
}
}

printf("\ndesea ingresar otro:\n");
printf("1-.SI 2-.NO \n");
scanf("%d",&resp);
if((resp!=1)&&(resp!=2))
{
do{
printf("Error: respuesta incorrecta, caracter no valido \n");
printf("ingrese respuesta valida \n");
printf("1-.SI 2-.NO \n");
scanf("%d",&resp);
}while((resp==1)&&(resp==2));
}

}while(resp==1);
printf("PRECIONE CUALQUIER TECLA PARA SALIR");

gotoxy (0,0);
putchar (0xC9);

gotoxy (0,79);
putchar (0xBB);

gotoxy (24,0);
putchar (0xC8);

for(x=1; x<79; x++)
{
gotoxy (i,0);
putchar (0xCD);
gotoxy (i,24);
putchar (0xCD);
}

for(y=1; y<24; y++)
{
gotoxy (0,y);
putchar (0xBA);
gotoxy (79,y);
putchar (0xBA);
}

clrscr();

getche();
}

error me lo da en  gotoxy (0,0);

saludos adios

MasterPunk

no se si esto está hecho adrede:
Código (cpp) [Seleccionar]
//printf("el rut es incorrecto,ultimo dijito deberia ser %d \n",dijito);

Oblivi0n

Madre mia, aparte de los errores de sintaxis, hay errores peores de caligrafia...
te recomiendo que hagas las cosas en varias funciones, y no una main enorme, dificulta mucho la lectura del codigo
La gran pregunta -- ¿Para que pones una funcion en un comentario?