Pharmit24
14.03.2022 01:21

Напишите программу-викторину, которая задаёт три во и предлагает пользователю на них ответить. Переход на следующий во не происходит до тех пор, пока пользователь не ответит правильно на предыдущий во Переменную под ответ используйте текстовую (string). Данная программа должна быть выполнена с оператора Repeat…Until

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
vera0503
05.04.2023 09:49

Если m ≥ n, то m - n ≥ 0, иначе m - n < 0

Если m и n – целые числа и хранятся в переменных типа int, то результат вычисления разности тоже будет целочисленным.

Целое число со знаком в памяти компьютера представлено в виде 4 Байт, первый бит этого набора выделен для хранения знака. Если этот бит равен 0, то число положительное, если 1 – отрицательное.

Зная это, можно написать программу, которая будет выводить 1, если m ≥ n и любое другое число в противном случае. Для этого достаточно воспользоваться побитовыми операциями. В частности, операторами побитового сдвига и побитового И.

#include <iostream>int main() {    int m, n;    std::cin >> m >> n;    std::cout << ((m - n) >> (sizeof(int) - 1)) + 1; // Разбор ниже    return 0;}

Разберем последнюю строчку. В переменной q хранится разность чисел m и n. Нас интересует первый бит этого числа, так как он хранит информацию о том, положительное число или отрицательное. Для этого нам необходимо с побитового сдвига вправо (>>) сдвинуть все биты числа, хранимого в целочисленной переменной q, кроме самого первого бита. Получить количество бит мы можем, воспользовавшись встроенной функцией sizeof(), от полученного значения достаточно отнять единицу.

Как уже упоминалось ранее, нас интересует положительное число в q, а выражение q >> (sizeof(q) - 1) в этом случае вернёт 0. Для того, чтобы результирующее значение было верным необходимо прибавить к результату выражения 1. Таким образом, условие "Если m≥n, то требуется вывести 1, в противном случае — любое другое число." выполняется.

Стоит отметить, что прибавление единицы к выражению – не единственный вариант. Также можно воспользоваться приведением типов. Например, "std::cout << (int)(!(q >> (sizeof(q) - 1)));" выведет тот же результат.

0,0(0 оценок)
Ответ:
akrikay13
17.07.2022 08:03

сори что поздно но вроде бы я решил ток щас

Объяснение:

#include <iostream>

#include <vector>

using namespace std;

int main()

{

   int a;

   cin >> a;

   vector <int> v(a);

   vector <int> ans;

   vector <int> empty;

   for (int i = 0; i < v.size(); i++) {

       cin>>v[i];

   }

   int d = a - 1;

   bool isparity = a%2 == 1;

   for (int i = 0; i < v.size(); i++) {

       if (v[i] == v[d] && (i!=d || (isparity && i == a/2))) {

           d--;

           

       }

       else if (i!=d && i!=a-1) {

           ans = empty;

           for (int j = 0; j <= i; j++) {

               ans.push_back(v[j]);

           }

       }

       else {

           ans = empty;

           for (int j = 0; j < i; j++) {

               ans.push_back(v[j]);

           }

       }

   }

   cout<<ans.size()<<endl;

   for (int i = ans.size()- 1; i >= 0; i--) {

       cout<<ans[i]<<" ";

   }

   return 0;

}

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота