fwf
Ввод / вывод
#include <iostream>
#include <string>
int main() {
std::string x;
std::cin >> x; // Введите число
std::cout << x << std::endl;
return 0;
}
Лист. 1.
g++ -o test 01.cpp
Компиляция
./test
Hello World
Hello
Вывод 1.
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
return 0;
}
Лист. 2.
Введите четырёхзначное число: 1234
Ваше число 1234 наше число 8360
Вывод 2.
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
return 0;
}
Лист. 3.
Введите четырёхзначное число: 1234
Ваше число 1234 наше число 8360
Быков: 0 Коров: 0
Вывод 3.
Функция if
Ищем быков
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
if (x[0] == y[0])
b++;
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
return 0;
}
Лист. 4.
Введите четырёхзначное число: 1234
Ваше число 1234 наше число 8360
Быков: 0 Коров: 0
Вывод 4.
Задание 1. Перепишите программу листинг 4 так, чтобы можно было найти 4 быка.
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
if (x[0] == y[0])
b++;
if (x[1] == y[1])
b++;
if (x[2] == y[2])
b++;
if (x[3] == y[3])
b++;
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
return 0;
}
Лист. 5.
Введите четырёхзначное число: 8306
Ваше число 8306 наше число 8360
Быков: 2 Коров: 0
Вывод 5.
Ищем коров.
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
if (x[0] == y[0])
b++;
if (x[1] == y[1])
b++;
if (x[2] == y[2])
b++;
if (x[3] == y[3])
b++;
if (x[0] == y[0]) // Ищем первую корову
c++;
if (x[0] == y[1])
c++;
if (x[0] == y[2])
c++;
if (x[0] == y[3])
c++;
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
return 0;
}
Лист. 6.
Введите четырёхзначное число: 3860
Ваше число 3860 наше число 8360
Быков: 2 Коров: 1
Вывод 6.
Задание 2. Перепишите программу листинг 6 так, чтобы можно было найти 4 быка и/или 4 коровы.
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
if (x[0] == y[0])
b++;
if (x[1] == y[1])
b++;
if (x[2] == y[2])
b++;
if (x[3] == y[3])
b++;
if (x[0] == y[0]) // Ищем первую корову
c++;
if (x[0] == y[1])
c++;
if (x[0] == y[2])
c++;
if (x[0] == y[3])
c++;
if (x[1] == y[0]) // Ищем вторую корову
c++;
if (x[1] == y[1])
c++;
if (x[1] == y[2])
c++;
if (x[1] == y[3])
c++;
if (x[2] == y[0]) // Ищем третью корову
c++;
if (x[2] == y[1])
c++;
if (x[2] == y[2])
c++;
if (x[2] == y[3])
c++;
if (x[3] == y[0]) // Ищем четвёртую корову
c++;
if (x[3] == y[1])
c++;
if (x[3] == y[2])
c++;
if (x[3] == y[3])
c++;
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
return 0;
}
Лист. 7.
Введите четырёхзначное число: 8360
Ваше число 8360 наше число 8360
Быков: 4 Коров: 4
Вывод 7.
Чтобы избавиться от лишних коров перепишем строку вывода результатов в консоль
std::cout << "Быков: " << b << " Коров: " << c-b << std::endl;
Цикл for in
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
if (x[0] == y[0])
b++;
if (x[1] == y[1])
b++;
if (x[2] == y[2])
b++;
if (x[3] == y[3])
b++;
for (char i : y) // Ищем первую корову
if (x[0] == i)
c++;
for (char i : y) // Ищем вторую корову
if (x[1] == i)
c++;
for (char i : y) // Ищем третью корову
if (x[2] == i)
c++;
for (char i : y) // Ищем четвёртую корову
if (x[3] == i)
c++;
std::cout << "Быков: " << b << " Коров: " << c-b << std::endl;
return 0;
}
Лист. 8.
Введите четырёхзначное число: 8306
Ваше число 8306 наше число 8360
Быков: 2 Коров: 2
Вывод 8.
Цикл for со счётчиком
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
for (int n = 0; n < 4; n++){
if (x[n] == y[n])
b++;
}
for (char i : y) // Ищем первую корову
if (x[0] == i)
c++;
for (char i : y) // Ищем вторую корову
if (x[1] == i)
c++;
for (char i : y) // Ищем третью корову
if (x[2] == i)
c++;
for (char i : y) // Ищем четвёртую корову
if (x[3] == i)
c++;
std::cout << "Быков: " << b << " Коров: " << c-b << std::endl;
return 0;
}
Лист. 9.
Введите четырёхзначное число: 8306
Ваше число 8306 наше число 8360
Быков: 2 Коров: 2
Вывод 9.
Задание 3. Перепишите программу листинг 9 так, чтобы строки с поиском коров в программе сократились за счёт применения цикла for со счётчиком.
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
for (int n = 0; n < 4; n++){
if (x[n] == y[n])
b++;
for (char i : y) // Ищем коров
if (x[n] == i)
c++;
}
std::cout << "Быков: " << b << " Коров: " << c-b << std::endl;
return 0;
}
Лист. 10.
Введите четырёхзначное число: 8306
Ваше число 8306 наше число 8360
Быков: 2 Коров: 2
Вывод 10.
Оператор else
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
for (int n = 0; n < 4; n++){
if (x[n] == y[n]) // Ищем быков
b++;
else // Если не нашли быка,
for (char i : y) // ищем коров
if (x[n] == i)
c++;
}
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
return 0;
}
Лист. 11.
Введите четырёхзначное число: 8306
Ваше число 8306 наше число 8360
Быков: 2 Коров: 2
Вывод 11.
Цикл while и выход из цикла
#include <iostream>
#include <string>
int main() {
std::string y = "8360"; // Загадано число
std::cout << "Введите четырёхзначное число: ";
std::string x;
while (true){
std::cin >> x; // Введите число
std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
for (int n = 0; n < 4; n++){
if (x[n] == y[n]) // Ищем быков
b++;
else // Если не нашли быка,
for (char i : y) // ищем коров
if (x[n] == i)
c++;
}
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
if (b == 4){
std::cout << "Вы победили" << std::endl;
return 0;
}
}
}
Лист. 12.
Введите четырёхзначное число: 1234
Ваше число 1234 наше число 8360
Быков: 0 Коров: 1
8360
Ваше число 8360 наше число 8360
Быков: 4 Коров: 0
Вы победили
Вывод 12.
Напишем генератор случайного числа по правилам игры "Быки и коровы".
#include <iostream>
#include <string>
int main() {
std::string y = ""; // Загаданное число
srand(time(0)); // генератор случайного числа из разных цифр, первая не 0
std::string s = "1234567890";
for (int i = 9; i > 6; i = s.length()){
int k = rand() % (i);
y += s[k];
s.erase(k, 1);
}
std::cout << "Введите четырёхзначное число: ";
std::string x;
while (true){
std::cin >> x; // Введите число
//std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
for (int n = 0; n < 4; n++){
if (x[n] == y[n]) // Ищем быков
b++;
else // Если не нашли быка,
for (char i : y) // ищем коров
if (x[n] == i)
c++;
}
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
if (b == 4){
std::cout << "Вы победили" << std::endl;
return 0;
}
}
}
Лист. 14.
Введите четырёхзначное число: 1234
Быков: 0 Коров: 1
5678
Быков: 0 Коров: 1
9056
Быков: 1 Коров: 1
9102
Быков: 1 Коров: 2
9270
Быков: 2 Коров: 1
9820
Быков: 4 Коров: 0
Вы победили
Вывод 14.
Создадим функцию для перемешивания строки
#include <iostream>
#include <string>
// Функция shuffle случайным образом перемешивает строку.
std::string shuffle(std::string s){
srand(time(0));
for (int i = s.length(); i > 0; i--){
int k = rand() % (i);
s += s[k];
s.erase(k, 1);
}
return s;
}
int main() {
std::string y = shuffle("1234567890"); // Перемешиваем строку
y = (y[0] == '0') ? y.substr(1, 4) : y.substr(0, 4); // Выбираем 4 цифры так, чтобы первая из них была не 0
std::cout << "Введите четырёхзначное число: ";
std::string x;
while (true){
std::cin >> x; // Введите число
//std::cout << "Ваше число " << x << " наше число " << y << std::endl;
int b = 0, c = 0;
for (int n = 0; n < 4; n++){
if (x[n] == y[n]) // Ищем быков
b++;
else // Если не нашли быка,
for (char i : y) // ищем коров
if (x[n] == i)
c++;
}
std::cout << "Быков: " << b << " Коров: " << c << std::endl;
if (b == 4){
std::cout << "Вы победили" << std::endl;
return 0;
}
}
}
Лист. 15.
Введите четырёхзначное число: 1234
Быков: 0 Коров: 3
5678
Быков: 0 Коров: 1
2345
Быков: 1 Коров: 2
3426
Быков: 1 Коров: 1
2415
Быков: 2 Коров: 2
2451
Быков: 4 Коров: 0
Вы победили
Вывод 15.