/* Різниця множин (x - y) */
void printDiff(int *x, int nX, int *y, int nY) {
    printf("\nРізниця множин:\n { ");
    for (int k = 0; k < nX; k++) {
        if (!have(y, x[k], nY)) printf("%d ", x[k]);
    }
    printf("}");
}
/* Доповнення до множини */
void printInverse(int *x, int nX, int *u, int nU) {
    printf("\nДоповнення множини:\n { ");
    for (int k = 0; k < nU; k++) {
        if (!have(x, u[k], nX)) printf("%d ", u[k]);
    }
    printf("}");
}
/* Перетин множин */
void printIntersect(int *x, int nX, int *y, int nY) {
    printf("\nПеретин множин:\n { ");
    for (int k = 0; k < nX; k++) {
        if (have(y, x[k], nY)) printf("%d ", x[k]);
    }
    printf("}");
}
int *kinds(char *input,int start,int end, int *rsize){
    int *temp=NULL,i,j,k,*temp1,*temp2,a,b,t,all=0,sum,first=0;
    temp=(int *)malloc(sizeof(int));
    sum=have(input,start,end,&first);
    if(sum==0){
        temp[0]=first;
        *rsize=1;
        return temp;
    }
    for(i=start;i<=end;i++){
        if(input[i]=='+' || input[i]=='-' || input[i]=='*'){
            temp1=kinds(input,start,i-1, &a);
            temp2=kinds(input,i+1,end,&b);
            t=a*b;
            temp=(int *)realloc(temp,sizeof(int)*(all+t));
            for(j=0;j<a;j++)
                for(k=0;k<b;k++){
                    if(input[i]=='+'){
                        temp[all]=temp1[j]+temp2[k];
                    }else if(input[i]=='-'){
                        temp[all]=temp1[j]-temp2[k];
                    }else if(input[i]=='*'){
                        temp[all]=temp1[j]*temp2[k];
                    }
                    all++;
                }
        }

    }
    *rsize=all;
    return temp;
}
Esempio n. 5
0
 string minWindow(string s, string t) {
     int m = s.size(), n = t.size();
     vector<int> need(128,0);
     for(char c : t) ++need[c];
     int needCnt = n;
     vector<int> have(128,0);
     int idx = 0;
     int minLen = m + 1;
     string res;
     for(int i = 0, startIdx = 0; i < m; ++i)
     {
         char c = s[i];
         ++have[c];
         if(have[c] <= need[c]) --needCnt;
         while(needCnt == 0)
         {
             if(i - startIdx + 1 < minLen)
             {
                 idx = startIdx;
                 minLen = i - startIdx + 1;
             }
             char c = s[startIdx];
             --have[c];
             if(have[c] < need[c]) ++needCnt;
             ++startIdx;
         }
     }
     return minLen == m + 1 ? "" : s.substr(idx, minLen);
 }
/* Об'єднання множин */
void printUnion(int *x, int nX, int *y, int nY) {
    printf("\nОб`єднання множин:\n { ");
    for (int k = 0; k < nX; k++) {
        printf("%d ", x[k]);
    }
    for (int k = 0; k < nY; k++) {
        if (!have(x, y[k], nX)) printf("%d ", y[k]);
    }
    printf("}");
}
int* inputSet(int &n, int* universal, int sizeUniv) {
    printf("\nВведіть кількість елементів множини: ");
    scanf("%d", &n);
    int *set = (int*)malloc(n * sizeof(int));
    int in;
    for (int k = 0; k < n; k++) {
        printf("Введіть елемент №%d: ", k);
        scanf("%d", &in);
        if (have(set, in, k)) {
            printf("Елемент зі значенням %d уже існує, повторіть введення!\n", in);
            k--;
            continue;
        } else if (universal && !have(universal, in, sizeUniv)) {
            printf("Елемент %d не знайдено в універсалі, повторіть введення!\n", in);
            k--;
            continue;
        } else {
            set[k] = in;
        }
    }
    return set;
}
Esempio n. 8
0
 QString Capabilities::createSpecialResponse( bool tls ) const {
   QStringList result;
   if ( tls )
     result.push_back( QLatin1String("STARTTLS") );
   result += saslMethodsQSL();
   if ( have( "PIPELINING" ) )
     result.push_back( QLatin1String("PIPELINING") );
   if ( have( "8BITMIME" ) )
     result.push_back( QLatin1String("8BITMIME") );
   if ( have( "SIZE" ) ) {
     bool ok = false;
     unsigned int size = 0;
     if ( !mCapabilities[ QLatin1String("SIZE") ].isEmpty() )
       mCapabilities[ QLatin1String("SIZE") ].front().toUInt( &ok );
     if ( ok && !size )
       result.push_back( QLatin1String("SIZE=*") ); // any size
     else if ( ok )
       result.push_back( QString::fromLatin1("SIZE=%1").arg( size ) ); // fixed max
     else
       result.push_back( QLatin1String("SIZE") ); // indetermined
   }
   return result.join( QLatin1String(" ") );
 }