1. FFTFTTTFTT
  2. 0112.D
  3. 10, 10, 6.1, 15, cannot pass rvalue as reference
  4. Below
switch(day)
{
    case MON:
        cout << "This is a weekday" << endl;
        break;
    case TUE:
        cout << "This is a weekday" << endl;
        break;
    case WED:
        cout << "This is a weekday" << endl;
        break;
    case THUR:
        cout << "This is a weekday" << endl;
        break;
    case FRI:
        cout << "This is a weekday" << endl;
        break;
    case SAT:
        cout << "This is a weekend day" << endl;
        break;
    case SUN:
        cout << "This is a weekend day" << endl;
        break;
    default:
        cout << "Not a legal day" << endl;
        break;
}
  1. Below
#include <iostream>
using namespace std;
 
int main()
{
    for (int num = 1; num <= 1000; num++)
    {
        int sum = 0;
 
        for (int factor = 1; factor <= num / 2; factor++)
        {
            if (num % factor == 0)
            {
                sum += factor;
            }
        }
 
        if (sum == num)
        {
            cout << num << " ";
        }
    }
 
    return 0;
}
  1. Below
bool arrayAdd(const int arrA[], const int arrB[], int arrSum[], int n)
{
    int carry = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        arrSum[i] = (arrA[i] + arrB[i] + carry) % 10;
        carry = (arrA[i] + arrB[i] + carry) / 10;
    }
    return carry;
}
  1. Below
bool big_enough(int N, int num_rows, int num_cols)
{
    return N >= num_rows * num_cols;
}
 
void time2(int* memory, int num_rows, int num_cols, int x1, int y1, int x2, int y2)
{
    x1 = max(x1, 0);
    y1 = max(y1, 0);
    x2 = min(x2, num_rows - 1);
    y2 = min(y2, num_cols - 1);
    
    for (int i = x1; i <= x2; i++)
    {
        for (int j = y1; j <= y2; j++)
        {
            // memory[i][j] = memory[i][j] * 2;
            memory[i * num_cols + j] *= 2;
        }
    }
}
  1. Below
void ruler(int n)
{
    if (n == 0)
    {
        return;
    }
 
    ruler(n - 1);
 
    for (int i = 0; i < n; i++)
    {
        cout << "-";
    }
    cout << endl;
 
    ruler(n - 1);
}
  1. Below
void find_min_max(const int data[], int& min_data, int& max_data)
{
    min_data = data[0];
    max_data = data[0];
    for (int i = 1; i < NUM_DATA; i++)
    {
        min_data = min(min_data, data[i]);
        max_data = max(max_data, data[i]);
    }
}
 
int count_frequency(const int data[], int start, int end)
{
    int freq = 0;
    for (int i = 0; i < NUM_DATA; i++)
    {
        if (data[i] >= start && data[i] <= end)
        {
            freq++;
        }
    }
    return freq;
}
 
void find_intervals(const int data[], int intervals[][2])
{
    int min_data, max_data;
    find_min_max(data, min_data, max_data);
 
    int range = ceil((max_data - min_data + 1) / NUM_BINS)
 
    for (int i = 0; i < NUM_BINS; i++)
    {
        intervals[i][0] = min_data + i * range;
        intervals[i][1] = intervals[i][0] + range - 1;
    }
}
 
void make_histogram(const int data[], const int intervals[][2], char diagram[][NUM_BINS])
{
    for (int i = 0; i < NUM_BINS; i++)
    {
        int freq = count_frequency(data, intervals[i][0], intervals[i][1]);
        for (int j = 0; j < freq; j++)
        {
            diagram[freq - j - 1][i] = '*';
        }
    }
}