Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста
Имя
Сообщение << Старые топики   Новые топики >>
Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста - 2009-11-16 10:23:38.490000   
famous4el

Сообщений: 1
Оценки: 0
Присоединился: 2009-11-16 10:13:24.816666
Даны целые числа a1, … , a30. Пусть M – наибольшее, а m – наименьшее из a1, … , a30. Получить в порядке возрастания все целые из интервала (M, m), которые не входят в последовательность a1, … , a30 .

Без массива тут никуда это я понимаю….самый бред это то что числа которые не входят в последовательность а1…..а30 надо выписать в ручную….или сделать это так, что бы программа сама их написала….. вообще в шоке, меня преподша грузит по паскалю жестоко то и дело задаёт самую бредовую задачу…..Буду благодарен если окажете милость разобраться в задаче, спасибо заранее
Post #: 1
RE: Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста - 2009-11-16 10:52:51.336666   
Login_hochu

Сообщений: 1471
Оценки: 0
Присоединился: 2007-07-15 14:19:23.423333
1 Ввести массив с консоли или получить другим способм
2 Найти M и m
3 В интервале m → M с шагом 1 перебирать все числа. Если число не входит в массив, то вывод на печать.
Самому писать лень некогда, но с удовольствием помогу найти ошибки в Вашем коде.

ЗЫ Для решения задач на Паскале есть прикрепленный топик.
Добро пожаловать на форум.
Post #: 2
RE: Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста - 2009-11-17 04:20:58.056666   
tymowka

Сообщений: 3
Оценки: 0
Присоединился: 2009-11-07 00:37:33.080000
quote:

ORIGINAL: Login_hochu

1 Ввести массив с консоли или получить другим способм
2 Найти M и m
3 В интервале m → M с шагом 1 перебирать все числа. Если число не входит в массив, то вывод на печать.
Самому писать лень некогда, но с удовольствием помогу найти ошибки в Вашем коде.

ЗЫ Для решения задач на Паскале есть прикрепленный топик.
Добро пожаловать на форум.

Соглашусь с Вами. Только предлагаю не искать M и m, а отсортировать масив и тогда первый и последний элементы и будут M и m. Так проще дальше будет перебирать все числа.

quote:

ORIGINAL: famous4el

Даны целые числа a1, … , a30. Пусть M – наибольшее, а m – наименьшее из a1, … , a30. Получить в порядке возрастания все целые из интервала (M, m), которые не входят в последовательность a1, … , a30 .

Без массива тут никуда это я понимаю….самый бред это то что числа которые не входят в последовательность а1…..а30 надо выписать в ручную….или сделать это так, что бы программа сама их написала….. вообще в шоке, меня преподша грузит по паскалю жестоко то и дело задаёт самую бредовую задачу…..Буду благодарен если окажете милость разобраться в задаче, спасибо заранее

Я предлагаю Вашему вниманию самый понятный с точки зрения смысла, но не самый оптимальный алгоритм.
Во-первых, числа вводятся последовательно в массив с клавы. Можно задавать рандомно, можно читать из файла - надо подправить, но не знаете как? Обращайтесь. Затем их сортируем. Первый и последний элементы и будут M и m (Надеюсь вы знакомы с сортировками, если нет, можно и без этого обойтись, но тогда дальнейшая часть программы изменится. Если знакомы с другим видом сортировки, то можете заменить эту часть кода на более Вам понятную). Затем последовательно перебираем все числа от m+1 до M-1 и, если такого числа нет в массиве, выводим на экран.
Эта часть программы оптимальней реализуется через множества, но всё же думаю, что такая програмная реализация Вам понятнее. А вот собственно и код:

program z_1; var a: array [1..30] of integer; i,j,c:integer; tr:boolean; begin for i:=1 to 30 do begin write('a[',i,'] = '); readln(a[i]); end; for i:=1 to 29 do for j:=i+1 to 30 do if a[i]&gt;a[j] then begin c:=a[j]; a[j]:=a[i]; a[i]:=c; end; for i:=a[1]+1 to a[30]-1 do begin tr:=false; for j:=2 to 29 do if i=a[j] then tr:=true; if tr=false then write(i,' '); end; end.
Мда, если Вы это называете грузит жестоко, то Вам повезло, что Вы не учились у нас =)

А вообще, ты зря здесь эту тему опубликовал. Правила нарушаешь:

quote:

Запрет на просьбы о решении домашних, лабораторных, курсовых и прочих работ. цель форума - взаимовыгодная помощь в вопросах программирования, а не поощрение лени и невежества. есть разделы форума, посвящённые работе за деньги, и есть разделы, посвящённые халяве. Этот раздел к ним не относится.

Вот есть специальные разделы, где можно попросить помочь решить свою задачу:
http://forum.xakep.ru/m_1622287/tm.htm
http://forum.xakep.ru/m_1439200/tm.htm
Post #: 3
RE: Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста - 2009-11-21 15:18:48.760000   
faza09

Сообщений: 259
Оценки: 0
Присоединился: 2009-05-18 22:19:25.963333
помню нам тоже любили задать такую чушь на дом))
Post #: 4
RE: Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста - 2009-11-30 12:43:28.973333   
ydzero

Сообщений: 100
Оценки: 0
Присоединился: 2008-11-06 15:38:02.560000
uses crt; var a:array[1..30] Of integer; min,max,i,j:integer; f:boolean; begin clrscr; randomize; a[1]:=50-random(100); min:=a[1]; max:=a[1]; {Вводим массив и ищем минимум и максимум.} for i:=2 to 30 do begin a[i]:=50-random(100); if min&gt;a[i] then min:=a[i]; if max&lt;a[i] then max:=a[i]; end; {Для визуальности показываем массив.} for i:=1 to 30 do write(a[i],' '); readln; {Для визуальности показываем минимум и максимум.} writeln('Max=',max,' Min=',min); readln; {Выводим целые, которые не входят в массив.} for i:=min to max do begin f:=true; for j:=1 to 30 do if i=a[j] then f:=false; if f then write(i,' '); end; readln; end.
Можно через один цикл, но не так понятно будет.
Post #: 5
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Уже 2 месяца пытаюсь решить эту задачу...взгляните пожалуйста







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.