Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ulyana_
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 19
1

Как вывести число, ближайшее к X?

23.03.2016, 15:53. Просмотров 952. Ответов 3
Метки нет (Все метки)

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
31
32
33
34
35
36
37
38
39
const n=10;
var a:array [1..n] of integer;
    j,i,k,x,c,m,L,R,d:integer;
begin
writeln('Массив: ');
begin
for i:=1 to n do
 begin
  A[i]:=random(30)+1;
  write(A[i],' ');
 end;
 writeln;
 for i:= 1 to N-1 do 
 for j:= 1 to n-1 do
 if a[j]>a[j+1] then begin
  m:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=m;
 end;
 writeln;
  writeln('Отсортированный массив: ');
for i:=1 to n do
write(A[i],' ');
writeln;
end;
writeln('Введите число Х:');
readln(x);
L:= 1; R:= N + 1; { начальный диапазон }
while L < R-1 do begin
c:= (L+R) div 2; { нашли середину }
if X < A[c] then
R:= c { изменить диапазон }
else L:= c;
end;
if A[L] = X then
writeln('Число ',X,' найдено')
else
writeln('Число ',X,' не найдено');
end.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2016, 15:53
Ответы с готовыми решениями:

Ближайшее число
Пользователь вводит натуральное число n (0&lt;n&lt;32750) и через пробел цифру с. Программа выводит...

Ближайшее число Фибоначчи
Задано натуральное число N. Напишите программу, которая находит ближайшее к N число Фибоначчи. Если...

Найти ближайшее к X натуральное число, кратное N
Привет всем! Такая проблемка...задали контрошу по информатике, нужно написать задачку, а у меня с...

Найти ближайшее меньшее, чем заданное число
Доброго времени суток. Как задать этот бесконечный ряд чисел и сравнить потом с заданым числом? ...

Файл: найти среднее арифметическое, найти число, ближайшее к среднему арифметическому
с помощью датчика случайных чисел создать файл из 40 целых чисел.вывести все четные числа из него....

3
Puporev
Модератор
58150 / 44234 / 30551
Регистрация: 18.05.2008
Сообщений: 105,913
23.03.2016, 18:14 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
31
32
33
34
35
36
37
38
39
const n=10;
var a:array [1..n] of integer;
    j,i,x,c,m,l,r:integer;
begin
writeln('Массив: ');
for i:=1 to n do
 begin
  a[i]:=random(30)+1;
  write(a[i]:3);
 end;
writeln;
for i:= 1 to n-1 do
for j:= 1 to n-1 do
if a[j]>a[j+1] then
 begin
  m:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=m;
 end;
writeln('Отсортированный массив: ');
for i:=1 to n do
write(a[i]:3);
writeln;
writeln('Введите число Х:');
readln(x);
l:=1;r:=n;
for i:=1 to n do
 begin
  c:=(l+r) div 2;
  if a[c]>x then r:=c
  else l:=c;
 end;
if l<>r then
 begin
  if abs(a[r]-x)<abs(a[l]-x) then write(a[r])
  else write(a[l]);
 end
else write(a[l]);
end.
1
a1d4r
43 / 43 / 66
Регистрация: 22.07.2015
Сообщений: 191
23.03.2016, 19:23 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const
  n = 10;
 
var
  a: array[1..n] of integer;
  j, i, x, c, m, L, R: integer;
 
begin
  writeln('Массив: ');
  begin
    for i := 1 to n do
    begin
      A[i] := random(30) + 1;
      write(A[i], ' ');
    end;
    writeln;
    for i := 1 to N - 1 do 
      for j := 1 to n - 1 do
        if a[j] > a[j + 1] then begin
          m := a[j];
          a[j] := a[j + 1];
          a[j + 1] := m;
        end;
    writeln;
    writeln('Отсортированный массив: ');
    for i := 1 to n do
      write(A[i], ' ');
    writeln;
  end;
  writeln('Введите число Х:');
  readln(x);
  L := 1;
  R := N + 1; { начальный диапазон }
  while L < R - 1 do 
  begin
    c := (L + R) div 2; { нашли середину }
    if X < A[c] then
      R := c { изменить диапазон }
    else L := c;
  end;
  if A[L] = X then
    writeln('Число ', X, ' найдено')
  else
    if (L < N) and (X - A[L] > A[L + 1] - X) then writeln('Число, ближайшее к ', X, ' - ', A[L + 1])
    else writeln('Число, ближайшее к ', X, ' - ', A[L])
end.
1
Puporev
Модератор
58150 / 44234 / 30551
Регистрация: 18.05.2008
Сообщений: 105,913
23.03.2016, 21:07 4
Объединил 2 темы-дубли.
0
23.03.2016, 21:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 21:07

Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число »,« положительное нечетн
Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число...

Узнайте ближайшее число к среднему арифметическму целых чисел
Дана последовательность С N целых чисел. Числа вводятся с помощью генератора случайных чисел в...

Как вывести число, выпадающее максимальное число раз?
Дано n чисел в диапозоне от 20 до 120. Какие числа выпадают максимальное количество раз? Как можно...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.