Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ELLINP.C : Ellen‹rz”tt input */
- #include <conio.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define Max 256 /* Karakterhalmazok maxim lis elemsz ma */
- #define Sotet 0 /* A szˇnkiemel‚shez */
- #define Vilagos 7
- #define Kilep 27 /* Esc */ /* Vez‚rl‹billentyűk */
- #define AdatVeg 13 /* Enter */
- #define Torol 8 /* Backspace */
- #define MaxRszHossz 6 /* A rendsz m maxim lis hossza */
- #define MaxEgSzHossz 11 /* Az eg‚sz sz m maxim lis hossza */
- #define Elojel '-' /* El‹jel */
- typedef int Jelek[Max];
- void Ures(int *Jelek)
- { int i;
- for (i=0; i<Max; i++) Jelek[i]=0;
- }
- void Bovit(int *Mit, int Tol, int Ig)
- { int i;
- for (i=Tol; i<=Ig; i++) Mit[i]=1;
- }
- void Csokkent(int *Mit, int Tol, int Ig)
- { int i;
- for (i=Tol; i<=Ig; i++) Mit[i]=0;
- }
- void Bovit1(int *Mit, int Mivel)
- { Mit[Mivel]=1;
- }
- void Csokkent1(int *Mit, int Mivel)
- { Mit[Mivel]=0;
- }
- int Eleme(int Mi, int *Minek)
- { return (Minek[Mi]==1);
- }
- void Unio(int *Eredmeny, int *Mit, int *Mivel)
- { int i;
- for (i=0; i<=Max; i++)
- Eredmeny[i]=Eleme(i,Mit) || Eleme(i,Mivel);
- }
- void Metszet(int *Eredmeny, int *Mit, int *Mivel)
- { int i;
- for (i=0; i<=Max; i++)
- Eredmeny[i]=Eleme(i,Mit) && Eleme(i,Mivel);
- }
- int BillBe(int *Normal, int *Dupla, int *Duplae)
- { int Jel,JoJel;
- do {
- Jel=getch(); *Duplae=Jel==0;
- if (*Duplae) {
- Jel=getch();
- JoJel=Dupla[Jel];
- } else
- JoJel=Normal[Jel];
- } while (!JoJel);
- return (Jel);
- }
- int JelBe(int *JoJelek)
- { int Duplae; Jelek d;
- Ures(d);
- return (BillBe(JoJelek,d,&Duplae));
- }
- char *JobbTolt(char *Mit, int Hossz)
- { while (strlen(Mit)<Hossz)
- strcat(Mit," ");
- return (Mit);
- }
- void NormalIr(void)
- { textcolor(Vilagos); textbackground(Sotet);
- }
- void InverzIr(void)
- { textcolor(Sotet); textbackground(Vilagos);
- }
- void Ir(char *Mit, int Oszl, int Sor)
- { if (Oszl==0) Oszl=wherex();
- if (Sor==0) Sor=wherey();
- gotoxy(Oszl,Sor); cprintf(Mit);
- }
- void KiIras(char *Mit, int Oszl, int Sor, int Hossz)
- { Ir(Mit,Oszl,Sor); gotoxy(Oszl+Hossz,Sor);
- }
- void RendSzamBe(char *RendSzam, /* i/o eredm‚ny sz”veg */
- int Oszl, int Sor, /* i k‚perny‹pozˇci˘ */
- int *VanAdat /* o van-e Łj adat */)
- { Jelek JoJel,AdatJel,SzamJegyek,Betuk;
- char Jel;
- int Hossz;
- char UresRsz[MaxRszHossz+1];
- /* Halmazok kezd‹‚rt‚kei */
- Ures(SzamJegyek); Bovit(SzamJegyek,'0','9');
- Ures(Betuk); Bovit(Betuk,'A','Z'); Bovit(Betuk,'a','z');
- Unio(AdatJel,Betuk,SzamJegyek);
- /* El‹k‚szˇt‚s */
- /* Adat */
- Hossz=strlen(RendSzam); JobbTolt(RendSzam,MaxRszHossz);
- /* K‚perny‹ */
- if (Oszl==0) Oszl=wherex();
- if (Sor==0) Sor=wherey();
- InverzIr();
- KiIras(RendSzam,Oszl,Sor,Hossz);
- /* Beolvas s */
- do {
- /* JoJel be llˇt s */
- Ures(JoJel);
- Bovit1(JoJel,Kilep);
- if (Hossz<=1)
- Unio(JoJel,JoJel,Betuk);
- else if (Hossz==2)
- Unio(JoJel,JoJel,AdatJel);
- else if (Hossz<=5)
- Unio(JoJel,JoJel,SzamJegyek);
- if (Hossz>0) Bovit1(JoJel,Torol);
- /* Utols˘ sz mjegy */
- if (Hossz==5 && (Eleme(RendSzam[2],Betuk) || RendSzam[2]=='0') &&
- RendSzam[3]=='0' && RendSzam[4]=='0')
- Csokkent1(JoJel,'0');
- if (Hossz==MaxRszHossz) Bovit1(JoJel,AdatVeg);
- /* Jel beolvas s */
- Jel=JelBe(JoJel);
- /* Jel feldolgoz s */
- if (Eleme(Jel,AdatJel)) {
- /* Ha kisbetű, nagybetűss‚ alakˇtjuk */
- if (Jel>='a' && Jel<='z') Jel=Jel-32;
- RendSzam[Hossz]=Jel; Hossz++;
- } else if (Jel==Torol) {
- Hossz--; RendSzam[Hossz]=' ';
- }
- KiIras(RendSzam,Oszl,Sor,Hossz);
- } while (Jel!=Kilep && Jel!=AdatVeg);
- /* Befejez‚s */
- *VanAdat=Jel!=Kilep;
- /* Inverz kiemel‚s lev‚tele */
- NormalIr();
- UresRsz[0]='\0'; JobbTolt(UresRsz,MaxRszHossz);
- KiIras(UresRsz,Oszl,Sor,MaxRszHossz);
- /* Hosszbe llˇt s */
- if (*VanAdat) RendSzam[Hossz]='\0';
- else RendSzam[0]='\0';
- KiIras(RendSzam,Oszl,Sor,Hossz);
- }
- void EgSzamBe(char *SzamSzov, /* i/o eredm‚ny sz”veg */
- int Oszl, int Sor, /* i k‚perny‹pozˇci˘ */
- long Tol, long Ig, /* i hat rok */
- int *VanAdat, /* o van-e Łj adat */
- long *SzamErt /* o az eredm‚ny sz m */)
- { Jelek JoJel,SzamJegyek;
- char Jel;
- int Hossz,JoAdat,MaxH;
- char UresEgSz[MaxEgSzHossz+1];
- char w[MaxEgSzHossz+1];
- double x;
- /* Halmazok kezd‹‚rt‚kei */
- Ures(SzamJegyek); Bovit(SzamJegyek,'0','9');
- /* El‹k‚szˇt‚s */
- /* Adat */
- ltoa(Tol,w,10); MaxH=strlen(w); ltoa(Ig,w,10);
- if (MaxH<strlen(w)) MaxH=strlen(w);
- Hossz=strlen(SzamSzov); JobbTolt(SzamSzov,MaxH);
- /* K‚perny‹ */
- if (Oszl==0) Oszl=wherex();
- if (Sor==0) Sor=wherey();
- InverzIr();
- KiIras(SzamSzov,Oszl,Sor,Hossz);
- /* Beolvas s */
- do {
- /* Tartalmi helyess‚g: Tol-Ig */
- do {
- /* Formai helyess‚g: csak sz m */
- /* JoJel be llˇt s */
- Ures(JoJel);
- Bovit1(JoJel,Kilep);
- if (Hossz<MaxH) Unio(JoJel,JoJel,SzamJegyek);
- if (Hossz==0 && Tol<0) Bovit1(JoJel,Elojel);
- if (Hossz>0) Bovit1(JoJel,Torol);
- if (Hossz>0 && Eleme(SzamSzov[Hossz-1],SzamJegyek))
- Bovit1(JoJel,AdatVeg);
- /* Jel beolvas s */
- Jel=JelBe(JoJel);
- /* Jel feldolgoz s */
- if (Eleme(Jel,SzamJegyek) || Jel==Elojel) {
- SzamSzov[Hossz]=Jel; Hossz++;
- } else if (Jel==Torol) {
- Hossz--; SzamSzov[Hossz]=' ';
- }
- KiIras(SzamSzov,Oszl,Sor,Hossz);
- } while (Jel!=Kilep && Jel!=AdatVeg);
- /* Tartom ny ellen‹rz‚s */
- if (Jel!=Kilep) {
- w[0]='\0'; strncat(w,SzamSzov,Hossz); x=atof(w);
- JoAdat=(x>=Tol && x<=Ig);
- };
- } while (Jel!=Kilep && !JoAdat);
- /* Befejez‚s */
- *VanAdat=Jel!=Kilep;
- /* Inverz kiemel‚s lev‚tele */
- NormalIr();
- UresEgSz[0]='\0'; JobbTolt(UresEgSz,MaxH);
- KiIras(UresEgSz,Oszl,Sor,MaxH);
- /* Hosszbe llˇt s */
- if (*VanAdat) {
- SzamSzov[Hossz]='\0';
- *SzamErt=x;
- } else SzamSzov[0]='\0';
- KiIras(SzamSzov,Oszl,Sor,Hossz);
- }
- void main()
- { char st[20]; int van; long l;
- NormalIr(); clrscr();
- st[0]='\0';
- printf("Rendsz m:");
- RendSzamBe(st,0,0,&van);
- printf("\n");
- if (van)
- printf("A megadott rendsz m:%s\n",st);
- else
- printf("Nem adott meg adatot!\n");
- printf("\n");
- st[0]='\0';
- printf("Eg‚sz sz m [-128,127]:");
- EgSzamBe(st,0,0,-128,127,&van,&l);
- printf("\n");
- if (van) {
- printf("A megadott sz m sztringk‚nt:%s\n",st);
- printf("A megadott sz m sz mk‚nt:%ld\n",l);
- } else
- printf("Nem adott meg adatot!");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement