Как составить в паскале программу угадай число

Перейти к содержанию

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

Просмотров 10.6к. Обновлено 29 октября 2021

  1. Сгенерировать случайное число.
  2. Ввести счетчик попыток. Присвоить ему значение 1.
  3. Пока счетчик попыток меньше, либо равен 10
    1. запрашивать у пользователя очередное число,
    2. если оно больше загаданного, то выводить «много»,
    3. если оно меньше загаданного, то выводить «мало»,
    4. иначе сообщать, что число угадано и прерывать выполнение цикла,
    5. увеличивать счетчик попыток на единицу.
  4. После цикла, если число не было угадано, то вывести сообщение о том, что попытки исчерпаны, и какое число было загадано компьютером.

Самый верный способ отгадать число менее чем за 10 попыток — это делить диапазон на 2. Например, если число лежит в пределах от 0 до 100, то введя 50 мы сразу сокращаем диапазон поиска в два раза. Если было сказано, что загаданное число меньше 50-ти, то вводим 25 и таким образом снова сокращаем диапазон в 2 раза.

Если следовать этому правилу то потребуется 6-7 попыток, т.к. число 100 (изначальная длина диапазона) лежит в пределах между 26 и 27.

Pascal

угадать число от 1 до 100 паскаль


var n,u,i: byte;
begin
randomize;
n := random(100);
i := 1;
writeln('Отгадайте число за 10 попыток');
while i <= 10 do begin
write(i,'-я попытка: ');
readln(u);
if u > n then
writeln('Много')
else
if u < n then
writeln('Мало')
else begin
writeln('Угадано!');
break;
end;
i := i + 1;
end;
if i = 11 then
writeln('Вы не угадали. Было загадано ',n);
end.



Отгадайте число за 10 попыток
1-я попытка: 47
Мало
2-я попытка: 85
Много
3-я попытка: 59
Мало
4-я попытка: 70
Мало
5-я попытка: 78
Много
6-я попытка: 74
Угадано!

Отгадайте число за 10 попыток
1-я попытка: 90
Много
2-я попытка: 80
Много
3-я попытка: 70
Много
4-я попытка: 60
Много
5-я попытка: 50
Мало
6-я попытка: 59
Много
7-я попытка: 58
Много
8-я попытка: 59
Много
9-я попытка: 57
Много
10-я попытка: 56
Много
Вы не угадали. Было загадано 55

Язык Си


#include

main() {
srand(time(NULL));
int n,u,i;
n = rand() % 100;
i = 1;
while (i<=10) {
printf("%d-я попытка: ", i);
scanf("%d", &u);
if (u < n) printf("Малоn");
else
if (u > n) printf("Многоn");
else {
printf("Угадано!n");
break;
}
i += 1;
}
if (i == 11)
printf("Не угадали. Это число %dn", n);
}

Python

угадать число от 1 до 100 python (питон)


from random import random
n = round(random() * 100)
i = 1
print("Компьютер загадал число. Отгадайте его. У вас 10 попыток")
while i <= 10:
u = int(input(str(i) + '-я попытка: '))
if u > n:
print('Много')
elif u < n:
print('Мало')
else:
print('Вы угадали с %d-й попытки' % i)
break
i += 1
else:
print('Вы исчерпали 10 попыток. Было загадано', n)

В Питоне есть расширение else для цикла while, которое выполняется единожды, когда логическое выражение в заголовке while возвращает ложь.

КуМир


алг угадай число
нач
цел n,u,i
n := int(rand(0,100))
i := 1
вывод "Отгадай число не более чем за 10 попыток", нс
нц пока i<=10
вывод i,"-я попытка: "
ввод u
если u>n то вывод "Много", нс
иначе
если u< n то вывод "Мало", нс
иначе
вывод "Угадано!"
выход
все
все
i := i+1
кц
если i = 11 то
вывод "Вы не угадали число ", n
все
кон

Basic-256


n = int(rand * 100)
i = 1
print "Угадайте число от 1 до 100"
while i <= 10
print i + "-я попытка: ";
input u
if u < n then
print "Мало"
else
if u > n then
print "Много"
else
print "Угадано!"
end
endif
endif
i = i + 1
endwhile
if i = 11 then print "Не угадано число " + n

Компьютер загадывает целое число, случайным образом, в диапазоне 1-100.
Человек должен отгадать его за возможно меньшее число попыток. В ответ на попытку человека компьютер выдает подсказку: введенное число меньше загаданного или больше.
Можно также выдавать подсказку типа «горячо»-«холодно», оговорив предварительно диапазоны (например, «горячо» — если введенное и загаданное число отличаются меньше чем на 5, и «холодно» — для всех остальных случаев).
Если число угадано, выдаются поздравления и предложение начать новую игру
или выйти из программы.
Включайте Вашу фантазию!
_______________________________________________________________
Генератор случайных чисел:
Randomize; — процедура инициализации генератора случайных чисел.
Рекомендуется использовать перед вызовом Random.
a:= Random(100); — функция генерации псевдослучайного числа.
_______________________________________________________________

3 / 3 / 0

Регистрация: 24.01.2010

