Advertisement
Guest User

Untitled

a guest
Dec 29th, 2010
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.75 KB | None | 0 0
  1. /* ELLINP.C : Ellen‹rz”tt input */
  2.  
  3. #include <conio.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. #define Max 256 /* Karakterhalmazok maxim lis elemsz ma */
  9. #define Sotet 0 /* A szˇnkiemel‚shez */
  10. #define Vilagos 7
  11. #define Kilep 27 /* Esc */ /* Vez‚rl‹billentyűk */
  12. #define AdatVeg 13 /* Enter */
  13. #define Torol 8 /* Backspace */
  14.  
  15. #define MaxRszHossz 6 /* A rendsz m maxim lis hossza */
  16. #define MaxEgSzHossz 11 /* Az eg‚sz sz m maxim lis hossza */
  17. #define Elojel '-' /* El‹jel */
  18.  
  19. typedef int Jelek[Max];
  20.  
  21. void Ures(int *Jelek)
  22. { int i;
  23. for (i=0; i<Max; i++) Jelek[i]=0;
  24. }
  25.  
  26. void Bovit(int *Mit, int Tol, int Ig)
  27. { int i;
  28. for (i=Tol; i<=Ig; i++) Mit[i]=1;
  29. }
  30.  
  31. void Csokkent(int *Mit, int Tol, int Ig)
  32. { int i;
  33. for (i=Tol; i<=Ig; i++) Mit[i]=0;
  34. }
  35.  
  36. void Bovit1(int *Mit, int Mivel)
  37. { Mit[Mivel]=1;
  38. }
  39.  
  40. void Csokkent1(int *Mit, int Mivel)
  41. { Mit[Mivel]=0;
  42. }
  43.  
  44. int Eleme(int Mi, int *Minek)
  45. { return (Minek[Mi]==1);
  46. }
  47.  
  48. void Unio(int *Eredmeny, int *Mit, int *Mivel)
  49. { int i;
  50. for (i=0; i<=Max; i++)
  51. Eredmeny[i]=Eleme(i,Mit) || Eleme(i,Mivel);
  52. }
  53.  
  54. void Metszet(int *Eredmeny, int *Mit, int *Mivel)
  55. { int i;
  56. for (i=0; i<=Max; i++)
  57. Eredmeny[i]=Eleme(i,Mit) && Eleme(i,Mivel);
  58. }
  59.  
  60. int BillBe(int *Normal, int *Dupla, int *Duplae)
  61. { int Jel,JoJel;
  62. do {
  63. Jel=getch(); *Duplae=Jel==0;
  64. if (*Duplae) {
  65. Jel=getch();
  66. JoJel=Dupla[Jel];
  67. } else
  68. JoJel=Normal[Jel];
  69. } while (!JoJel);
  70. return (Jel);
  71. }
  72.  
  73. int JelBe(int *JoJelek)
  74. { int Duplae; Jelek d;
  75. Ures(d);
  76. return (BillBe(JoJelek,d,&Duplae));
  77. }
  78.  
  79. char *JobbTolt(char *Mit, int Hossz)
  80. { while (strlen(Mit)<Hossz)
  81. strcat(Mit," ");
  82. return (Mit);
  83. }
  84.  
  85. void NormalIr(void)
  86. { textcolor(Vilagos); textbackground(Sotet);
  87. }
  88.  
  89. void InverzIr(void)
  90. { textcolor(Sotet); textbackground(Vilagos);
  91. }
  92.  
  93. void Ir(char *Mit, int Oszl, int Sor)
  94. { if (Oszl==0) Oszl=wherex();
  95. if (Sor==0) Sor=wherey();
  96. gotoxy(Oszl,Sor); cprintf(Mit);
  97. }
  98.  
  99. void KiIras(char *Mit, int Oszl, int Sor, int Hossz)
  100. { Ir(Mit,Oszl,Sor); gotoxy(Oszl+Hossz,Sor);
  101. }
  102.  
  103. void RendSzamBe(char *RendSzam, /* i/o eredm‚ny sz”veg */
  104. int Oszl, int Sor, /* i k‚perny‹pozˇci˘ */
  105. int *VanAdat /* o van-e Łj adat */)
  106. { Jelek JoJel,AdatJel,SzamJegyek,Betuk;
  107. char Jel;
  108. int Hossz;
  109. char UresRsz[MaxRszHossz+1];
  110.  
  111. /* Halmazok kezd‹‚rt‚kei */
  112. Ures(SzamJegyek); Bovit(SzamJegyek,'0','9');
  113. Ures(Betuk); Bovit(Betuk,'A','Z'); Bovit(Betuk,'a','z');
  114. Unio(AdatJel,Betuk,SzamJegyek);
  115. /* El‹k‚szˇt‚s */
  116. /* Adat */
  117. Hossz=strlen(RendSzam); JobbTolt(RendSzam,MaxRszHossz);
  118. /* K‚perny‹ */
  119. if (Oszl==0) Oszl=wherex();
  120. if (Sor==0) Sor=wherey();
  121. InverzIr();
  122. KiIras(RendSzam,Oszl,Sor,Hossz);
  123. /* Beolvas s */
  124. do {
  125. /* JoJel be llˇt s */
  126. Ures(JoJel);
  127. Bovit1(JoJel,Kilep);
  128. if (Hossz<=1)
  129. Unio(JoJel,JoJel,Betuk);
  130. else if (Hossz==2)
  131. Unio(JoJel,JoJel,AdatJel);
  132. else if (Hossz<=5)
  133. Unio(JoJel,JoJel,SzamJegyek);
  134. if (Hossz>0) Bovit1(JoJel,Torol);
  135. /* Utols˘ sz mjegy */
  136. if (Hossz==5 && (Eleme(RendSzam[2],Betuk) || RendSzam[2]=='0') &&
  137. RendSzam[3]=='0' && RendSzam[4]=='0')
  138. Csokkent1(JoJel,'0');
  139. if (Hossz==MaxRszHossz) Bovit1(JoJel,AdatVeg);
  140. /* Jel beolvas s */
  141. Jel=JelBe(JoJel);
  142. /* Jel feldolgoz s */
  143. if (Eleme(Jel,AdatJel)) {
  144. /* Ha kisbetű, nagybetűss‚ alakˇtjuk */
  145. if (Jel>='a' && Jel<='z') Jel=Jel-32;
  146. RendSzam[Hossz]=Jel; Hossz++;
  147. } else if (Jel==Torol) {
  148. Hossz--; RendSzam[Hossz]=' ';
  149. }
  150. KiIras(RendSzam,Oszl,Sor,Hossz);
  151. } while (Jel!=Kilep && Jel!=AdatVeg);
  152. /* Befejez‚s */
  153. *VanAdat=Jel!=Kilep;
  154. /* Inverz kiemel‚s lev‚tele */
  155. NormalIr();
  156. UresRsz[0]='\0'; JobbTolt(UresRsz,MaxRszHossz);
  157. KiIras(UresRsz,Oszl,Sor,MaxRszHossz);
  158. /* Hosszbe llˇt s */
  159. if (*VanAdat) RendSzam[Hossz]='\0';
  160. else RendSzam[0]='\0';
  161. KiIras(RendSzam,Oszl,Sor,Hossz);
  162. }
  163.  
  164. void EgSzamBe(char *SzamSzov, /* i/o eredm‚ny sz”veg */
  165. int Oszl, int Sor, /* i k‚perny‹pozˇci˘ */
  166. long Tol, long Ig, /* i hat rok */
  167. int *VanAdat, /* o van-e Łj adat */
  168. long *SzamErt /* o az eredm‚ny sz m */)
  169. { Jelek JoJel,SzamJegyek;
  170. char Jel;
  171. int Hossz,JoAdat,MaxH;
  172. char UresEgSz[MaxEgSzHossz+1];
  173. char w[MaxEgSzHossz+1];
  174. double x;
  175.  
  176. /* Halmazok kezd‹‚rt‚kei */
  177. Ures(SzamJegyek); Bovit(SzamJegyek,'0','9');
  178. /* El‹k‚szˇt‚s */
  179. /* Adat */
  180. ltoa(Tol,w,10); MaxH=strlen(w); ltoa(Ig,w,10);
  181. if (MaxH<strlen(w)) MaxH=strlen(w);
  182. Hossz=strlen(SzamSzov); JobbTolt(SzamSzov,MaxH);
  183. /* K‚perny‹ */
  184. if (Oszl==0) Oszl=wherex();
  185. if (Sor==0) Sor=wherey();
  186. InverzIr();
  187. KiIras(SzamSzov,Oszl,Sor,Hossz);
  188. /* Beolvas s */
  189. do {
  190. /* Tartalmi helyess‚g: Tol-Ig */
  191. do {
  192. /* Formai helyess‚g: csak sz m */
  193. /* JoJel be llˇt s */
  194. Ures(JoJel);
  195. Bovit1(JoJel,Kilep);
  196. if (Hossz<MaxH) Unio(JoJel,JoJel,SzamJegyek);
  197. if (Hossz==0 && Tol<0) Bovit1(JoJel,Elojel);
  198. if (Hossz>0) Bovit1(JoJel,Torol);
  199. if (Hossz>0 && Eleme(SzamSzov[Hossz-1],SzamJegyek))
  200. Bovit1(JoJel,AdatVeg);
  201. /* Jel beolvas s */
  202. Jel=JelBe(JoJel);
  203. /* Jel feldolgoz s */
  204. if (Eleme(Jel,SzamJegyek) || Jel==Elojel) {
  205. SzamSzov[Hossz]=Jel; Hossz++;
  206. } else if (Jel==Torol) {
  207. Hossz--; SzamSzov[Hossz]=' ';
  208. }
  209. KiIras(SzamSzov,Oszl,Sor,Hossz);
  210. } while (Jel!=Kilep && Jel!=AdatVeg);
  211. /* Tartom ny ellen‹rz‚s */
  212. if (Jel!=Kilep) {
  213. w[0]='\0'; strncat(w,SzamSzov,Hossz); x=atof(w);
  214. JoAdat=(x>=Tol && x<=Ig);
  215. };
  216. } while (Jel!=Kilep && !JoAdat);
  217. /* Befejez‚s */
  218. *VanAdat=Jel!=Kilep;
  219. /* Inverz kiemel‚s lev‚tele */
  220. NormalIr();
  221. UresEgSz[0]='\0'; JobbTolt(UresEgSz,MaxH);
  222. KiIras(UresEgSz,Oszl,Sor,MaxH);
  223. /* Hosszbe llˇt s */
  224. if (*VanAdat) {
  225. SzamSzov[Hossz]='\0';
  226. *SzamErt=x;
  227. } else SzamSzov[0]='\0';
  228. KiIras(SzamSzov,Oszl,Sor,Hossz);
  229. }
  230.  
  231. void main()
  232. { char st[20]; int van; long l;
  233.  
  234. NormalIr(); clrscr();
  235.  
  236. st[0]='\0';
  237. printf("Rendsz m:");
  238. RendSzamBe(st,0,0,&van);
  239. printf("\n");
  240. if (van)
  241. printf("A megadott rendsz m:%s\n",st);
  242. else
  243. printf("Nem adott meg adatot!\n");
  244. printf("\n");
  245.  
  246. st[0]='\0';
  247. printf("Eg‚sz sz m [-128,127]:");
  248. EgSzamBe(st,0,0,-128,127,&van,&l);
  249. printf("\n");
  250. if (van) {
  251. printf("A megadott sz m sztringk‚nt:%s\n",st);
  252. printf("A megadott sz m sz mk‚nt:%ld\n",l);
  253. } else
  254. printf("Nem adott meg adatot!");
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement