// // mark-error-pos.cpp // // based on an example from Niklaus Wirth, 1984 Turning Award Winner #include <iostream> using namespace std; int pos[] = { 3, 6, 9, 19, 22 }; char txt[] = "Thes broplem is peenuds."; // example input char out[] = " * * * * *"; // expected output // assume starting index is a 1 and not 0 even though this is not Pascal #define L (sizeof(txt)/sizeof(char)) #define n (sizeof(pos)/sizeof(int)) void markErrorPosA() { int k = 1; for (int i = 1; i <= L; i++) { if (i == pos[k]) { cout << '*'; k++; } else cout << ' '; } } void markErrorPosB() { int k = 1; pos[n + 1] = 0; for (int i = 1; i <= L; i++) { if (i == pos[k]) { cout << '*'; do { k++; } while (i == pos[k]); } else cout << ' '; } } void markErrorPosC() { int i = 1; for (int k = 1; k <= n; k++) { do { cout << ' '; i++; } while (i != pos[k]); cout << '*'; i++; } } void markErrorPosD() { int i = 1; int k = 1; do { while (i < pos[k]) { cout << ' '; i++; } if (i == pos[k]) { cout << '*'; i++; } k++; } while (k <= n); } void markErrorPosE() { int i = 1; int k = 1; while (k <= n) { while (i < pos[k]) { cout << ' '; i++; } while (i == pos[k]) k++; cout << '*'; } } int main() { cout << (txt) << endl; markErrorPosA(); cout << endl; }