Как найти числа промежутка паскаль

SlavaSokolov

174 / 134 / 105

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

Сообщений: 719

1

Вычисление чисел из промежутка

17.04.2016, 20:30. Показов 5526. Ответов 5

Метки нет (Все метки)


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

Pascal
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
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 и на дальнейших кругах выполнения программы, не учитывается

Pascal
12
if t1 <> 'Хватит' then begin

данная строка? И сразу действие переходит к

Pascal
13
writeln('Введите числовой промежуток: начало и конец');read(a, b);

.
2. Вторая заключается в том, что после завершения выполнения программы словом “Хватит”, выдаёт ошибку:
PABCSystem.pas(4133) : Ошибка времени выполнения: Входная строка имела неверный формат.



0



318 / 208 / 162

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

Сообщений: 863

17.04.2016, 21:03

2

Цитата
Сообщение от SlavaSokolov
Посмотреть сообщение

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

Все работает.

Попробуйте исправить read на readln



1



SlavaSokolov

174 / 134 / 105

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

Сообщений: 719

17.04.2016, 21:23

 [ТС]

3

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

Pascal
1
Введите числовой промежуток: начало и конец

, и только после вывода этого сообщения я ввожу что делать, но нужно что бы это сообщение не выводилось до проверки значения t1.

Всё, большое спасибо, исправил на readln всё нормально работает, но почему ошибку то выводит при завершении?
PABCSystem.pas(4133) : Ошибка времени выполнения: Входная строка имела неверный формат.



0



318 / 208 / 162

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

Сообщений: 863

17.04.2016, 21:29

4

Цитата
Сообщение от capricornus CF
Посмотреть сообщение

Попробуйте исправить 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;

a:=random;

При использовании такого выражения и переменной типа integer возникает ошибка.

Делаем вывод

Функция random выдает значение типа real в диапазоне [0; 1)

a:=random;a:=random;

Значит для использования функции random и получения вещественного числа будет использовать переменную типа real.

Для получения целого числа воспользуемся присваиванием

a:=random(10); 

В данном случае будут случайно сгенерированы первые 10 неотрицательных чисел в промежутке от 0 до 9.

a:=random(10);

Чтобы получить целое число из промежутка [a; b], воспользуемся формулой:

Пусть нужно получить случайное число из промежутка [-2; 10]

Формула примет такой вид:

 -2 + random(10-(-2)+1) = -2 + random(13)

Если random(13) сгенерирует 0, то будет получена левая граница промежутка -2 + 0 = -2, если random(13) сгенерирует 12, то будет получена правая граница -2+12 = 10.

a:=-2+random(13);

Для получения случайного числа из промежутка также можно  воспользоваться функцией random с двумя аргументами – левой и правой границами промежутка (в среде Free Pascal работать не будет).

a:=random(-2,12);

Задача. Получить 30 случайных чисел из промежутка [-2;12] и вывести их на экран.

Воспользуемся циклом for с счетчиком x от 1 до 30, сгенерируем и выведем на экран 30 случайных чисел.

a:=random(-2,12);

Итоги

Как использовать функцию 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

Show hidden 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.

Добавить комментарий