• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Paskal, нужна ваша помощь

  • Автор темы Автор темы Only
  • Дата начала Дата начала

Only

Новые
Регистрация
24 Мар 2013
Сообщения
14
Реакции
0
Баллы
0
Paskal, нужна ваша помощь

Задача: Заполнить одномерный вещественный массив случайными числами; найти такие из них, которые входят в интервал [m, n] (произвольные m и n вводятся с клавиатуры).
Вот что я смог написать (заполнение массива случайными числами), дальше незнаю как описать цикл:
program t3;
var a: array[1..100] of integer;
i,k,m,n:integer;
begin
writeln('vvedite m');
readln(m);
writeln('vvedite n');
readln(n);
writeln('vvedite kol-vo elementov');
readln(k);
for i:=1 to k do
begin
a:=random(100);
write(a,' ');

Помогите пожалуйста дописать прграмму, очень нужна ваша помощь.)
 
Помогите пожалуйста дописать прграмму, очень нужна ваша помощь.)
Да пожалуйста:
Код:
var
 a: array[1..100] of [COLOR=Red][B]real[/B][/COLOR];
 i,k,m,n:integer;
begin
 write('vvedite m ');
 readln(m);
 write('vvedite n ');
 readln(n);
 write('vvedite kol-vo elementov ');
 readln(k);
 [COLOR=Red][B]Randomize;[/B][/COLOR]
 for i:=1 to k do
  begin
   a[i]:=random*100;
   write(a[i]:8:2);
 [COLOR=Red][B] end;[/B][/COLOR]
[COLOR=Red][B] writeln;
 writeln;
 for i:=1 to k do
  if (a[i]>m) and (a[i]<n) then write(a[i]:8:2);
 readln
end.[/B][/COLOR]
 
Что то не работает, точнее работает но выводит числа больше, выходящий, из интервала..
Так же не очень понял запись
a:=random*100; изменил её на:
a:=random(100); пробелма в том что нужно например если мы вводим М-30, а N-10 и число элементов например 5, он ныдавал 5 чисел входящих в интервал от 30 до 10, а прогрмамма выдаёт более большие числа, выходящие из интервала.
Что сделать? как исправить? что то не соображу(
 
Что то не работает, точнее работает но выводит числа больше, выходящий, из интервала..
Естественно, работает и оттестирована, иначе не была бы выложена.
Так же не очень понял запись a:=random*100; изменил её на: a:=random(100);
Так. Приплыли.
Смотрим условие задачи: "Заполнить одномерный вещественный массив". Так по какому такому праву Вы, сударь, самочинно упрощаете задачу, беря вместо вещественного массива целочисленный? Нет уж, не пойдет: сказано вещественный, значит так тому и быть. А генерация случайных вещественных (real) чисел осуществляется через оператор Random без параметров, возвращающий случайное вещественное число в интервале от 0 до 1. Будучи умноженным на 100, число преобразуется к интервалу от 0 до 100, оставаясь вещественным, как это и требуется в условии задачи.
пробелма в том что нужно например если мы вводим М-30, а N-10 и число элементов например 5, он ныдавал 5 чисел входящих в интервал от 30 до 10, а прогрмамма выдаёт более большие числа, выходящие из интервала.
Ну так кто же Вас знал, что Вы начнете вводить параметры интервала в албанском порядке, т.е. сначала больший, потом меньший? Я-то рассчитывал на естественный порядок: сначала меньшее, потом большее число, т.е. от m до n. Ну а так конечно ахинея получится. Тогда надо еще ветвление вводить типа "если m>n, то то-то, иначе то-то".
 
хорошо, допустим что так.
Тогда другой вопрос, при вводе m<n выдаётся..
rghost. ru /44739092/image. png
а при вводе m>n выводится то количество элементов которое было введено..
rghost. ru /44739175/image. png
в чём проблема? так же в обоих случаях элементы выходят из заданного промежутка.
В ссылках пришлось поставить пробелы..
 
хорошо, допустим что так.
Тогда другой вопрос, при вводе m<n выдаётся..
rghost. ru /44739092/image. png
а при вводе m>n выводится то количество элементов которое было введено..
rghost. ru /44739175/image. png
в чём проблема? так же в обоих случаях элементы выходят из заданного промежутка.
В ссылках пришлось поставить пробелы..
1. Увидеть Ваши картинки я так и не смог. Предлагаю руководствоваться инструкцией, изложенной здесь: http://www.tehnari.ru/f8/t32642/ .
2. Ниже приведен результат работы той программы, что я выложил. Первые две строки после ввода данных - исходный массив, третья - результат выборки. Как видите, всё работает и работает правильно. А уж что Вы там в своём коде накосячили, то мне неведомо.
 

Вложения

  • Only.webp
    Only.webp
    11.8 KB · Просмотры: 76
Отбой, увидел Ваш результат (один пробел не уничтожил). Так что Вас не устраивает? Вы задаете границы от 3 до 15, и программа находит единственный элемент массива (9.58), в этот интервал попадающий, каковой и выводит на экран. Что не так?
 

Вложения

  • Only_2.webp
    Only_2.webp
    4.5 KB · Просмотры: 76
Возможно вы просто не до поняли меня, и выводиться должны просто любые числа из этого массива, тоесть на место строки из которой программа выбирает принадлежение числа интервалу, там должны быть все числа принадлежащее ему, вот
 
Возможно вы просто не до поняли меня
Признаться, и до сих пор не понимаю.
и выводиться должны просто любые числа из этого массива, тоесть на место строки из которой программа выбирает принадлежение числа интервалу, там должны быть все числа принадлежащее ему, вот
Все "числа, принадлежащие интервалу" и выводятся. Или нужно исходную строку уничтожить и обязательно на ее место сажать выборку? Можно, но долго и противно. Или просто исходный массив не выводить? Так чем он мешает?
 
Тоесть сейчас при вводе количества элементов =4 выдаёт 4 значения: 38.08 53.98 9.58 44.56
а дложно выводиться любые 4 числа из интервала от m до n.
Например если m=3, n=15, количество элементов=4 программа должна вывести числа нипример 4 9 13 5
 
Тоесть сейчас при вводе количества элементов =4 выдаёт 4 значения: 38.08 53.98 9.58 44.56
а дложно выводиться любые 4 числа из интервала от m до n.
Например если m=3, n=15, количество элементов=4 программа должна вывести числа нипример 4 9 13 5
Нет, сударь, извините, но это Вы не так понимаете условие задачи. Я руководствовался формулировкой и фрагментом Вашего же кода. Я понимаю задачу так:
1. Генерируется массив из k случайных чисел, например, в диапазоне 0-100.
2. Задаются два числа-границы интервала m и n.
3. Из исходного массива выбираются те числа, которые попадают в этот интервал, и они выводятся на экран.
Давайте вернемся к формулировке:
Заполнить одномерный вещественный массив случайными числами; найти такие из них, которые входят в интервал [m, n]
то есть, как я считаю, производится выборка.
А так, как Вы понимаете (по-моему, неправильно) - пожалуйста:
Код:
var
 a: array[1..100] of real;
 i,k,m,n:integer;
begin
 write('vvedite m ');
 readln(m);
 write('vvedite n>m ');
 readln(n);
 write('vvedite kol-vo elementov ');
 readln(k);
 Randomize;
 for i:=1 to k do
  begin
   a[i]:=n+random*(m-n);
   write(a[i]:8:2);
  end;
 readln
end.
 
Да, вы оказались правы)), Спасибо)
 
Назад
Сверху