Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<math.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6.  
  7. using namespace std;
  8.  
  9. class Bykvi{
  10. private:
  11.     unsigned alfabet;
  12. public:
  13.     Bykvi(){ alfabet=0; };
  14.     Bykvi(char *);
  15.     Bykvi operator*(Bykvi&);
  16.     Bykvi operator~();
  17.     operator char*();
  18.     friend ostream& operator<<(ostream&,Bykvi&);
  19. };
  20.  
  21. Bykvi Bykvi::operator*(Bykvi &p_b){
  22.     Bykvi a;
  23.     a.alfabet=alfabet&(p_b.alfabet);
  24.     return(a);
  25. }
  26.  
  27. Bykvi Bykvi::operator~(){
  28.     Bykvi a;
  29.     a.alfabet=~alfabet;
  30.     return(a);
  31. }
  32.  
  33. Bykvi::Bykvi(char *stroka){
  34.     alfabet=0;
  35.     while(*stroka){
  36.         alfabet|=(1<<(tolower(*stroka)-'a'));
  37.         stroka++;
  38.     }
  39. }
  40.  
  41. ostream& operator<<(ostream& out, Bykvi& a){
  42.     unsigned bit=1;
  43.     int i;
  44.     for(i=0;i<26;i++){
  45.         if(((a.alfabet)&bit)>0)
  46.             out<<(char)('a'+i);
  47.         else
  48.             out<<" ";
  49.         bit=bit*2;
  50.     }
  51.     return(out);
  52. }
  53.  
  54. int main(int argc,char *argv[]){
  55.     int i,j,k;
  56.     Bykvi a,b;
  57.     Bykvi **p;
  58.     Bykvi itog("abcdefghijklmnopqrstuvwxyz");
  59.  
  60.     if(argc<2) return 0;
  61.     p=new Bykvi*[argc-1];
  62.     for(i=0;i<(argc-1);i++)
  63.         p[i]=new Bykvi(argv[i]);
  64.  
  65.     cout<<itog<<endl;
  66.  
  67.     for(i=1;i<(argc-1);i++)
  68.         for(j=i+1;j<(argc-1);j++){
  69.             a=(*p[i])*(*p[j]);
  70.             a=~a;
  71.             itog=itog*a;
  72.         }
  73.  
  74.     /*
  75.     for(i=1;i<(argc-1);i++)
  76.         for(j=i+1;j<(argc-1);j++){
  77.             a=Bykvi(argv[i]);
  78.             b=Bykvi(argv[j]);
  79.             a=a*b;
  80.             a=~a;
  81.             itog=itog*a;
  82.   //          cout<<itog<<endl;
  83.         }
  84.     */
  85.     cout<<itog<<endl;
  86.  
  87.     for(i=0;i<(argc-1);i++)
  88.         delete p[i];
  89.     delete []p;
  90.  
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement