SlavaSokolov 174 / 134 / 105 Регистрация: 14.04.2016 Сообщений: 719 |
||||||||||||
1 |
||||||||||||
Вычисление чисел из промежутка17.04.2016, 20:30. Показов 5526. Ответов 5 Метки нет (Все метки)
Две проблемы:
Почему на 2 и на дальнейших кругах выполнения программы, не учитывается
данная строка? И сразу действие переходит к
.
0 |
318 / 208 / 162 Регистрация: 08.12.2015 Сообщений: 863 |
|
17.04.2016, 21:03 |
2 |
Почему на 2 и на дальнейших кругах выполнения программы, не учитывается Все работает. Попробуйте исправить read на readln
1 |
SlavaSokolov 174 / 134 / 105 Регистрация: 14.04.2016 Сообщений: 719 |
||||
17.04.2016, 21:23 [ТС] |
3 |
|||
Я имел ввиду что, программа не проверяет значение t1, а сразу выводит
, и только после вывода этого сообщения я ввожу что делать, но нужно что бы это сообщение не выводилось до проверки значения t1. Всё, большое спасибо, исправил на readln всё нормально работает, но почему ошибку то выводит при завершении?
0 |
318 / 208 / 162 Регистрация: 08.12.2015 Сообщений: 863 |
|
17.04.2016, 21:29 |
4 |
Попробуйте исправить read на readln Везде.
0 |
174 / 134 / 105 Регистрация: 14.04.2016 Сообщений: 719 |
|
17.04.2016, 21:32 [ТС] |
5 |
Тогда вопрос а чем отличается read от readln?
0 |
318 / 208 / 162 Регистрация: 08.12.2015 Сообщений: 863 |
|
17.04.2016, 21:44 |
6 |
1 |
var t1: string; var a, b, c, d, n: integer; begin writeln('Вас приветствует программа по поиску кратных числу чисел в промежутке.'); //writeln('Для начала работы,нажмите Enre'); repeat writeln('Нажмите Enter для продолжения работы, введите "Хватит"+Enter для прекращения работы');read(t1); if t1 <> 'Хватит' then begin writeln('Введите числовой промежуток: начало и конец');read(a, b); writeln('Введите число,на которое должны делится числа');read(c); n := 0; while a <= b do begin d := a mod c; if d = 0 then begin n := n + 1; write(a, ' ') end; a := a + 1; end end; writeln(); writeln('Список построен.Всего-', n, ' чисел/числа'); until t1 = 'Хватит'; writeln('Благодарим за использование'); end.
Две проблемы:
1. И самая для меня так сказать больная).
.
2. Вторая заключается в том, что после завершения выполнения программы словом “Хватит”, выдаёт ошибку:
PABCSystem.pas(4133) : Ошибка времени выполнения: Входная строка имела неверный формат.
Паскаль, Нужно найти простые числа в промежутке. Вот что получилось. Помогите.
TES SKYRIM
Ученик
(107),
закрыт
4 года назад
Дополнен 6 лет назад
var a,b,v,n: integer;
begin
writeln(‘Введите кол. чисел’);
readln(n,a);
for b:=n to (a div 2) do
begin
if (a div b)=0 then v:=v+0
else v:=v+1;
end;
writeln(‘Кол. простых: ‘,v);
end.
Александр Устименко
Просветленный
(24306)
6 лет назад
простые числа на участке [a,b]
var i, a, b, n: integer;
begin
write (‘a=’);
readln(a);
write (‘b=’);
readln(b);
a:=a-1;
b:=b-1;
repeat
inc(a);
n:=0;
for i:=2 to trunc(a/2)+1 do
if a mod i = 0 then inc(n);
if n=0 then write (a:4);
until (a>b);
end.
Кублен
Оракул
(95423)
6 лет назад
program prostoe; //простое число
uses crt;
var a:boolean;
i:integer;
function fl(k: integer): boolean;
var i:integer;
begin
fl:=false;
for i:=2 to trunc(sqrt(k+1)) do if k mod i = 0 then exit;
fl:=true;
end;
BEGIN
clrscr;
write(‘ ввести целое число –>’); readln(i);
a:= fl(i) ;
write(‘ число ‘);
if a then write(i,’ простое ‘) else write(i,’ не простое’);
writeln;
writeln(‘конец задачи ‘);
readln;
end.
Павел Н
Мудрец
(10644)
6 лет назад
Что именно получает readln(n,a); от пользователя? Судя по коду интервал, в котором нужно искать простые числа, тогда не ясно для чего цикл заканчиваем (a div 2), вместо a.
В этом блоке должна быть проверка на целочисленное деление не только на число b, а на все числа от 2 до b. Если ни на одно из них не делиться, то увеличиваем счётчик.
begin
if (a div b)=0 then v:=v+0
else v:=v+1;
end;
Функция random для генерации случайного числа
В средах программирования или в приложениях электронных таблиц имеется возможность генерации случайного числа.
Рассмотрим получение случайных чисел:
- вещественных
- целых
Будем использовать среду программирования PascalABC.NET.
Решим также задачу с использованием случайного числа.
Выполним присваивание
a:=random;
При использовании такого выражения и переменной типа integer возникает ошибка.
Делаем вывод
Функция random выдает значение типа real в диапазоне [0; 1)
Значит для использования функции random и получения вещественного числа будет использовать переменную типа real.
Для получения целого числа воспользуемся присваиванием
a:=random(10);
В данном случае будут случайно сгенерированы первые 10 неотрицательных чисел в промежутке от 0 до 9.
Чтобы получить целое число из промежутка [a; b], воспользуемся формулой:
Пусть нужно получить случайное число из промежутка [-2; 10]
Формула примет такой вид:
-2 + random(10-(-2)+1) = -2 + random(13)
Если random(13) сгенерирует 0, то будет получена левая граница промежутка -2 + 0 = -2, если random(13) сгенерирует 12, то будет получена правая граница -2+12 = 10.
Для получения случайного числа из промежутка также можно воспользоваться функцией random с двумя аргументами – левой и правой границами промежутка (в среде Free Pascal работать не будет).
a:=random(-2,12);
Задача. Получить 30 случайных чисел из промежутка [-2;12] и вывести их на экран.
Воспользуемся циклом for с счетчиком x от 1 до 30, сгенерируем и выведем на экран 30 случайных чисел.
Итоги
Как использовать функцию random для генерации случайного числа
- Вещественное число
- Целое число
Напишите в комментариях, какие числа будут получены с помощью таких присваиваний?
Программа получения массива случайных чисел.
Pascal: Определить пренадлежность введенного числа сразу двум перекрывающимся интервалам.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Определить пренадлежность введенного числа | |
// сразу двум перекрывающимся интервалам. | |
// Проверяемое число | |
var x: integer; | |
// Первый интервал | |
var a1, b1: integer; | |
// Второй интервал | |
var a2, b2: integer; | |
begin | |
Writeln(‘Эта программа определит приндалежность числа сразу двум введеным перекрывающимся интервалам.‘); | |
Writeln(‘Далее необходимо ввести число x и два интервала (a1, b1) и (a2, b2).‘); | |
Write(‘Введите x = ‘); | |
Readln(x); | |
Write(‘Введите a1 = ‘); | |
Readln(a1); | |
Write(‘Введите b1 = ‘); | |
Readln(b1); | |
Write(‘Введите a2 = ‘); | |
Readln(a2); | |
Write(‘Введите b2 = ‘); | |
Readln(b2); | |
if ((a1 < x) and (x < b1)) and ((a2 < x) and (x < b2)) | |
then Writeln(‘Введеное число принадлежит сразу двум интервалам!‘) | |
else Writeln(‘Введенное число интервалам не принадлежит!‘); | |
end. |