Automata Fix Questions in C++
1) Countdown from n to 0
Incorrect Code:
#include <iostream>
using namespace std;
int main() {
unsigned int n;
cin >> n;
while (n >= 0) {
cout << n << endl;
n--;
}
return 0;
}
Errors:
- `unsigned int` causes an infinite loop when `n = 0` due to wrapping.
Corrected Code:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
while (n >= 0) {
cout << n << endl;
n--;
}
return 0;
}
2) Factorial Calculation
Incorrect Code:
#include <iostream>
using namespace std;
int main() {
int fact = 1, n;
cin >> n;
for (int i = 1; i <= n; i++) {
fact *= i;
}
cout << fact << endl;
return 0;
}
Errors:
- `int fact` overflows for large values of `n`.
Corrected Code:
#include <iostream>
using namespace std;
int main() {
long long fact = 1, n;
cin >> n;
for (long long i = 1; i <= n; i++) {
fact *= i;
}
cout << fact << endl;
return 0;
}
3) Print a pattern
Incorrect Code:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i < n; i++) {
for (int j = 0; j < n; j--;) {
cout << i;
}
cout << endl;
}
return 0;
}
Errors:
- `j--` in the inner loop leads to an infinite loop.
Corrected Code:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i < n; i++) {
for (int j = i - 1; j < n; j++) {
cout << i;
}
cout << endl;
}
return 0;
}