0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
1

Объяснение принципа действия программы

14.04.2009, 17:11. Показов 1909. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Объясните пожалуйста как действует данная программа:
Код
PROGRAM vz_ub;
USES CRT;
LABEL 1;
CONST n=15;
TYPE
t = ARRAY [1..n] OF integer;
VAR
A : t;
i,max,imax,v : integer; {счетчик, возр. посл-ть , № элемента возр.посл-ти, промеж. переменная}
min,imin,u : integer; {убывающая последовательность , № эл-та убыв. посл-ти, промеж. переменная}
BEGIN
CLRSCR;
WRITELN('Enter ',n,' numbers 0<=A[i]<1000 :' );
FOR i:=1 TO n DO
READ(A[i]);
v:=0;
u:=0;
FOR i:=1 TO n-1 DO
IF A[i]<A[i+1] THEN 
BEGIN
v:=v+1;
u:=0;
IF max<v THEN
BEGIN
max:=v;
imax:=i+1;
END;
END
ELSE
IF A[i]>A[i+1] THEN
BEGIN
u:=u+1;
v:=0;
IF min<u THEN
BEGIN
min:=u;
imin:=i+1;
END;
END;
WRITELN (' vozrastaut ');
FOR i:=imax-max TO imax DO
WRITE(' ',A[i],',');
WRITELN ;
WRITELN (' ubivaiut ');
FOR i:=imin-min TO imin DO
WRITE(' ',A[i],',');
READKEY;
END.
Интересует вот этот кусок:
Код
v:=v+1;
u:=0;
IF max<v THEN
Зачем зануляется переменная u, и что делаеться этим выражением - v+1 ... max<v !?

Программа выполняет следующме задачи: выводит на экран максимально длинные - строго возрастающие подпоследовательности чисел;строго убывающие подпоследовательности чисел.

Очень нужна помощь, помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2009, 17:11
Ответы с готовыми решениями:

Объяснение программы
Имеется код: const n = 9; m = 19; type mas = array of integer; var

Объяснение условия программы
Приветствую. Помогите пожалуйста объяснить код программы, начиная с 20-й строки. До этого момента...

Объяснение программы
объясните словесно те строки которые выделил program tt; cоnst nmax = 100; type tarray=array...

Нужно объяснение кода программы
Доброго времени суток! написала программу, посредством соединения нескольких простых в одну...

17
4 / 4 / 1
Регистрация: 15.04.2009
Сообщений: 63
15.04.2009, 22:32 2
А условия задания у тебя нету?
0
0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
16.04.2009, 21:41  [ТС] 3
Условие заключается в следующем:
Дан целочисленный массив А из N элементов (0<N<100; 0<=A[i]<1000). Выделить и напечатать максимально длинные:
- строго возрастающие подпоследовательности чисел;
- строго убывающие подпоследовательности чисел;

