Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: задача "Угадай число"
1
  1  Полецая Анастасия Олеговна, 20 апреля 2024 г. 12:56:34
      // #include <bits/stdc++.h>
#include <iostream>
using namespace std;

long long int calculateMiddle(long long int left, long long int right)
{
long long int sum = left + right;
if (sum % 2 == 0)
{
return sum / 2;
}
return (sum + 1) / 2;
}

void printMiddle(long long middle)
{
cout.flush();
cout << middle << endl;
}

string askUser(long long int middle)
{
string sign;
printMiddle(middle);
cin >> sign;
return sign;
}

int main()
{
long long int right = 100000000, left = 1;
long long int middle = 0;
string sign;
while (true)
{
middle = calculateMiddle(left, right);
sign = askUser(middle);
if (sign == "=")
{
break;
}
if (sign == ">")
{
left = middle;
}
else if (sign == "<")
{
right = middle;
}
else
{
// throw std::invalid_argument("invalid user input. Expected: =, <, <");
return 1;
}
}
return 0;
}
Окей, теперь у меня такой код и нет Presentation eror, но ошибка на 5 тесте..
  2  Беляев Сергей Николаевич, 20 апреля 2024 г. 7:01:49
      В if (sign == "=") уберите PrintMiddle. После того как программа жюри выводит "=" ваша программа должна сразу завершится, а вы еще раз выводите отгаданное число.
  3  Полецая Анастасия Олеговна, 20 апреля 2024 г. 6:36:36
      // #include <bits/stdc++.h>
#include <iostream>
using namespace std;

long long int calculateMiddle(long long int left, long long int right)
{
long long int sum = left + right;
if (sum % 2 == 0)
{
return sum / 2;
}
return (sum + 1) / 2;
}

void printMiddle(long long middle)
{
cout << middle << endl;
cout.flush();
}

string askUser(long long int middle)
{
string sign;
printMiddle(middle);
cin >> sign;
return sign;
}

int main()
{
long long int right = 100000000, left = 1;
long long int middle = 0;
string sign;
while (true)
{
middle = calculateMiddle(left, right);
sign = askUser(middle);
if (sign == "=")
{
printMiddle(middle);
break;
}
if (sign == ">")
{
left = middle;
}
else if (sign == "<")
{
right = middle;
}
else
{
// throw std::invalid_argument("invalid user input. Expected: =, <, <");
return 1;
}
}
return 0;
}

сейчас я сделала код, где компьютер выводит число, а потом пользователь выводит знак. Но так тоже Presentation error. Что от меня хотят то?
  4  Терентьев Михаил Павлович, 19 апреля 2024 г. 19:08:17
      Это интерактивная задача. Ваша программа должна общаться с программой-жюри. Программа-жюри загадывает число и готова принимать запросы от вашей программы. Поэтому изначально ваша программа должны спросить у программы-жюри информацию насчет какого-то числа, то есть вывести в стандартный поток вывода число. После этого программа-жюри получит число от вашей программы и на основе него даст ответ. Этот ответ ваша программа должна считать через стандартный поток ввода и сделать какие-то выводы, что делать дальше, какие запросы делать. То есть на вход вашей программе придет ответ, который надо прочитать.
  5  Полецая Анастасия Олеговна, 19 апреля 2024 г. 18:22:26
      // #include <bits/stdc++.h>
#include <iostream>
using namespace std;

long long int calculateMiddle(long long int left, long long int right)
{
long long int sum = left + right;
if (sum % 2 == 0)
{
return sum / 2;
}
return (sum + 1) / 2;
}

void printMiddle(long long middle)
{
cout << middle << endl;
cout.flush();
}

string askUser(long long int middle)
{
string sign;
printMiddle(middle);
cin >> sign;
return sign;
}

int main()
{
long long int right = 100000000, left = 1;
long long int middle = 0;
string sign;
cin >> sign;
while (true)
{
middle = calculateMiddle(left, right);
sign = askUser(middle);
if (sign == "=")
{
printMiddle(middle);
break;
}
if (sign == ">")
{
left = middle;
}
else if (sign == "<")
{
right = middle;
}
else
{
// throw std::invalid_argument("invalid user input. Expected: =, <, <");
return 1;
}
}
return 0;
}
Решаю вот эту задачку. вот мой код. Изначально, я запуталась: компьютер или пользователь вводит и что за стандартный ввод и вывод. Теперь у меня Presentation error. Help!
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru



Принимаем заказы на здоровое питание с доставкой покупателю, недорого.