Сообщений: 30

1

Игра «Угадай число»

10.05.2010, 15:32. Показов 18746. Ответов 3


Студворк — интернет-сервис помощи студентам

Игра «Угадай число». Один из играющих задумывает число от 1 до 1000, другой пытается угадать его за 10 вопросов вида: верно ли, что задуманное число больше такого-то числа.

Нужен алгоритм. Помогите

Добавлено через 1 час 7 минут
Кину денежку на телефон!



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.05.2010, 15:32

Ответы с готовыми решениями:

Игра «Угадай число»
Двое играют в следующую игру. Дано число 0. Разрешается прибавить к текущему числу любое…

игра «Угадай число»
Правила игры следующие. Играют компьютер и человек. Компьютер &quot;задумывает&quot; четырехзначное…

Написание программы игры «Угадай число»
Написать программу игры &quot;Угадай число&quot;. Правила игры следующие: Играют двое, один задумывает число,…

«Угадай число»
угадай число&quot;программа с помощью датчика случайных чисел выбирает число в диапазоне от 0 до…

3

er777

2 / 2 / 0

Регистрация: 07.05.2010

Сообщений: 33

10.05.2010, 16:14

2

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Program Ugaday;
var p, z: integer; 
begin 
z:=random(1000);
writeln ('Угадай число!');  
read(p); 
while p<>z do 
begin 
if p<z  then writeln(' меньше') 
else writeln(' больше'); 
read(p) 
end; 
writeln(' Угадал! ')
end.

Вроде так!!!!

Добавлено через 2 минуты
(Контакт удалён)
если что обращайся еще…чем смогу тем помогу!!!



1



3 / 3 / 0

Регистрация: 24.01.2010

Сообщений: 30

10.05.2010, 19:14

 [ТС]

3

с угадыванием я сам знаю как написать.
а вот с : «10 вопросов вида: верно ли, что задуманное число больше такого-то числа.»
нужно помочь

Добавлено через 2 часа 22 минуты
актуально



0



Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

10.05.2010, 19:52

4

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses crt;
var a,b,k:word;
begin
randomize;
clrscr;
a:=random(1000)+1;
writeln('Угадайте число от 1 до 1000:');
k:=0;
repeat
write('Мое число ');readln(b);
k:=k+1;
writeln('Верно ли что число больше ',b);
if a>b then  writeln('Верно')
else if a<b then writeln('Не верно')
else if b=a then
 begin
  writeln('Вы угадали!');
  readln;
 end;
if k>10 then writeln('Вы использовали все попытки!');
until(b=a)or(k>10);
readln
end.

Если грамотно вводить числа, брать середину интервала, то 10 попыток достаточно чтобы угадать, проверял.



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.05.2010, 19:52

Помогаю со студенческими работами здесь

Число прописью
помогите написать прогу которая б переводила любое число записаное так &quot;1&quot;….&quot;14&quot;…&quot;147&quot; в етоже…

В заданной последовательности литер, состоящей из букв латинского алфавита и оканчивающейся точкой, определите общее число вхождений букв «a»,»e», «c», «h».
Немогу написать программу. В заданной последовательности литер, состоящей из букв латинского…

Решение заданий типа «Array»,»Matrix»,»String»,»File»,»Text»»»
большая просьба помочь решить где-то около 35-40 (из 100) задач (мне не понятных) типа массив и…

Написать программу проверки правильности написания сочетаний «жи», «ши», «ча», «ща», «чу», «щу». Исправить ошибки
дан текст.написать программу проверки правильности написания сочетаний &quot;жи&quot;, &quot;ши&quot;, &quot;ча&quot;, &quot;ща&quot;,…

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

Или воспользуйтесь поиском по форуму:

4

Программа «Угадай число»

Задача:

Отгадать
целое число, которое «загадал»
компьютер в определенном диапазоне.

Описание
переменных:

a
– число, «загаданное» компьютером;

b
– очередное число, вводимое пользователем.

Алгоритм
решения задачи:

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

переменную
a.

Пока
число a не совпадет с числом b, пользователю
будет предлагаться ввести очередное
число. При этом, если b > a, то на экран
будет выдаваться сообщение «Много».
Иначе будет проверяться условие b < a.
При его положительном значении появится
сообщение «Мало», иначе сообщение
«Угадал».

Не
трудно понять, что если b не больше и не
меньше a, то значит оно равно a. В таком
случае логическое выражение при while
вернет false,
и цикл прервется.

Программа
на языке Паскаль:

var

a,b:
integer;

begin

randomize;

a
:= random(100);

while
a <> b do begin

write(‘Введи
число:
‘);

readln(b);

if
b > a then

writeln(‘Много’)

else

if
b < a then

writeln(‘Мало’)

else

writeln(‘Угадал’);

end;

readln

end.

Примечания:

Угадать
число всегда можно не более чем через
6-7 попыток, если делить каждый оставшийся
диапазон пополам.

Перевод римских чисел в арабские. Пример автоматного распознавателя

Задача:

Можно
использовать вложенные операторы case.
Это удобно, например, при реализации
автоматных распознавателей, которые
дают способ наглядной записи алгоритмов
распознавания текстов.

