04: Constants and maximum values

// #define tells the preprocessor to replace
// one string with another
// here, everywhere that the preprocessor finds
// "NUMBER_OF_PLANETS" it will replace it with "9"
// use of capital letters to name constants is a convention
// a rule of the language must be obeyed
//   (program will not work if rule is violated)
// a convention should be obeyed
//   (teammates will be annoyed and you might be confused
//    if convention is violated)
#define NUMBER_OF_PLANETS 9
#define MAX_STRING_LENGTH 24

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main( int argc, char** argv ) {

/*
 average distance of planets from sun
 mercury:   57 million km.
 venus:    108 million km.
 earth:    150 million km.
 mars:     228 million km.
 jupiter:  779 million km.
 saturn;  1430 million km.
 uranus:  2880 million km.
 neptune: 4500 million km.
 pluto:   5910 million km.
*/

    // "char" means "character"
    // a character can be a letter, a digit, punctuation
    // trivia: punched cards had 80 columns
    //         some early video terminals displayed 80 char

    // names is an array of arrays of characters
    // another way to say this: it is an array of strings
    char names[NUMBER_OF_PLANETS][MAX_STRING_LENGTH];

    // "str" stands for "string"
    // "cpy" stands for "copy"
    // strcpy() is a function that copies a string
    // "mercury" is a literal (a value)
    // function call stores "mercury" in the location names[0]
    strcpy( names[0], "mercury" );
    strcpy( names[1], "venus" );
    strcpy( names[2], "earth" );
    strcpy( names[3], "mars" );
    strcpy( names[4], "jupiter" );
    strcpy( names[5], "saturn" );
    strcpy( names[6], "uranus" );
    strcpy( names[7], "neptune" );
    strcpy( names[8], "pluto" );

    // distances is an array of integers
    // "double" means "double precision floating point"
    // double type allows fractions and greater range 
    // of values than does int type
    double distances[NUMBER_OF_PLANETS];
    distances[0] = 57;
    distances[1] = 108;
    distances[2] = 150;
    distances[3] = 228;
    distances[4] = 779;
    distances[5] = 1430;
    distances[6] = 2880;
    distances[7] = 4500;
    distances[8] = 5910;

    // 2^{10} = 1024
    // 2^{x} * 2^{x} * 2^{x} = 2^{3x}
    // 2^{10} * 2^{10} * 2^{10} = 2^{30} = 1024 * 1024 * 1024
    //int value = 1024 * 1024 * 1024;
    //value = value + (value - 1);

    // when positive count exceeds maximum, count resumes
    // at most negative value
    //for( int i = -4; i < 4; i++ ) {
    //    printf( "value = %12d\n", value + i ) ;
    //} // for


    for( int i = 0; i < NUMBER_OF_PLANETS; i++ ) {
        printf( 
            "distance of %s from the sun is %12.2f km.\n",
            names[i], distances[i] * 1000000 );
    } // for


    exit( 0 );
} // main( int, char** )