НА ЯЗЫКЕ С++ В торговом центре этажи нумеруются так: …, –3, –2, –1, 1, 2, 3, … (нулевого этажа нет!). Вася спустился на лифте с этажа с номером A на B этажей, а затем поднялся на лифте на C этажей. Требуется определить, на ка...

НА ЯЗЫКЕ С++ В торговом центре этажи нумеруются так: …, –3, –2, –1, 1, 2, 3, … (нулевого этажа нет!). Вася спустился на лифте с этажа с номером A на B этажей, а затем поднялся на лифте на C этажей. Требуется определить, на каком этаже он оказался.
Гость
Ответ(ы) на вопрос:
Гость
Можно и короче, но так нагляднее: #include #include using namespace std; int main() { const int n=6; int a; int b; int c; int arr[n]={-3, -2, -1, 1, 2, 3}; for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout << endl; srand(time(0)); a = rand() % 6; cout << "(" << a << ")" << " a = " << arr[a] << endl; if (a != 0) b = rand() % a; else b=0; cout << " b = " << b << " (" << arr[a-b] << " этаж)" << endl; if ((n-a+b) != 0) c = rand() % (n-a+b); else c=0; cout << " c = " << c << " (" << arr[a-b+c] << " этаж)" << endl; } Пример: -3 -2 -1 1 2 3  (5) a = 3  b = 4 (-2 этаж)  c = 2 (1 этаж) Если этажей может быть много (до 100), то подробное решение может быть таким: #include #include using namespace std; int main() { int n, n1, a, b, c; int a1, a2, a3; srand(time(0)); n = (rand() % 50 + 1)*2; n1 = n/2; cout << " n = " << n << " (" << -n1 << " ... " << n1 << ")" << endl; a1 = rand() % n; a = a1-n1; if (a <= 0) a--; cout << " a = " << a << endl; b = rand() % a1; a2 = a1-b-n1;  if (a2 <= 0) a2--;  cout << " b = " << b << " (" << a2 << " этаж)" << endl; if ((n-a1+b) != 0) c = rand() % (n-a1+b); else c=0; a3 = a1-b+c-n1; if (a3 <= 0) a3--;  cout << " c = " << c << " (" << a3 << " этаж)" << endl; } Пример: n = 96 (-48 ... 48) a = -38 b = 9 (-47 этаж) c = 83 (37 этаж)
Не нашли ответ?
Ответить на вопрос
Похожие вопросы