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.
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 :)
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)
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.
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
no se si esto está hecho adrede:
//printf("el rut es incorrecto,ultimo dijito deberia ser %d \n",dijito);
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?