void static_sequence_gmr::build(uint * sequence, static_bitsequence_builder * bmb, static_sequence_builder * ssb) {
  uint num_chunks = len/chunk_length;
  chunk = new static_sequence*[num_chunks];
  assert(chunk!=NULL);
  for (uint i=0;i<num_chunks;i++) {
    chunk[i] = ssb->build(sequence+i*chunk_length, chunk_length);
    //cout << "1." << i << endl; cout.flush();
    assert(chunk[i]!=NULL);
  }
  uint * ones = get_ones(sequence);
  uint *B_bitmap = new uint[(2+len+(unsigned long long)num_chunks*sigma)/W+1];
    assert(B_bitmap!=NULL);
  for (uint i=0;i<(2+len+(unsigned long long)num_chunks*sigma)/W+1;i++)
    B_bitmap[i] = 0;
  uint pos=0;
  for (unsigned long long i=0;i<(unsigned long long)num_chunks*sigma;i++) {
    for (uint j=0;j<ones[i];j++) {
      bitset(B_bitmap, pos);
      pos++;
    }
    pos++;
  }
  pos++;
  //cout << "5  pos=" << pos << endl; cout.flush();
  B = bmb->build(B_bitmap, pos);
  //cout << "6" << endl; cout.flush();
  delete [] B_bitmap;
  delete [] ones;
}
Beispiel #2
0
int main(void)
{
        int num, i, _1000, _100, _10, _1;
        char buf[32] = {0};

        i = 0;
        while (1) {
                printf("Syötä nelinumeroinen kokonaisluku: ");
                fgets(buf, 32, stdin);
                sscanf(buf, "%i", &num);
                if (num > 999 && num < 10000)
                        break;
        }
        while (!isdigit(buf[i])) {
                i++;
        }
        _1000 = ctoi(buf[i]);
        _100 = ctoi(buf[i+1]);
        _10 = ctoi(buf[i+2]);
        _1 = ctoi(buf[i+3]);
        printf("%s%s%s%s%s%s%s%s\n", ones[_1000],
                                 get_thousands(_1000),
                                 ones[_100],
                                 get_hundreds(_100),
                                 ones[_10],
                                 _10 == 1 ? "" : get_tens(_10),
                                 _1 == 1 ? "yksi" : get_ones(_1),
                                 _10 == 1 ? get_tens(_10) : "");
        return 0;
}
int main(void)
{
  char ones, tens;
  printf("Enter a two-digit number: ");
  scanf("%1c%1c", &tens, &ones);

  if (tens == '1')
    printf("%s\n", get_teens(ones));
  else if (ones == '0')
    printf("%s\n", get_tens(tens));
  else
    printf("%s-%s\n", get_tens(tens), get_ones(ones));

  return 0;
}