Представленная
таблица предназначена для перевода
римских чисел, составленных из цифр X,
V, I.

Алгоритм
решения задачи:

X

V

I

1

n
:= 10; state := 2

n
:= 5; state := 3

n
:= 1; state := 6

2

n
:= n + 10; state := 2

n
:= n + 5; state := 3

n
:= n + 1; state := 6

3

ok
:= false

ok
:= false

n
:= n + 1; state := 4

4

ok
:= false

ok
:= false

n
:= n + 1; state := 5

5

ok
:= false

ok
:= false

n
:= n + 1; state := 7

6

n
:= n + 8; state := 7

n
:= n + 3; state := 7

n
:= n + 1; state := 5

7

ok
:= false

ok
:= false

ok
:= false

Первый
столбец (цифры от 1 до 7) – это состояния
(state).

Для
расшифровки XIV начинаем с состояния 1.
Первый символ – ‘X’, поэтому смотрим
столбец ‘X’ и находим n := 10; state := 2. Итак,
полагаем n равным 10 и сдвигаем стрелку
на вторую строку. Теперь смотрим столбец,
определяемый вторым символом, т.е. ‘I’,
и находим n := n + 1; state := 6. Значение n, таким
образом, становится 10 + 1 = 11. Сдвигаем
стрелку к строке 6. Теперь в столбце ‘V’
находим n := n + 3; state := 7. Значение n становится
равным 11 + 3 = 14. Сдвигаем стрелку на строку
7 и замечаем, что любая следующая цифра
‘X’, ‘V’ или ‘I’ будет теперь ошибкой
(чисел XIVX, XIVV, XIVI не может быть).

Эта
таблица позволяет декодировать римскую
запись чисел, содержащих любое количество
цифр X (в начале) и цифры V, I, записанные
по обычным правилам:

I,
II, III, IV, V, VI, VII, VIII, IX, X, XI и т.д.

Вместе
с тем такое число как IIII будет воспринято
как ошибочное и переменная ok примет
значение false.
Для работы с цифрами M, D, C и L таблицу
можно расширить.

Программа
на языке Паскаль:

var

n, state: integer;

symbol:
char;

ok:
boolean;

begin state :=
1;

ok :=
true;

n := 0;

while not
eoln do begin

read(symbol);

if
((symbol = ‘X’) or (symbol = ‘V’) or (symbol = ‘I’)) then

case
state of

1:
case symbol of

‘X’:
begin n := 10; state := 2 end;

‘V’:
begin n := 5; state := 3 end;

‘I’:
begin n := 1; state := 6 end

end;

2:
case symbol of

‘X’:
begin n := 10; state := 2 end;

‘V’:
begin n := n + 5; state := 3 end;

‘I’:
begin n := n + 1; state := 6 end

end;

3:
case symbol of

‘X’,
‘V’: ok := false;

‘I’:
begin n := n + 1; state := 4 end

end;

4:
case symbol of

‘X’,
‘V’: ok := false;

‘I’:
begin n := n + 1; state := 5 end

end;

5:
case symbol of

‘X’,
‘V’: ok := false;

‘I’:
begin n := n + 1; state := 7 end

end;

6:
case symbol of

‘X’:
begin n := n + 8; state := 7 end;

‘V’:
begin n := n + 3; state := 7 end;

‘I’:
begin n := n + 1; state := 5 end

end;

7:
ok := false;

end

else
begin

if
ok then

writeln(n:2)

else

writeln(‘error’);

state
:= 1;

ok
:= true

end;

end;

readln

end.

Примечания:

Программа
не выдает ошибок, но и не работает.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Привет 

какдела

, в этом воскресном посту, я расскажу как написать простую и интересную игру на паскале.

Блок-схема игры



Игра будет называться «Угадай число».

сразу пишем:

program ugadai_chislo;

затем указываем переменные:

var
a,b,c:integer;

теперь можно начинать:

begin

задаем, «число a» — произвольное число от 1 до 100, а «число c» равное 0:

a:=random(100)
c:=0

Начинаем цикл с пост условием,
берем значение «числа b» с клавиатуры, проверяем его, и если a=b, выходим из цикла

repeat
readln(b);
c:=c+1;
if a<b then writeln(‘Загаданное число меньше‘) else
if a>b then writeln(‘Загаданное число больше‘);
until a=b;

Программа повторяет цикл, пока вы не отгадаете число, загаданное компьютером, а когда вы его отгадаете надо написать об этом и показать статистику:

writeln(‘Число угадано!‘);
writeln(‘Время: ‘,Milliseconds/1000);
writeln(‘Попыток: ‘,c);

Осталось только завершить программу:

end. 

На всякий случай выложу весь код здесь

UPD: Сидя без инета, дописал игру, код здесь! 

Понравилась статья? Поделить с друзьями:
  • Как найти периметр треугольника с корнем
  • Как найти площадь алюминия
  • Ошибка 3 0x0001000b rainbow six siege как исправить ошибку
  • Серго ты как меня нашел фото
  • Как найти проект омега