Вводиться ціле число. Підрахуйте програмно скільки разів в його десяткову запис входить деяка цифра, скажем 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. Це завдання є хорошою ілюстрацією того основоположного принципу програмування, що будь-яка поставлена задача може бути вирішена багатьма і дуже різними способами.
я вирішив ось так
Будь ласка, хто-небудь може людською мовою пояснити, навіщо в рішенні використовувати “непідписаний”? Я шукав інформацію в гуглі, але мій мозок виявився не готовий до напливу занадто страшних слів.
тому що, можливо, тестувальна система набирає багато цифр. тому що, можливо, тестувальна система набирає багато цифр 10 тому що, можливо, тестувальна система набирає багато цифр 16 тому що, можливо, тестувальна система набирає багато цифр.
#include
using namespace std;
int main() {
тому що, можливо, тестувальна система набирає багато цифр, c;
тому що, можливо, тестувальна система набирає багато цифр;
cin>>a;
while(a>0) {
тому що, можливо, тестувальна система набирає багато цифр;
a / = 10;
if(з == 3) k ;
}
cout<<k;
return 0;
}
1016
тому що, можливо, тестувальна система набирає багато цифр(тому що, можливо, тестувальна система набирає багато цифр);
#include
#include
using namespace std;
int main()
{
тому що, можливо, тестувальна система набирає багато цифр;
getline(cin, файл);
int sum = 0;
for (ІНТ г = 0; від < тому що, можливо, тестувальна система набирає багато цифр(); з ++)
{
if (файл[від] == '3')
{
підсумувати ++;
}
}
cout << sum;
return 0;
}
Рішення з перевірками на помилки:
#include
#include
using namespace std;
int main()
{
рядок aboba = “”;
char bebra = 0;
int even = 0;
cout << "Input nubmer: ";
getline(cin, вони бояться);
Sinkclear();
for (int i = 0; i < абоба.розмір(); i )
{
if (!(isdigit(вони бояться[i])))
{
cout << "Error: Ви не ввели номер, або в номері були інші символи." << endl;
return 1;
}
}
cout <> bebra;
if (!(isdigit(bebra)))
{
cout << "Error: Ви не ввели номер, або в номері були інші символи." << endl;
return 1;
}
for (int i = 0; i < абоба.розмір(); i )
{
if (вони бояться[i] == бебра)
{
навіть++;
}
}
cout << "Numbers found: " << навіть << endl;
return 0;
}