Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.71 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include <ctype.h>
  5. //No puedo validar nombre del producto porque este puede contener un numero: Whisky 15 años.
  6. bool EsCodigo(char* valor)
  7. {
  8. int i;
  9. int cant_caracteres = strlen(valor);
  10. if(cant_caracteres<3)
  11. {
  12. return false;
  13. }
  14. for(i=0; i<2; i++)
  15. {
  16. if (!isalpha(valor[i]))
  17. return false;
  18. }
  19. for(i=2; i<cant_caracteres; i++)
  20. {
  21. if(!isdigit(valor[i]))
  22. return false;
  23. }
  24. return true;
  25. }
  26.  
  27. bool EsNumero(char* valor)
  28. {
  29. bool hay_letras = false;
  30.  
  31. int caracteres = strlen(valor);
  32. for(int i = 0; i < caracteres; i++)
  33. {
  34. if(!isdigit(valor[i])) hay_letras = true;
  35. }
  36.  
  37. return !hay_letras;
  38. }
  39.  
  40. bool EsFecha(char* c_dia,char* c_mes,char* c_anio)
  41. {
  42. int dia, mes, anio;
  43. if(!EsNumero (c_dia)|| !EsNumero (c_mes)|| !EsNumero (c_anio))
  44. {
  45. return false;
  46. }
  47. dia=atoi(c_dia);
  48. mes=atoi(c_mes);
  49. anio=atoi(c_anio);
  50. if(!(dia>0&&dia<32))
  51. {
  52. return false;
  53. }
  54. if (!(mes>0&&mes<13))
  55. {
  56. return false;
  57. }
  58. if(!(anio>1900&&anio<2200))
  59. {
  60. return false;
  61. }
  62. return true;
  63. }
  64.  
  65. int main()
  66. {
  67. struct producto
  68. {
  69. char nom_pro[60];
  70. char cod_pro[60];
  71. int pre_pro;
  72. int fec_ela[3];
  73. int fec_ven[3];
  74. };
  75. producto listado[60]= {0};
  76. char val_opc,val_pre[6],val_fecha[3], comp[60];
  77. int opc;
  78. int cantidad=0,j;
  79. char resp='S', resp2='S', resp3='S', resp4='S', salir='N';
  80. do
  81. {
  82. printf("*****-MENU-*****\n");
  83. printf("*1.INCLUIR *\n*2.BUSCAR *\n*3.MODIFICAR *\n*4.ELIMINAR *\n*5.SALIR *\n");
  84. printf("****************\n");
  85. printf("TIPEE EL NUMERO DE SU OPCION: \n");
  86. scanf("%s",&val_opc);
  87. if(EsNumero(&val_opc))
  88. {
  89. opc= atoi (&val_opc);
  90. if((opc>0)&&(opc<6))
  91. {
  92.  
  93. switch(opc)
  94. {
  95. case 1:
  96. {
  97. do
  98. {
  99. printf("****-INCLUIR-***\n");
  100. bool correcto;
  101. do
  102. {
  103. printf("TIPEE EL CODIGO DEL PRODUCTO:\n");
  104. scanf("%s",&listado[cantidad].cod_pro);
  105.  
  106. correcto= EsCodigo(listado[cantidad].cod_pro);
  107. if (!correcto)
  108. {
  109. printf("EL CODIGO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  110. }
  111. }
  112. while(!correcto);
  113.  
  114. printf("TIPEE EL NOMBRE DEL PRODUCTO:\n");
  115. scanf("%s",&listado[cantidad].nom_pro);
  116. do
  117. {
  118. printf("TIPEE EL PRECIO DEL PRODUCTO:\n");
  119. scanf("%s",&val_pre);
  120.  
  121. correcto= (EsNumero(val_pre));
  122. if (!correcto)
  123. {
  124. printf("EL PRECIO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  125. }
  126. else
  127. {
  128. listado[cantidad].pre_pro=atoi(val_pre);
  129. }
  130. }
  131. while(!correcto);
  132.  
  133. do{
  134. correcto=true;
  135. printf("TIPEE LA FECHA DE ELABORACION DEL PRODUCTO:(DIA-MES-AÑO)\n");
  136. scanf("%s-%s-%s",&val_fecha[0],&val_fecha[1],&val_fecha[2]);
  137. correcto=EsFecha(&val_fecha[0],&val_fecha[1],&val_fecha[2]);
  138. if(!correcto)
  139. {
  140. printf("LA FECHA NO ES CORRECTA, INTENTA DE NUEVO\n");
  141.  
  142. }
  143. else
  144. {
  145. listado[cantidad].fec_ela[0]=atoi(&val_fecha[0]);
  146. listado[cantidad].fec_ela[1]=atoi(&val_fecha[1]);
  147. listado[cantidad].fec_ela[2]=atoi(&val_fecha[2]);
  148. }
  149. }while(!correcto);
  150. printf("TIPEE LA FECHA DE VENCIMIENTO DEL PRODUCTO:(DIA-MES-AÑO)\n");
  151. scanf("%d-%d-%d",&listado[cantidad].fec_ven[0],&listado[cantidad].fec_ven[1],&listado[cantidad].fec_ven[2]);
  152. cantidad++;
  153.  
  154. printf("¿DESEA INCLUIR OTRO PRODUCTO?(S/N)\n");
  155. scanf("%s",&resp);
  156. }
  157. while(resp=='S' || resp=='s');
  158. break;
  159. }
  160.  
  161. case 2:
  162. {
  163. if(cantidad==0)
  164. {
  165. printf("NO SE A INCLUIDO NINGUN PRODUCTO\n");
  166. }
  167. else
  168. {
  169. printf("**-BUSCAR-**\n");
  170. do
  171. {
  172. printf("INGRESE EL CODIGO DEL PRODUCTO A BUSCAR\n");
  173. scanf("%s",&comp);
  174. bool encontrado=false;
  175. for(j=0; j<cantidad; j++)
  176. {
  177. if(strcmp(comp,listado[j].cod_pro)==0)
  178. {
  179. printf("EL PRODUCTO CON EL CODIGO %s SE ENCUENTRA REGISTRADO\n",listado[j].cod_pro);
  180. printf("NOMBRE DEL PRODUCTO: %s\n",listado[j].nom_pro);
  181. printf("PRECIO DEL PRODUCTO: Bs.F %d\n",listado[j].pre_pro);
  182. printf("FECHA DE ELABORACION: %d-%d-%d\n",listado[j].fec_ela[0],listado[j].fec_ela[1],listado[j].fec_ela[2]);
  183. printf("FECHA DE VENCIMIENTO: %d-%d-%d\n",listado[j].fec_ven[0],listado[j].fec_ven[1],listado[j].fec_ven[2]);
  184. encontrado=true;
  185. }
  186. }
  187. if(!encontrado)
  188. printf("EL PRODUCTO NO SE ENCUENTRA REGISTRADO\n");
  189.  
  190. printf("¿DESEA BUSCAR OTRO PRODUCTO?(S/N)\n");
  191. scanf("%s",&resp2);
  192. }
  193. while(resp2=='S' || resp2=='s');
  194. break;
  195. }
  196. break;
  197. }
  198.  
  199. case 3:
  200. {
  201. if(cantidad==0)
  202. {
  203. printf("NO SE A INCLUIDO NINGUN PRODUCTO\n");
  204. }
  205. else
  206. {
  207. do
  208. {
  209. printf("TIPEE EL CODIGO DE PRODUCTO A MODIFICAR:\n");
  210. scanf("%s",&comp);
  211. bool encontrado=false;
  212. for(j=0; j<cantidad; j++)
  213. {
  214.  
  215. if(strcmp(listado[j].cod_pro,comp)==0)
  216. {
  217. encontrado=true;
  218. bool correcto;
  219. do
  220. {
  221. printf("TIPEE EL NUEVO CODIGO DEL PRODUCTO:\n");
  222. scanf("%s",&listado[cantidad].cod_pro);
  223.  
  224. correcto= EsCodigo(listado[cantidad].cod_pro);
  225. if (!correcto)
  226. {
  227. printf("EL CODIGO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  228. }
  229. }
  230. while(!correcto);
  231. printf("TIPEE EL NUEVO NOMBRE DEL PRODUCTO:\n");
  232. scanf("%s",&listado[cantidad].nom_pro);
  233. do
  234. {
  235. printf("TIPEE EL NUEVO PRECIO DEL PRODUCTO:\n");
  236. scanf("%s",&val_pre);
  237.  
  238. correcto= (EsNumero(val_pre));
  239. if (!correcto)
  240. {
  241. printf("EL PRECIO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  242. }
  243. else
  244. {
  245. listado[cantidad].pre_pro=atoi(val_pre);
  246. }
  247. }
  248. while(!correcto);
  249. printf("TIPEE LA NUEVA FECHA DE ELABORACION DEL PRODUCTO:(DIA-MES-AÑO)\n");
  250. scanf("%d-%d-%d",&listado[cantidad].fec_ela[0],&listado[cantidad].fec_ela[1],&listado[cantidad].fec_ela[2]);
  251. printf("TIPEE LA NUEVA FECHA DE VENCIMIENTO DEL PRODUCTO:(DIA-MES-AÑO)\n");
  252. scanf("%d-%d-%d",&listado[cantidad].fec_ven[0],&listado[cantidad].fec_ven[1],&listado[cantidad].fec_ven[2]);
  253. cantidad++;
  254. printf("***********************\n");
  255. printf("**-PRODUCTO MODIFICADO-**\n");
  256. printf("***********************\n");
  257. }
  258. }
  259. if(!encontrado)
  260. printf("EL PRODUCTO NO SE ENCUENTRA REGISTRADO\n");
  261.  
  262. printf("¿DESEA MODIFICAR OTRO PRODUCTO?(S/N)\n");
  263. scanf("%s",&resp4);
  264. }
  265. while(resp4=='S' || resp4=='s');
  266. break;
  267. }
  268. break;
  269. }
  270.  
  271. case 4:
  272. {
  273. if(cantidad==0)
  274. {
  275. printf("NO SE A INCLUIDO NINGUN PRODUCTO\n");
  276. }
  277. else
  278. {
  279. printf("**-ELIMINAR-**\n");
  280. do
  281. {
  282. printf("TIPEE EL CODIGO DE PRODUCTO A ELIMINAR:\n");
  283. scanf("%s",&comp);
  284. bool encontrado=false;
  285. for(j=0; j<cantidad; j++)
  286. {
  287. if(strcmp(listado[j].cod_pro,comp)==0)
  288. {
  289. memset(&listado[j], 0, sizeof(producto));
  290. encontrado=true;
  291.  
  292. printf("***********************\n");
  293. printf("**-PRODUCTO ELIMINADO-**\n");
  294. printf("***********************\n");
  295. }
  296. }
  297. if(!encontrado)
  298. printf("EL PRODUCTO NO SE ENCUENTRA REGISTRADO\n");
  299.  
  300. printf("¿DESEA ELIMINAR OTRO PRODUCTO?(S/N)\n");
  301. scanf("%s",&resp3);
  302. }
  303. while(resp3=='S' || resp3=='s');
  304. break;
  305. }
  306. break;
  307. }
  308. case 5:
  309. {
  310. printf("¿REALMENTE DESEA SALIR?(S/N)\n");
  311. scanf("%s",&salir);
  312. break;
  313. }
  314. default:
  315. printf("ESCOGE UNA OPCION CORRECTA\n");
  316. break;
  317. }
  318. }
  319. else
  320. printf("NO ES UN NUMERO DE OPCION CORRECTA, INTENTE DE NUEVO\n");
  321. }
  322. else
  323. printf("TIPEASTE UN CARACTER EN LA OPCION, INTENTE DE NUEVO\n");
  324. }
  325. while(salir=='N' || salir=='n');
  326. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement