// file: lecture_07/example.cc // // local include files // #include "example.h" // method: main // // main program starts here // int main(int argc, char** argv) { // grab the command line arguments as two integers // long i = atoi(argv[1]); long j = atoi(argv[2]); fprintf(stdout, "program name = %s\n", argv[0]); fprintf(stdout, "argv[1] = %d\n", i); fprintf(stdout, "argv[2] = %d\n", j); fprintf(stdout, "the value of argc is %ld\n", argc); // do some math // long k = i + j; fprintf(stdout, "k [%d] = i [%d] + j [%d]\n", k, i, j); long l = i - j; fprintf(stdout, "l [%d] = i [%d] - j [%d]\n", l, i, j); long m = i * j; fprintf(stdout, "m [%d] = i [%d] * j [%d]\n", m, i, j); long n = i / j; fprintf(stdout, "n [%d] = i [%d] / j [%d]\n", n, i, j); k = ((i + j) + (j + j)) + j - i - j + i + j + j; fprintf(stdout, "new value of k = %d\n", k); k = i * j + i; fprintf(stdout, "mult/add: new value of k = %d\n", k); k = (i * j) + i; fprintf(stdout, "mult/add: new value of k = %d\n", k); // let's do some floats // fprintf(stdout, "------------\n"); float arg3 = atof(argv[3]); float arg4 = atof(argv[4]); fprintf(stdout, "program name = %s\n", argv[0]); fprintf(stdout, "argv[3] = %f\n", arg3); fprintf(stdout, "argv[4] = %f\n", arg4); // all float calculations // float sum = arg3 + arg4; fprintf(stdout, "sum = %f\n", sum); sum = arg3 / arg4; fprintf(stdout, "sum (division) = %f\n", sum); sum = arg3 * arg4; fprintf(stdout, "sum (multiplication) = %f\n", sum); sum = arg3 - arg4; fprintf(stdout, "sum (subtraction) = %f\n", sum); // mixed calculations: use casting! // long z = 27; double zz = arg3 * (double)i / (double)j; fprintf(stdout, "zz [%f] = arg3 [%f] * i [%d] / j [%d]\n", zz, arg3, i, j); // exponentiation // float sum = pow(arg3, arg4); fprintf(stdout, "pow(%f, %f) = %f\n", arg3, arg4, sum); //--------------------------------------------------------------------------- // some additional useful operators //--------------------------------------------------------------------------- // modulo operator // fprintf(stdout, "%d %% %d = %d\n", i, j, i % j); fprintf(stdout, "%d %% %d = %d\n", -i, -j, -i % -j); fprintf(stdout, "%d %% %d = %d\n", -i, j, -i % j); fprintf(stdout, "%d %c %d = %d\n", j, '%', i, j % i); fprintf(stdout, "%d %c %d = %d\n", -j, '%', -i, -j % -i); // increment and decrement // long inc_i = i; fprintf(stdout, "i before = %d\n", i); inc_i = i; fprintf(stdout, "inc_i after = %d\n", ++inc_i); inc_i = i; fprintf(stdout, "inc_i after = %d\n", inc_i++); i++; inc_i = i; fprintf(stdout, "i before = %d\n", i); fprintf(stdout, "inc_i after = %d\n", --inc_i); inc_i = i; fprintf(stdout, "inc_i after = %d\n", inc_i--); // equivalents // long acc = 0; for (long alex = 0; alex < 10; alex++) { acc += alex; //acc = acc + alex; fprintf(stdout, "(%d): %d\n", alex, acc); } for (long alex = 10; alex > 0; alex--) { acc -= alex; fprintf(stdout, "(%d): %d\n", alex, acc); } // non-arithmetic types // char a = 'z'; char b = a--; fprintf(stdout, "a = %c (%d) b = %c (%d)\n", a, a, b, b); char c = 'z' / (long)2; fprintf(stdout, "c = %c (%d)\n", c, c); // grab a value from the command line // i = atoi(argv[1]); long N = atoi(argv[3]); for (long i = 0; i < N; i++) { fprintf(stdout, "--- being if/else for i = %d\n", i); // check the value of i // if (i < (long)2) { fprintf(stdout, "i [%d] is less than 2 (%d)\n", i, N); } else if (i < (long)4) { fprintf(stdout, "it is a great day for a quiz\n"); } else if (i == (long)5) { fprintf(stdout, "i is equal to 5\n"); } else if (i != (long)6) { fprintf(stdout, "i (%d) is not 6\n", i); } else { fprintf(stdout, "*** warning *** (%d)\n", i); } fprintf(stdout, "--- done with if/else\n"); } // demonstrate logical operators // long M = atoi(argv[4]); bool value = false; if (value) { fprintf(stdout, "hello world\n"); } if (N == M) { fprintf(stdout, "N == M\n"); } else if ((N % 2) && (M % 2)) { fprintf(stdout, "both N and M fail the modulo operator\n"); } else if ((N % 2) || (M % 2)) { fprintf(stdout, "either N or M failed the modulo operator\n"); } else if (((N != M) || (N % 2)) && ((M % 2) && (N > M))) { fprintf(stdout, "N and M are not equal\n"); } // some useful code // open a file // bool status = false; FILE* fp = fopen(argv[1], "r"); if (fp == (FILE*)NULL) { fprintf(stdout, "%s: my program failed to open file (%s)\n", argv[0], argv[1]); exit(0); } // let's read the file line by line // long i = 0; char buf[999]; while (fgets(buf, 999, fp)) { fprintf(stdout, "line %d: %s", i++, buf); } // close the file // fclose(fp); */ // exit gracefully // return(0); }