Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 20.12.2019
Сообщений: 2

Угадать случайное число Oracle

20.12.2019, 17:07. Показов 1334. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Дана задача - Угадать случайное число. Ее условие:
В программе генерируется случайное целое число от 0 до 100. Пользователь должен его отгадать не более чем за 10 попыток. После каждой неудачной попытки должно сообщаться больше или меньше введенное пользователем число, чем то, что загадано. Если за 10 попыток число не отгадано, то вывести загаданное число. Сообщения должны вносится в таблицу DEVICES.

Чтобы решить эту задачу необходимо создать таблицу и написать 3 функции и 2 процедуры. Вот что уже есть, но к сожалению, это не работает. Могли бы вы подсказать как решить эту задачу.


Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
-- CREATE TABLE DEVICES ( DEVICE   VARCHAR2(100),  MESSAGE  VARCHAR2(100),  RESULT   VARCHAR2(100));
-- insert into devices values ('STD_IN', 'hidding number', null);
-- insert into devices values ('STD_OUT', 'message', null);
 
--------1)
CREATE OR REPLACE FUNCTION read_from_stdin
   RETURN NUMBER
IS
   a   NUMBER;
BEGIN
   SELECT ROUND (DBMS_RANDOM.VALUE (1, 10)) rnum INTO a FROM DUAL;
   RETURN a;
END;
/
 
 
--------2)
CREATE OR REPLACE FUNCTION get_user_input
   RETURN VARCHAR2
    IS v_result VARCHAR2(100);
BEGIN 
v_result:=read_from_stdin;
SELECT 
MESSAGE
INTO v_result
  FROM devices
 WHERE     device = 'STD_IN'
       AND MESSAGE = 'hidden number'
       AND MESSAGE IS NOT NULL;
EXCEPTION
WHEN NO_DATA_FOUND
 THEN
raise_application_error(-20101, 'Value is missing');
END;
 
---------3)
CREATE OR REPLACE FUNCTION read_hidden_number
   RETURN NUMBER
IS
   a   NUMBER;
BEGIN
   SELECT ROUND (DBMS_RANDOM.VALUE (1, 100)) rnum INTO a FROM DUAL;
 
   RETURN a;
END;
/
 
--------4)
CREATE OR REPLACE PROCEDURE SCOTT.write_into_stdin
(      p_device  VARCHAR2
    , p_message  VARCHAR2
    , p_result VARCHAR2
    )
 IS
 PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO devices (device
    , message
    , result
)
VALUES ( p_device
    , p_message
    , p_result
);
COMMIT;
END;
/
---------5)
CREATE OR REPLACE PROCEDURE SCOTT.find_hidden_number
IS
   v_hidden_number   NUMBER;
   v_user_input      NUMBER;
    i PLS_INTEGER := 0;
   v_error_flag NUMBER;
BEGIN
   v_hidden_number := read_hidden_number;
    v_user_input := get_user_input;
   FOR i IN 1..7
   LOOP
           IF v_user_input < v_hidden_number
      THEN
         DBMS_OUTPUT.put_line ('number higher');
      ELSIF v_user_input > v_hidden_number
      THEN
         DBMS_OUTPUT.put_line ('number below');
      ELSIF v_user_input = v_hidden_number
      THEN
         DBMS_OUTPUT.put_line ('the number is correct');
         ELSE v_error_flag :=1;
         EXIT;
      END IF;
   END LOOP;
END find_hidden_number;
/
Добавлено через 22 минуты
*Опечатки
-- insert правильно 'hidden number'
и в 1) правильно (DBMS_RANDOM.VALUE (1, 100)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2019, 17:07
Ответы с готовыми решениями:

Есть ли в SQL Access функция случайное число?
Есть ли в SQL Access функция случайное число?

Компьютер задает случайное число от 1 до 100 человек должен угадать число
Вот задали задачу учусь в 10 классе уже поставили 4 двойки за задачи,Обьясните решение и что к чему тут. Компьютер задает случайное число...

Написать программу, реализует следующую игровую ситуацию: компьютер задает случайное целое число в интерали от 1 до 10, а мне нужно это число угадать
Написать программу, реализует следующую игровую ситуацию: компьютер задает случайное целое число в интерали от 1 до 10, а мне нужно это...

1
0 / 0 / 0
Регистрация: 20.12.2019
Сообщений: 2
31.12.2019, 14:18  [ТС]
Вот первая готовая процедура, которая позволяет вносить INPUT номера


Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE PROCEDURE prc_write_into_stdin (p_name     VARCHAR2,
                                                  p_value    VARCHAR2)
IS
   PRAGMA AUTONOMOUS_TRANSACTION;
   v_value   PLS_INTEGER;
BEGIN
   UPDATE t_io_device
      SET ch_value = p_value
    WHERE ch_type = 'stdin' AND ch_name = p_name;
 
   COMMIT;
END prc_write_into_stdin;



Вторая - функция, которая выбирает и заменяет значение на 0

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE OR REPLACE FUNCTION fnc_read_from_stdin (p_name VARCHAR2)
   RETURN PLS_INTEGER
IS
   PRAGMA AUTONOMOUS_TRANSACTION;
   v_value   PLS_INTEGER;
BEGIN
   WHILE TRUE
   LOOP
      BEGIN
         SELECT ch_value
           INTO v_value
           FROM t_io_device
          WHERE     ch_type = 'stdin'
                AND ch_name = p_name
                AND ch_value IS NOT NULL;
         UPDATE t_io_device
            SET ch_value = NULL
          WHERE ch_type = 'stdin' AND ch_name = p_name;
         COMMIT;
         EXIT;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            CONTINUE;
      END;
   END LOOP;
 
   RETURN TO_NUMBER (v_value);
END fnc_read_from_stdin;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.12.2019, 14:18
Помогаю со студенческими работами здесь

Компьютер загадывает случайное число, пользователь пытается его угадать
Напишите программу-игру. Компьютер загадывает случайное число, пользователь пытается его угадать. Пользователь вводит число до тех пор,...

Программа случайным образом загадывает число от 1 до 99, а пользователь должен угадать число
Программа работает, но загадывает число не от 1 до 99. Помогите исправить ошибку .MODEL SMALL .STACK 100h .DATA ; сегмент...

Компьютер загадывает число. Пользователь должен угадать это число
Игровая программа. Компьютер загадывает случайное число в диапазоне от 0 до 999. Пользователь должен угадать это число. Диалог...

Какое наименьшее число вопросов нужно задать чтобы гарантировано угадать число?
не мог найти куда написать свой пост ,решил сюда , задача из контрольной по информатике по ЕГЭ. Загадано число от 1 до 100. загадавший на...

Написать программу, которая задумывает число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток
Возникла проблема, связанная с отсутствием мозгов ) Дали задание такого типа: Написать программу, которая задумывает число в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru