Nested loops

These are notes for 21 October.

a6sol.cpp

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int year, month;
    cout << "Enter year (1900-): ";
    cin >> year;
    while(year < 1900)    // input validation
    {
        cout << "ERROR. Enter year (1900-): ";
        cin >> year;
    }
    cout << "Enter month (1-12): ";
    cin >> month;
    while(month < 1 || month > 12)
    {
        cout << "ERROR. Enter month (1-12): ";
        cin >> month;
    }   
    cout << "\n";
    switch(month)
    {
    case 1: cout << "January"; break;
    case 2: cout << "February"; break;
    case 3: cout << "March"; break;
    case 4: cout << "April"; break;
    case 5: cout << "May"; break;
    case 6: cout << "June"; break;
    case 7: cout << "July"; break;
    case 8: cout << "August"; break;
    case 9: cout << "September"; break;
    case 10: cout << "October"; break;
    case 11: cout << "November"; break;
    case 12: cout << "December"; break;
   }
   cout << " " << year << "\n\n";
   cout << " Sun Mon Tue Wed Thu Fri Sat\n";
   // on what day does the month start?
   static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
   int y = year - (month < 3);
   int dayOfWeek = (y + y/4 - y/100 + y/400 + t[month-1] + 1) % 7;
   //cout << "(starts on " << dayOfWeek << ")\n";
   // skip over to correct day
   //cout << setw(4 * dayOfWeek) << "";
   for(int i = 0; i < dayOfWeek; i++) {
        cout << "    ";// four spaces
   }
   int daysInMonth = 31;
   if(month == 2) { daysInMonth = 29; }
   else if(month == 4 || month == 6 || month == 9
            || month == 11)
     { daysInMonth = 30; }
   int day = 1;
   while(day <= daysInMonth)
   {
        cout << setw(4) << day;
        // One way: check whether day%7 == saturday
        //int saturday = (7 - dayOfWeek) % 7;
        // Another way: also increment dayOfWeek
        day++;
        if(dayOfWeek == 6) // Saturday
        {
            cout << "\n";
        }
        dayOfWeek = (dayOfWeek + 1) % 7;
   }  
   
   return 0;
}

mult-table.cpp

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int sizeOfTable = 14;
    for(int i = 1; i <= sizeOfTable; i++)
    {
        for(int j = 1; j <= sizeOfTable; j++)
        {
            cout << setw(4) << i*j;
        }
        cout << "\n";
    }
    return 0;
}

checkers.cpp

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int sizeOfTable = 17;
    for(int i = 0; i < sizeOfTable; i++)
    {
        for(int j = 0; j < sizeOfTable; j++)
        {
            if(i==0 || j==0 || i == sizeOfTable-1
                    || j == sizeOfTable-1) 
            { cout << "##"; }
            else { cout << ".."; }
        }
        cout << "\n";
    }
    return 0;
}

midterm-practice.cpp

#include <iostream>
using namespace std;
int main()
{
    // Fast Exponentiation algorithm, computes
    // i to the jth power.
    int i = 4;
    int j = 10;
    int k = 1;
    while(j > 0)
    {
        if(j%2 == 0) {
            i *= i;
            j /= 2;
        } else {
            k *= i;
            j--;
        }
    }
    cout << k << "\n";
}

midterm-pr2.cpp

#include <iostream>
using namespace std;
int main()
{
    for(int i = 1; i < 5; i++)
    {
        int k = 0;
        for(int j = 1; j <= i; j++)
        {
            k += j;
        }
        cout << k << "\n";
    }
}