Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int multOfThree(int M) // функция, возвращающая количество троек в кратном тройке числе (2 зад.)
- {
- int count = 0;
- for (int i = 0; i < M; i += 3) {
- count++;
- }
- return count;
- }
- int multOfFour(int M) // функция, возвращающая количество четверок в кратном четверке числе (2 зад.)
- {
- int count = 0;
- for (int i = 0; i < M; i += 4) {
- count++;
- }
- return count;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int temp, count = 0;
- cout << "Введите номер задания контрольной работы: "; cin >> temp;
- switch (temp)
- {
- case 1:
- int A, B, C, sum;
- cout << "A = "; cin >> A;
- cout << "B = "; cin >> B;
- cout << "C = "; cin >> C;
- sum = A; // сумме присваиваем начальное значение - основание
- while (sum <= C - B) { // в условии из максимальной стоимости вычитаем одну лопасть, чтобы не перескочить ее(стоимость)
- sum += B; // увеличиваем сумму на стоимость одной лопасти с каждым пройденным циклом
- count++; // подсчитываем количество лопастей
- }
- cout << count;
- break;
- case 2:
- int M, three = 0, four = 0, sum1 = 0;
- cout << "M = "; cin >> M;
- if (M % 4 == 0) { // для M кратного четырем
- cout << "4: " << multOfFour(M); // вызываем соответствующую функцию
- }
- else if (M % 3 == 0) { // для M кратного трём
- cout << "3: " << multOfThree(M); // вызываем соответствующую функцию
- }
- else if (M < 3 || M == 5) { // исключим все возможные варианты значений, при которых нельзя разместить ни одной лопасти без остатка
- cout << '0';
- }
- else { // для некратных значений
- while (sum1 < M && sum1 > -1) { // условия выхода: 1 для цикла слева на право, 2 для цикла справа налево
- sum1 += 4; // прибавляем к нулевому значению суммы четверки, двигаясь тем самым слева направо
- four++; // подсчитываем их кол-во
- if (sum1 + 3 == M) { // если в конец ряда можно "впихнуть" тройку, делаем это и получаем ответ
- cout << "4: " << four << endl << "3: " << three + 1;
- break;
- }
- if (sum1 + 3 > M) // если эта тройка не влезет в ряд, запускаем цикл справа налево, заменяя четверки на тройки
- {
- while(1) {
- sum1 += 3; // сначала прибавляем тройку, чтобы не остановиться, не дойдя до M
- three++;
- if (sum1 == M) {
- cout << "4: " << four << endl << "3: " << three;
- break; // выходим из цикла только тогда, когда доберемся до M
- }
- sum1 -= 4; // отнимаем четверку, чтобы заменить ее на тройку
- four--;
- }
- }
- }
- }
- break; // для кейса
- case 3:
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement