11.14 Tutorial5
intro-to-computer-science-gtiit-tutorial-05-2024.pdf
Assignment Operators
Write the following assignments only using the assignment (=) operator:
-
x += y
x = x + y -
y -= x
y = y - x -
x++
x = x + 1 -
z--
z = z - 1 -
a *= 5
a = a * 5 -
x /= 7
x = x / 7 -
b >>= a
b = b >> a -
p <<= q
p = p << q -
x &= 1024
x = x & y -
y |= z
y = y | z -
x %= 4096
x = x % 4096 -
x ^= 2
x = x ^ 2
For Statement
Manually execute the following program:
2.1
/* 2.1 */
void main() {
int limit = 5;
int evenSum = 0;
int oddSum = 0;
for (int i = 0; i < limit; i++) {
if (i % 2 == 0) {
evenSum += i;
} else {
oddSum += i;
}
}
}
**Step-by-Step Execution**
1. **Initialization:**
- `limit = 5`
- `evenSum = 0`
- `oddSum = 0`
2. **Loop Execution:**
- **Iteration 1 (i = 0):**
- `i % 2 == 0` (0 is even)
- `evenSum += i` → `evenSum = 0`
- `oddSum = 0`
- **Iteration 2 (i = 1):**
- `i % 2 != 0` (1 is odd)
- `oddSum += i` → `oddSum = 1`
- `evenSum = 0`
- **Iteration 3 (i = 2):**
- `i % 2 == 0` (2 is even)
- `evenSum += i` → `evenSum = 2`
- `oddSum = 1`
- **Iteration 4 (i = 3):**
- `i % 2 != 0` (3 is odd)
- `oddSum += i` → `oddSum = 4`
- `evenSum = 2`
- **Iteration 5 (i = 4):**
- `i % 2 == 0` (4 is even)
- `evenSum += i` → `evenSum = 6`
- `oddSum = 4`
3. **Final Values:**
- `evenSum = 6`
- `oddSum = 4`
### Program 2.2 Execution
```c
void main() {
int limit = 10;
int sum = 0;
for (int i = 0; i < limit; i += 2) {
if (i % 2 == 0) {
continue;
}
sum += i;
}
}
-
Initialization:
-
limit = 10 -
sum = 0 -
Loop Execution:
-
The loop increments
i by 2 each time, starting fromi = 0. -
Iteration 1 (i = 0):
-
i % 2 == 0(true) -
continue is executed, skippingsum += i -
sum = 0 -
Iteration 2 (i = 2):
-
i % 2 == 0(true) -
continue is executed, skippingsum += i -
sum = 0 -
Iteration 3 (i = 4):
-
i % 2 == 0(true) -
continue is executed, skippingsum += i -
sum = 0 -
Iteration 4 (i = 6):
-
i % 2 == 0(true) -
continue is executed, skippingsum += i -
sum = 0 -
Iteration 5 (i = 8):
-
i % 2 == 0(true) -
continue is executed, skippingsum += i -
sum = 0 -
Final Value:
-
sum = 0
-
Explanation: Since i is incremented by 2 and starts from 0, it is always even, so the continue statement is executed in every iteration, and sum is never modified.
Program 2.3 Execution
void main() {
int limit = 0;
int product = 0;
for (int i = 6; i > limit; i--) {
product += i;
if (product <= i * 2) {
continue;
}
product *= 2;
}
}
-
Initialization:
-
limit = 0 -
product = 0 -
Loop Execution:
-
The loop decrements
i by 1 each time, starting fromi = 6. -
Iteration 1 (i = 6):
-
product += i →product = 0 + 6 = 6 -
product <= i * 2 →6 <= 6 * 2(true) -
continue is executed, skippingproduct *= 2 -
product = 6 -
Iteration 2 (i = 5):
-
product += i →product = 6 + 5 = 11 -
product <= i * 2 →11 <= 5 * 2(true) -
continue is executed, skippingproduct *= 2 -
product = 11 -
Iteration 3 (i = 4):
-
product += i →product = 11 + 4 = 15 -
product <= i * 2 →15 <= 4 * 2(false) -
product *= 2 →product = 15 * 2 = 30 -
Iteration 4 (i = 3):
-
product += i →product = 30 + 3 = 33 -
product <= i * 2 →33 <= 3 * 2(false) -
product *= 2 →product = 33 * 2 = 66 -
Iteration 5 (i = 2):
-
product += i →product = 66 + 2 = 68 -
product <= i * 2 →68 <= 2 * 2(false) -
product *= 2 →product = 68 * 2 = 136 -
Iteration 6 (i = 1):
-
product += i →product = 136 + 1 = 137 -
product <= i * 2 →137 <= 1 * 2(false) -
product *= 2 →product = 137 * 2 = 274 -
Final Value:
-
product = 274
-
Linear Accumulation with For
Translate the following summations to C programs with for statements:
a. \(\sum_{i=0}^{1024} i\)
#include <stdio.h>
int main () {
int sum = 0;
for (int i = 0; i <= 1024; i++) {
sum = sum + i;
}
printf("%d", sum);
return 0;
}
b. \(\sum_{i=1}^{10} \frac{36}{i}\)
#include <stdio.h>
int main () {
float sum = 0;
for (int i = 1; i <= 36; i++) {
sum = sum + (36 / i);
}
printf("%f", sum);
return 0;
}
c. \(\sum_{i=0}^{10} i^i\)
#include <stdio.h>
#include <math.h>
int main () {
double sum = 0;
for (double i = 0; i <= 10; i++) {
sum = sum + pow(i, i);
}
printf("%lld", (long long int)sum);
return 0;
}
d. \(\sum_{i=0}^{10} \frac{i}{2}\)
#include <stdio.h>
int main () {
float sum = 0;
for (int i = 0; i <= 10; i++) {
sum = sum + (i / 2);
}
printf("%f", sum);
return 0;
}
e. \(\sum_{i=1}^{100} i \cdot \sum_{k=1}^{i} k \cdot \sum_{j=1}^{k} j\)
#define Oo0Oo0oO int
#define o0O0OoOo long
#define O0oO0o0O for
#define oOo0O0o0 main
#define OO0oO0Oo printf
#define o0O0oO0o return
#include <stdio.h>
Oo0Oo0oO oOo0O0o0(){o0O0OoOo o0O0OoOo Oo0Oo0oO O0o0O0o0 = 0;O0oO0o0O
(Oo0Oo0oO o0O0o0OO = 1; o0O0o0OO <=
100; o0O0o0OO++) {O0oO0o0O (Oo0Oo0oO
Oo0Oo0Oo = 1; Oo0Oo0Oo <= o0O0o0OO;
Oo0Oo0Oo++) {O0oO0o0O (Oo0Oo0oO oO0oO0oO = 1; oO0oO0oO
<= Oo0Oo0Oo; oO0oO0oO++) {O0o0O0o0 +=
o0O0o0OO * Oo0Oo0Oo *
oO0oO0oO;}}}OO0oO0Oo(
"%lld", O0o0O0o0);o0O0oO0o 0;
}
#include <stdio.h>
int main () {
long long int sum=0;
for (int i = 1; i <= 100; i++) {
for (int k = 1; k <= i; k++) {
for (int j = 1; j <= k; j++) {
sum += i * k * j;
}
}
}
printf("%lld", sum);
return 0;
}
f. \(\frac{\sum_{i=0}^{10} 2 \cdot i}{\sum_{i=0}^{5} 4 \cdot i}\)
#include <stdio.h>
int main () {
int sum1 = 0, sum2 = 0;
for (int i = 0; i <= 10; i++) {
sum1 = sum1 + 2 * i;
}
for (int j = 0; j <= 5; j++) {
sum2 = sum2 + 4 * j;
}
// pay attention to the type of variable!
// if the result may be float, then the variable should have at least one float
// or this may casue integer division, then leading to loss of the fractional part.
float result = (float)sum1 / (float)sum2;
printf("%f", result);
return 0;
}
4. Comma operator
Rewrite the following C programs without using the comma operator and correctly indenting them:

#include <stdio.h>
int main() {
int i = 1, number = 1000;
while (i < number) {
if (number % i == 0) {
printf("%d\n", i);
}
i++;
}
return 0;
}
#include <stdio.h>
int main() {
int a, b;
int number = 10;
for (a = 1; a < number; a++) {
for (b = 1; b < number; b++) {
printf("%d^2 + %d^2 = %d\n", a, b, (a * a) + (b * b));
}
}
return 0;
}