A quick gdb lesson.
Code:
$ gdb -q ./a.out
Reading symbols from ./a.out...done.
(gdb) list
1 #include<stdio.h>
2 #include<math.h>
3 //upside down pyramid
4 int main(void)
5 {
6 int x = 0, y = 0, z = 0;//dimensions
7 scanf("%d %d %d", &x, &y, &z);
8 char hash = '#';
9 char dot = '.';
10 int j = 0;
(gdb)
11 for (j = 0; j < 1; j++)//print base first
12 {
13 for (int i = 0; i < x; i++)
14 printf("%c", hash);
15 printf("\n");
16 }
17
18 for (j = 1; j < z; j++)//second to z levels of pyramid
19 {
20 int right = ceil((x - 1) + (-j)*(x / (2.0*z)));//right line coordinates
(gdb)
21 int left = (floor(j*(x / (2.0*z))));//left line coordinates
22 int ledge = left;//left edge
23 int redge = right;//right edge
24 int mid = 0;//middle space
25
26 for (ledge = ledge; ledge < (ledge + 1); ledge++);//first #
27 printf("%c", hash);
28 for (mid = (ledge+ 1); mid < redge; mid++)//dots in between
29 printf("%c", dot);
30 //for (redge = redge; redge <= redge; redge++)//right hand edge #
(gdb) b 28
Breakpoint 1 at 0x4008b3: file foo.c, line 28.
(gdb) run
Starting program: /home/sc/Documents/a.out
2 3 4
##
Breakpoint 1, main () at foo.c:28
28 for (mid = (ledge+ 1); mid < redge; mid++)//dots in between
(gdb) info locals
ledge = 2147483647
redge = 1
right = 1
left = 0
mid = 0
x = 2
y = 3
z = 4
hash = 35 '#'
dot = 46 '.'
j = 1
You might think about
1. why ledge is so large.
2. what ledge < (ledge + 1) actually means
3. why there is a ; at the end of line 26