Вводиться ціле число. Підрахуйте програмно скільки разів в його десяткову запис входить деяка цифра, скажем 3. Ось і все умова. Наприклад: 123 -> 1; 54321345 -> 2; 3333 -> 4 і т.д.
Завдання дуже проста … на рівні середньої школи. Але для того, щоб завдання зробити не зовсім вже тривіальної – ускладнювати:
– запропонуйте кілька (якомога більше) різних способів реалізації;
– для кожної реалізації скоротіть запис коду так, щоб він був, якомога коротшим.
рішення (через простоту завдання є де розвернутися, рішень може бути дуже багато, доповнюйте своїми):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); unsigned long e; unsigned n = 0; cout << "Ввод числа: "; cin >> e; do if (3 == e % 10) n++; while ((e /= 10) > 0); cout << "Цифр 3 в числе " << n << " штук" << endl; } |
Тут все рішення укладається в один оператор do … while. Але, звернемо увагу на те, що “вводиться ціле число” – це введення завжди рядка, представляє число (тут підступ в формулюванні завдання). Тогда:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); char e[80], *p = e; unsigned n = 0; cout << "Ввод числа: "; cin >> e; while ((p = strchr(p, '3')) != NULL) p++, n++; cout << "Цифр 3 в числе " << n << " штук" << endl; } |
Или так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> //#include <string> using namespace std; int main() { setlocale(LC_ALL, "rus"); char e[80]; unsigned n = 0, i; cout << "Ввод числа: "; cin >> e; for (i = 0; i < strlen(e); i++) if (e[i] == '3') n++; cout << "Цифр 3 в числе " << n << " штук" << endl; } |
Або навіть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> #include <string> using namespace std; int main() { setlocale(LC_ALL, "rus"); string e; unsigned n = 0; cout << "Ввод числа: "; cin >> e; for (string::iterator i = e.begin();; n++, i++) if ((i = find(i, e.end(), '3')) == e.end()) break; cout << "Цифр 3 в числе " << n << " штук" << endl; } |
І ось як це виглядає:
1 2 3 4 5 6 7 8 9 10 11 12 | $ ./mul3_1 Ввод числа: 1234531 Цифр 3 в числе 2 штук $ ./mul3_2 Ввод числа: 12341231 Цифр 3 в числе 2 штук $ ./mul3_3 Ввод числа: 12341231 Цифр 3 в числе 2 штук $ ./mul3_4 Ввод числа: 333 Цифр 3 в числе 3 штук |
P.S. Це завдання є хорошою ілюстрацією того основоположного принципу програмування, що будь-яка поставлена задача може бути вирішена багатьма і дуже різними способами.
я вирішив ось так