Q:

Each of the programs in the highlighted text on page 184 contains a common programming error. Identify and correct each error

0

Each of the programs in the highlighted text on page 184 contains a common programming error. Identify and correct each error.

(a)

unsigned aCnt = 0, eCnt = 0, iouCnt = 0;
char ch = next_text();
switch (ch) {
 case 'a': aCnt++; case 'e': eCnt++; default: iouCnt++;
}

(b)

unsigned index = some_value();
switch (index) {
 case 1: int ix = get_value(); ivec[ ix ] = index; break; default: ix = ivec.size()-1; ivec[ ix ] = index;
}

(c)

unsigned evenCnt = 0, oddCnt = 0;
int digit = get_num() % 10;
switch (digit) {
 case 1, 3, 5, 7, 9: oddcnt++; break; case 2, 4, 6, 8, 10: evencnt++; break;

(d)

unsigned ival=512, jval=1024, kval=4096;
unsigned bufsize;
unsigned swt = get_bufCnt();
switch(swt) {
 case ival: bufsize = ival * sizeof(int); break; case jval: bufsize = jval * sizeof(int); break; case kval: bufsize = kval * sizeof(int); break;
}

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

(a)

    unsigned aCnt = 0, eCnt = 0, iouCnt = 0;
    char ch = next_text();
    switch (ch) {
      case ’a’: aCnt++; break;  // Need `break`
      case ’e’: eCnt++; break;  // Need `break`
      default: iouCnt++;
    }

(b)

    unsigned index = some_value();
    int ix;
    switch (index) {
      case 1:
        //int ix = get_value();  // Cannot bypass initialization
        ix = get_value();
        ivec[ ix ] = index;
        break;
      default:
        ix = ivec.size()-1;
        ivec[ ix ] = index;
    }

(c)

    unsigned evenCnt = 0, oddCnt = 0;
    int digit = get_num() % 10;
    switch (digit) {
      //case 1, 3, 5, 7, 9:  // case label must be integral const expression
      case 1: case 3: case 5: case 7: case 9:
        oddcnt++;
        break;
      //case 2, 4, 6, 8, 10:
      case 2: case 4: case 6: case 8: case 10:
        evencnt++;
        break;
    }

(d)

    //unsigned ival=512, jval=1024, kval=4096;
    // case label must be integral const expression
    constexpr unsigned ival=512, jval=1024, kval=4096;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt) {
      case ival:
        bufsize = ival * sizeof(int);
        break;
      case jval:
        bufsize = jval * sizeof(int);
        break;
      case kval:
        bufsize = kval * sizeof(int);
        break;
    }

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

Similar questions


need a help?


find thousands of online teachers now