C/Visual C - Estacionamiento

 
Vista:

Estacionamiento

Publicado por joiner ochoa (2 intervenciones) el 11/07/2010 00:10:02
buenas, mi duda es la siguiente: en la linea de codigo if (isdigit(registro[a].c)==0){system("CLS");printf("\n Ingrese solo numeros\n");system("PAUSE");system("CLS");goto periodo;} pido que me validen que solo ingresen numneros pero al final me da un error logico cerrandome el programa, lo que quiero hacer es validar que en los espacios en donde se colocan numeros solo se puedan ingresar numeros y si se ingresa otra cosa me diga parametros incorrectos.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
//variables

char op1;
char op2;
char op3;
int a=0;
int x=0;
int y;
char z[10];
char b[10];

char d[10];
char e[10];
char f[10];
char g[10];
char h[10];

struct{
int c;
int periodo;
int escuela;
long int cedula;
char nombre [10];
char apellido [10];
int telf [10];
char marca[10];
char modelo[10];
int ano;
char placa[10];
char color[10];
char banco[15];
long int vaucher;
int fecha;
int monto;
}registro[2];






//bloque de acciones
menu:
printf("\n");
system("PAUSE");
system("CLS");
printf("\n -----------------------Registro de Puestos de Estacionamiento------------------------------\n");
printf("\n seleccione una opcion:\n");
printf("\n 1. Registrar Vehiculo");
printf("\n 2. Consultar Vehiculo");
printf("\n 3.Salir");
printf("\n su opcion seleccionada fue la numero:");
scanf("%s",&op1);

switch(op1)
{
case '1':
menu2:

for(a=0;a<=1;a++){
periodo:
system ("CLS");
printf("\n -------------DATOS DEL ESTUDIANTE-------------------\n");
printf("\n Ingrese periodo academico:");
scanf("%d",®istro[a].periodo);

registro[a].c=registro[a].periodo;
if (isdigit(registro[a].c)==0){system("CLS");printf("\n Ingrese solo numeros\n");system("PAUSE");system("CLS");goto periodo;}
printf("\n Codigo de escuela:");
scanf("%d",®istro[a].escuela);
cedula:
printf("\n C.I:");
scanf("%d",®istro[a].cedula);
x=registro[a].cedula;
if(registro[a-1].cedula==x){system("CLS");printf("\ncedula repetida.intente nuevamente\n");system("PAUSE");system("CLS");goto cedula;}
nombre:
printf("\n Primer Nombre:");
scanf("%s",®istro[a].nombre);
strcpy(b,registro[a].nombre);
if (isalpha(*b)==0){system("CLS");printf("\n Ingrese solo letras\n");system("PAUSE");system("CLS");goto nombre;}
printf("\n Primer Apellido:");
scanf("%s",®istro[a].apellido);
strcpy(d,registro[a].apellido);
if (isalpha(*d)==0){system("CLS");printf("\n Ingrese solo letras\n");system("PAUSE");system("CLS");goto nombre;}
system("PAUSE");
system("CLS");
printf("\n-------------------DATOS DEL VEHICULO--------------------\n");
marca:
printf("\n Marca:");
scanf("%s",®istro[a].marca);
strcpy(e,registro[a].marca);
if (isalpha(*e)==0){system("CLS");printf("\n Ingrese solo letras\n");system("PAUSE");system("CLS");goto marca;}
modelo:
printf("\n Modelo:");
scanf("%s",®istro[a].modelo);
strcpy(f,registro[a].modelo);
if (isalpha(*f)==0){system("CLS");printf("\n Ingrese solo letras\n");system("PAUSE");system("CLS");goto modelo;}
printf("\n A¤o:");
scanf("%d",®istro[a].ano);
placa:
printf("\n Placa:");
scanf("%s",®istro[a].placa);
strcpy(z,registro[a].placa);
if(strcmp(z,registro[a-1].placa)==0){system("CLS");printf("\nPlaca repetida.intente nuevamente\n");system("PAUSE");system("CLS");goto placa;}
color:
printf("\n Color:");
scanf("%s",®istro[a].color);
strcpy(g,registro[a].color);
if (isalpha(*g)==0){system("CLS");printf("\n Ingrese solo letras\n");system("PAUSE");system("CLS");goto color;}
system("PAUSE");
system("CLS");
printf("\n-------------------DATOS DEL PAGO--------------------\n");
banco:
printf("\n Banco:");
scanf("%s",®istro[a].banco);
strcpy(h,registro[a].banco);
if (isalpha(*h)==0){system("CLS");printf("\n Ingrese solo letras\n");system("PAUSE");system("CLS");goto banco;}
vaucher:
printf("\n Numero del Vaucher:");
scanf("%d",®istro[a].vaucher);
y=registro[a].vaucher;
if(registro[a-1].vaucher==y){system("CLS");printf("\nVaucher repetido.intente nuevamente\n");system("PAUSE");system("CLS");goto vaucher;}
printf("\n Fecha:");
scanf("%d",®istro[a].fecha);
printf("\n Monto en Bs.");
scanf("%d",®istro[a].monto);
system("PAUSE");
system("CLS");

//------------------------------------------------------------------------------------------------------------------
printf("\n REGISTRO EXITOSO!!");
system("PAUSE");

//goto menu;
}
for(a=0;a<=1;a++){printf("\n %d",registro[a].c);}
break;

case '2':
menu3:
system ("CLS");
printf("\n --------------- Indique Tipo de Consulta ----------------------\n");
printf("\n 1. Por periodo");
printf("\n 2. Por codigo de escuela");
printf("\n 3. Por cedula de identidad");
printf("\n 4. Por placa del vehiculo");
printf("\n 5. regresar al menu anterior");
printf("\n su opcion seleccionada fue la numero:");
scanf("%s",&op3);

switch(op3)
{
case '1':
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
system("CLS");
goto menu;

break;
default:
system("CLS");
printf("\n");
printf("\n OPCION INVALIDA. INTENTE DE NUEVO \n");
system("PAUSE");
goto menu3;
break;



}

break;

case '3':
system("CLS");
printf("\n GRACICAS POR UTILIZAR NUESTRO PROGRAMA. FIN DE LA APLICACION \n");
printf("\n");
system("PAUSE");
return 0;
break;
default:
system("CLS");
printf("\n");
printf("\n OPCION INVALIDA. INTENTE DE NUEVO \n");
goto menu;
break;






}
system("PAUSE");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Estacionamiento

Publicado por Tom (619 intervenciones) el 13/07/2010 17:17:52
Compila y ejecuta este programilla. Si sacas alguna conclusión, te será muy útil.

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

int main() {
union {
int v_int;
char v_str[4];
} test;

strcpy(test.v_str, "987\0");
printf("Str: \"%s\"\nInt: %d\n", test.v_str, test.v_int);
printf("------\n");
test.v_int = 987;
printf("Str: \"%s\"\nInt: %d\n", test.v_str, test.v_int);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar