Приветствуем читателей learnpascal.ru! Продолжаем наш марафон по решению задач. На очереди задачи while1-14.
Чтобы решить все нижеприведенные задачи, вам надо знать материал трех уроков: div, mod, функции; логические выражения; циклы.
While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.
Умножение — это некоторое количество сложений.
While2. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.
Добавляем счетчик в предыдущую задачу.
While3. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.
While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является — вывести False.
Число будет степенью числа, если деля заданное число нацело на 3, получится N = 1.
While5. Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2 K . Найти целое число K — показатель этой степени.
Используем метод из предыдущей задачи.
While6. Дано целое число N (> 0). Найти двойной факториал N: N! = N·(N–2)·(N–4)·… (последний сомножитель равен 2, если N — четное, и 1, если N — нечетное). Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и вывести его как вещественное число.
While7°. Дано целое число N (> 0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K 2 > N. Функцию извлечения квадратного корня не использовать.
While8. Дано целое число N (> 0). Найти наибольшее целое число K, квадрат которого не превосходит N: K 2 ≤ N. Функцию извлечения квадратного корня не использовать.
While9. Дано целое число N (> 1). Найти наименьшее целое число K, при котором выполняется неравенство 3K > N.
Аналагично while 7.
While10. Дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 3K
While11°. Дано целое число N (> 1). Вывести наименьшее из целых чисел K, для которых сумма 1 + 2 + … + K будет больше или равна N, и саму эту сумму.
Действуем аналогично предыдущим задачам.
While12°. Дано целое число N (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 2 + … + K будет меньше или равна N, и саму эту сумму.
While13. Дано число A (> 1). Вывести наименьшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет больше A, и саму эту сумму.
Такая же как while11.
While14. Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму.
Такая же как while12.
На сегодня все! Если у вас возникли вопросы, не стесняйтесь, задавайте их в комментариях. И не забывайте кликать по кнопочкам.
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Pascal операторы цикла — Repeat
var a,b,temp,c:integer; flag: boolean; begin writeln(‘A=’); readln(a); writeln(‘B=’); readln(b); temp:=a; repeat temp:=temp-b; inc(c); until temp-b>=0; writeln(‘result: ‘,c); end.
Pascal операторы цикла — While
P:=1; i:=3; while i 1) 1
2) 3
3) 9
4) 24
S:=0; i:=7; while i > 1 do begin S := S + i div 2; i := i — 1; end;
Варианты:
1) S = 0
2) S = 7
3) S = 12
4) S = 24
Решение данного задания смотрите в видео уроке по Паскалю:
var n, k,c: integer; begin writeln(‘N:’); readln(n); writeln(‘K:’); readln(k); c:=0; while n>=k do begin n:=n-k; c:=c+1; end; writeln(‘частное: ‘,c, ‘остаток: ‘, n); end.
var number:integer; flag: boolean; begin writeln(‘введите целое число (number>0) number=’); readln(number); flag:=false; while (number div 10)>0 do begin if (number mod 10) = 2 then flag:=true; number:=number div 10; end; writeln(flag); end.
var N,K,Temp :Integer; begin Write(‘Введите N: ‘); Readln(N); K:=0; Temp:=3; while Temp
* Из задачника М. Э. Абрамян (While14)
var Temp:Real; A,K :Integer; begin Write(‘Введите A: ‘); Readln(A); K:=0; Temp:=0; while Temp Проверить:
var i,R,K:Longint; begin write(‘Введите K : ‘); readln(K); R:=1; i:=0; while(R<>0) do begin write(‘Введите число из набора: ‘); Readln(R); if R Проверить:
var P, S, D:Real; K :Integer; begin Write(‘Введите процент: ‘); Readln(P); K:=1; D:=10; S:=10; while S Pascal операторы цикла — For
var c,m:real; i:integer; begin writeln(‘Цена?’); readln(c); m:=0.1; for i := 1 to 10 do begin writeln(‘ price of ‘,m, ‘ kg = ‘,c*m); m:=m+0.1; end; end.
var a, b, i: integer; begin writeln(‘A:’); readln(a); writeln(‘B:’); readln(b); for i:= b-1 downto a+1 do write(i:3 ); writeln; writeln(‘kolvo: ‘,b-a-1); end.
* Из задачника М. Э. Абрамян (For11)
var N, Rez,i :Integer; begin Write(‘Введите N: ‘); Readln(N); rez:=0; For i:=0 to N do Rez:=Rez+sqr(N+i); Writeln(Rez); end.
Сейчас предлагаем решить сложную олимпиадную задачу на Паскале:
var c,n,s,k,i:integer; begin c:=0; s:=0; readln(n); for i:=2 to n do begin k:=i; while k>0 do begin if i mod k = 0 then c:=c+1; k:=k-1; end; if c= 5 then s:=s+i; c:=0; end; writeln(s); end.
Добрый вечер. В первом задании у вас не правильный код. Постоянно 1 выдаёт.
У меня получился вот такой:
var a,b,k:integer;
begin
write(‘Введите длину отрезка А (a>b) — ‘);
readln(a);
write(‘Введите длину отрезка Б (b at 19:20
ваш код в задачке while 4 на числа, начинающиеся на двойку(например 233) выдаёт false. я написал так(про булеан ещё не знал, ведь он в следующей главе):
var a,a1,z,i,j,i2:integer;
begin
write(‘vvedite chislo:’);
readln(a);
i:=1;
a1:=a;
z:=0;
while a1>=10 do begin
a1:=a1 div 10;
inc(i);
end;
a1:=a;
while i>0 do begin
i2:=1;j:=1;
while i2
Как мы уже говорили, в паскале существуют 3 способа организации цикла (типа):
2) Цикл с постусловием
3) Цикл с предусловием
Тело цикла выполняется пока условие ИСТИННО.
Если в теле цикла действий несколько — используются операторные скобки begin … end;
Рассмотрим пример, аналогичный рассмотренному в теме «Цикл со счетчиком», но реализуем его с помощью цикла WHILE.
Требуется на экране вывести:
Привет
Привет
Привет
Привет
Для реализации данного примера с помощью цикла с предусловием нам потребуется переменная n:
Данный цикл будет выполнять команду writeln(‘Привет’) бесконечное число раз. Почему? Потому что переменная n не изменяется и всегда будет меньше 4. Поэтому необходимо в цикле добавить код, изменяющий переменную n. Например: n:=n+1.
Теперь переменная n будет изменяться с каждым выполнением команд тела цикла (с каждой итерацией).
Нужно запомнить: чтобы не произошло зацикливание в цикле WHILE — необходимо проследить за тем, чтобы переменная из условия изменялась в теле цикла. В цикле со счетчиком такого не случится (зацикливание), т.к. мы указываем точное число итераций.
Рассмотрим несколько задач, где число повторений в цикле явно не известно.
Считать сумму введенных с клавиатуры чисел до тех пор, пока не будет введен ноль.
Решение данной задачи основывается на использовании цикла WHILE, т.к. мы не знаем, когда будет введен ноль и мы перестанем вводить числа.
Зачем два раза используем ввод числа а (readln(a);)? Первый раз вводим число а для того, чтобы войти в цикл с некоторым значением переменной a, которое будет использоваться в условии цикла WHILE. Второй раз команда readln(a) используется внутри цикла — вводим числа до тех пор, пока не введем ноль.
Даны два отрезка А и B (A>B). Не используя операции умножения и деления, определить, сколько отрезков В уместится в отрезке А.
Информатика в школе. Цикл WHILE
Т.е. из рисунка видно, что нам нужно складывать длины отрезка A до тех пор, пока сумма не станет больше длины отрезка В. В этом нам поможет цикл с предусловием — цикл while.
Рассмотрим работу программы на примере: А=5, В=21. Рассуждения запишем в таблицу:
Информатика в школе. Цикл WHILE
Используя алгоритм Евклида, найти НОД двух чисел.
Рассмотрим блок-схему алгоритма Евклида:
Запишем данной алгоритм с помощью Паскаля, опираясь на данную блок-схему. Как видим, у нас имеется цикл с предусловием (M>N). Внутри цикла еще одно условие (M>N), т.е. оператор IF… THEN.
Аналогично задаче 2 можно проверить данный алгоритм, записав рассуждения в таблицу.