Добавлено через 13 часов 10 минут 46 секунд
Хотел отредактировать, чтобы была подсветка чинтаксиса но не нашел иконки редактирования =(
0
4 / 4 / 1
Регистрация: 15.04.2009
Сообщений: 63
17.04.2009, 13:27 4
В общем боюсь ошибиться я в этом не спец, и боюсь не праильновыразить мысль... но всётаки попроую думаю вот для чего: когда мы присваиваем u:=0 то это означает что программа покажет самую длинную последовательность убывающих чисел, точее именно с того момента когда они нчали убывать, если такимы присвоим u:=3 то программа выведет на экран ещё 3 числа которые находятся левее от того момента когда началось убывание... а условие v:=v+1 max<v это по моему ознчет то что при каждом v+1 если число увеличивается то это число максимальное, до того момента пока max не будет меньше следующего v...


по моему накатал чушь) надеюсь правильно
1
14 / 14 / 2
Регистрация: 14.04.2009
Сообщений: 66
17.04.2009, 14:06 5
v=v+1 считает кол-во возрастаний подряд. u=u+1 cчитает колво убываний подряд.
Пример: Последовательность (987-) -8 (765)
1 скобка это последовательность убывающая. u=2; но тут сделует число 8 которое свидетельствует о завершении убывания и о начале маленького возрастания 7--8. v=1; но тут начинается новое убывание и сейчас U должно равняться 1, но если бы мы не обулили его, то оно сейчас бы было равным 2+1=3; Вопросы есть?
1
4 / 4 / 1
Регистрация: 15.04.2009
Сообщений: 63
17.04.2009, 14:10 6
Ы... надо мне больше сидеть за паскалём
0
0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
17.04.2009, 16:43  [ТС] 7
Да, можно вопросик:
А зачем тогда max<v это условие? т.е. откуда он берет это max значение? А потом присваивает опять же max:=v т.е. он получил число(?) и потом приравнял к тому же числу.
Спасибо!
0
14 / 14 / 2
Регистрация: 14.04.2009
Сообщений: 66
17.04.2009, 17:24 8
он находит самую длинную последовательость-max. Т.е. последовательность 98(9876)98. В скобках последовательность максимальной длинны, и если будет далее последовательность длиннее нашей скобки например 654321 то она станет максимальной(мах)
1
0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
18.04.2009, 10:35  [ТС] 9
С этим все ясно благодарю за разъяснение!
imax:=i+1, если я правильно понял, то этой коммандой , он перебирает числа этой последователоьности, так?
-------------
И еще: FOR i:=imax-max TO imax DO в данном случае он сортирует последовательность?
Спасибо!
0
0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
19.04.2009, 12:02  [ТС] 10
С этим вроде разобрался!
Я тут набросал алгоритм, но неуверен правильно ли
Проверьте если несложно.
Спасибо!
Миниатюры
Объяснение принципа действия программы  
0
14 / 14 / 2
Регистрация: 14.04.2009
Сообщений: 66
19.04.2009, 12:06 11
Я в блок схемах не очень ). Но мне кажется что если у тебя if... then... else то 2 пути от if влево если then и в право если else.
1
4 / 4 / 1
Регистрация: 15.04.2009
Сообщений: 63
19.04.2009, 13:15 12
На сколько я знаю блок схемы, то могу сказать одно что она у тебя соствлена не правильно, у тебя не показано 4ёх циклов FOR, потом в блоках IF обычно 2 плеча выходят...
1
0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
19.04.2009, 14:38  [ТС] 13
А куда цикл запихнуть? Он выделяется отдельно или входит в другой? Как это показать?
А насчет отвлетвлений, например здесь:
IF A[i]<A[i+1] THEN
BEGIN
v:=v+1;
u:=0;
Здесь ведь нет else значит, если условие невыполняется программа закрывается, как это показать на схеме? То есть сразу вести на стоп это отвлетвление?
Спасибо!

Добавлено через 5 минут 48 секунд
Вы уж извените неуча, просто, я вечерник, лекция по пакалю была всего одна... Поэтому сразу понять все было непосилам. А потом эти лабы бесконечные, нет чтобы обьяснить, ведь все нормальные люди разделяют материал, а не засовывают в одну единственную лекцию
0
14 / 14 / 2
Регистрация: 14.04.2009
Сообщений: 66
19.04.2009, 16:06 14
Вот схема, но так как я со схемами не очень тут могут быть неправельно фигуры (квадраты, ромбы, круги). Тут показан смысл IF.
Миниатюры
Объяснение принципа действия программы  
1
4 / 4 / 1
Регистрация: 15.04.2009
Сообщений: 63
19.04.2009, 18:09 15
Я нарисовал блок схему, а вот как её сюды воткнут не знаю если тебе она нужна стукни в асю 445243055, или объясните как еёсюды воткнуть
0
14 / 14 / 2
Регистрация: 14.04.2009
Сообщений: 66
19.04.2009, 18:19 16
Цитата Сообщение от КЭиБ Посмотреть сообщение
объясните как еёсюды воткнуть
там где кнопка быстрый ответ рядом есть расширенный режим. туда нажимаеш и находиш кнопку управление файлами.
1
4 / 4 / 1
Регистрация: 15.04.2009
Сообщений: 63
19.04.2009, 18:43 17
Вот что то типа того, по моему....
Вложения
Тип файла: doc Документ Microsoft Word (6).doc (33.5 Кб, 12 просмотров)
1
0 / 0 / 0
Регистрация: 14.04.2009
Сообщений: 22
19.04.2009, 20:36  [ТС] 18
ааа, спасибо большое!
Без вас, право, не справился бы...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2009, 20:36
Помогаю со студенческими работами здесь

Объяснение программы
uses crt; type ar = array of integer; var arr : ar; i,count:integer; sr:real; begin...

Объяснение результата работы программы
В результате этой программы выведется 3303 3003 Нужно объяснить как получился этот ответ....

объяснение действия полевика
почитал чего нашёл про применение полевиков. остался такой вопрос: как наиболее просто объяснить,...

Объяснение программы
Доброго дня! Нашёл вот такую игру с демонстрацией ИИ. Морской бой с интерфейсом на C++. Всё...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru