Thursday, July 6, 2017

Simple Summary of Typedef, Array, function, C-String concepts

Run this code in your IDE using breakpoints and monitor every variable as you progress.

#include<iostream>
#include<iomanip>
#include<string>

using namespace std;

enum colors { BLUE, WHITE, RED, GREY };
enum models { TOYOTA, FORD, CHEVY, NISSAN };
typedef int zoltan[4][4];

void print(const zoltan cars);
void print(const int favoriteColors[], colors = BLUE);
void initialize(int cars[][4]);
void initialize(int favoriteColors[]);
void printByRow(const zoltan cars, int row);
void printByCol(const zoltan cars, int col);
int sumByRow(const zoltan cars, int row);
int sumByCol(const zoltan cars, int col);
void parallelArrayPrint(string names[], int items[], float prices[], char codes[],int size);

void cStringExercise();

int main() {
    int favoriteColors[4];
    zoltan cars;

    initialize(cars);
    initialize(favoriteColors);
    printByRow(cars, models::CHEVY);
    printByCol(cars, colors::RED);
    cout << sumByRow(cars, models::CHEVY) << endl;
    cout << sumByCol(cars, colors::RED) << endl;
    cStringExercise();
    string names[] = { "Joe","Bob","Sam","Jane" };
    int items[] = {3,5,2,7};
    float prices[] = {23,34,45,56};
    char codes[] = {'A','B','C','D'};
    parallelArrayPrint(names,items,prices,codes,4);
    return 0;
}

void initialize(int favoriteColors[]) {
    int i = 0;
    for (colors c = BLUE; c <= colors::GREY; c = static_cast<colors>(c + 1)) {
        favoriteColors[c] = i++;
    }
}

void initialize(int cars[][4]) {
    for (int row = 0; row <= colors::GREY; row++)
        for (int col = 0; col <= models::NISSAN; col++)
            cars[row][col] = row*col;
}

void print(const int favoriteColors[], colors c) {
    for (; c <= colors::GREY; c = static_cast<colors>(c + 1)) {
        cout << setw(3) << favoriteColors[c];
    }
    cout << endl;
}

void print(const zoltan cars) {
    for (int row = 0; row <= colors::GREY; row++) {
        for (int col = 0; col <= models::NISSAN; col++)
            cout << setw(3) << cars[row][col];
        cout << endl;
    }
}

void printByRow(const zoltan cars, int row) {
    for (int col = 0; col <= models::NISSAN; col++)
        cout << setw(3) << cars[row][col];
    cout << endl;
}

void printByCol(const zoltan cars, int col) {
    for (int row = 0; row <= models::NISSAN; row++)
        cout << setw(3) << cars[row][col];
    cout << endl;
}

int sumByRow(const zoltan cars, int row) {
    int total = 0;
    for (int col = 0; col <= models::NISSAN; col++)
        total += cars[row][col];
    return total;
}

int sumByCol(const zoltan cars, int col) {
    int total = 0;
    for (int row = 0; row <= models::NISSAN; row++)
        total += cars[row][col];
    return total;
}

void cStringExercise() {
    string names[] = { "Joe","Bob","Sam","Jane" }; //just to see that a one dimensional string array is a two dimensional char array
    char names2[4][4];
    cin >> names2[0];
    cin >> names2[1];
    cin >> names2[2];
    cin >> names2[3];
    cout << names2[0] << endl;
    cin.ignore(100,'\n');
    //what's wrong with this?
    cin.get(names2[0], 4);
    cin.ignore(100, '\n');
    cin.get(names2[1], 4);
    cin.ignore(100, '\n');
    cin.get(names2[2], 4);
    cin.ignore(100, '\n');
    cin.get(names2[3], 4);
    cin.ignore(100, '\n');
    cout << names2[0] << endl;
}

void parallelArrayPrint(string names[],int items[], float prices[], char codes[],int size) {
    cout << showpoint << fixed << setprecision(2);
    for (int index = 0; index < size; index++) {
        cout <<setw(6)<< names[index] << ", you have purchased " << items[index] << " items that costs $" <<setw(7)<< prices[index] * items[index] << " item code: " << codes[index] << endl;

}

}

Monday, January 23, 2017

Code::Block and MinGW

Quick getting started guide video: https://youtu.be/86xvFbCHPvo

You have to consider the IDE that you will chose to use in your journey of learning.  You need to consider the programming languages that are used today in order to pick an IDE that will support most of the languages. 

Installing an IDE does not guarantee that you will have all the components that you will need. The compiler and the debugger can be chosen by personal preference as separate components. 

So, when evaluating an IDE, consider all these components and do not look at an IDE like it must have everything right "out of the box". 

In this case, Code::Block is the interface that allows you to enter the source code and MinGW provides the facility to GNU GCC compiler and GDB debugger in a separate install.