IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Процедуры и функции модуля Crt и Dos
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Сделайте кто лабу.
Составить программу вывода на экран окна, которое условно "разбито" на вертикальные столбцы. Верхние части столбцов окрашены одним фоном, нижние - другим. Граница раздела фонов столбцов формирует синусоиду произвольной амплитуды с периодом, равным ширине окна. При нажатии клавиши "Ввод" начинают изменяться соотношения заполнения столбцов разными фонами, т.е. создается эффект "бегущей" слева направо волны.

Сообщение отредактировано: Вадим -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


А волшебное слово?


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


А он скажет, если сделаешь :D


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Сделайте кто лабу.

Какая наглость! angry.gif angry.gif
IP я твой запомню ....


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Oleg_Z, терпимей... ;)


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Не - насамом деле такие посты убивают... Я плохо представляю: о чем задумывается человек постящий такие посты? Что здесь сидят маньяки-кодеры которым абсолютно не чего делать и они просто деруться изза возможности порешить какую нить задачу?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


смотри а Анекдотах форму приказа lol.gif


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Цитата
Что здесь сидят маньяки-кодеры которым абсолютно не чего делать и они просто деруться изза возможности порешить какую нить задачу?

сознаюсь, бывают у меня подобные состояния rolleyes.gif


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Чё вы все так сразу налетели?
Я же вас не заставляю, а прошу, пожалуйста, помочь написать лабу. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Действительно, что все налетели?
Ну у меня наверное как всегда было гадкое настроение, но у вас то?
Так, Вадим, тут надо использовать функции:
gotoXY (перевод курсора)
и процелуры изменения цвета шрифта и фона...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Вадим

Это самый первый набросок. Его еще можно улучшать и улучшать... ;)


{$N+}
Uses Crt;

Const
 numBars = 80;
 TimeDelay = 12000; { Задержка перед перерисовкой очередного кадра }

Var
 bars: Array[1 .. numBars] of Word;

 currDegree: Double;
 T: Word;
 i, j: Integer;

Const
 Change: Boolean = False;

Begin
 ClrScr;
 For i := 1 To numBars Do
   Begin
     { Здесь я пытаюсь изобразить синусоиду }
     currDegree := Pred(i) * (360 / numBars);
     bars[i] := Trunc(13 + 12 * sin(currDegree / (180 / Pi)));
   End;


 While True Do
   Begin

     For j := 1 To numBars Do
       For i := 1 To 24 Do
         Begin
           If i > bars[j] Then TextColor(Red) Else TextColor(Yellow);
           GotoXY(j, i); Write(#176)
         End;

     If Change Then
       Begin
         { Если уже был нажат Enter }
         Delay(TimeDelay);

         T := bars[1];
         Move(bars[2], bars[1], Pred(numBars)*SizeOf(Word));
         bars[numBars] := T;

         { Для выхода из программы - Esc }
         If KeyPressed Then
           If ReadKey = #27 Then Break
       End
     Else
       Begin
         { Сразу после отрисовки статичной картинки - ждем нажатия на Enter }
         While not KeyPressed Do;
         Change := (ReadKey = #13)
       End;
   End;

 ClrScr;
End.



Исправлено

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


Прикольно, тока директиву сопроцес -ра надо включить {$N+}


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Так я и не выключал lol.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
Цитата Что здесь сидят маньяки-кодеры которым абсолютно не чего делать и они просто деруться изза возможности порешить какую нить задачу?

сознаюсь, бывают у меня подобные состояния

Та же беда...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Volvo, после этой строчки выдаётся ошибка 116
currDegree := Pred(i) * (360 / numBars);
Объясни, пожалуйста, в чём проблема.
Спасибо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Ну Amro уже написал:
первой строкой программы добавь


{$N+}

 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский

Репутация: -  0  +


Помогите переделать, что бы волна шла в другую сторону. Я сделала, но у меня таогда кусок синусоиды отрубаеться
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Код в студию.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский

Репутация: -  0  +


{$N+}
Uses Crt;

Const
numBars = 80;
TimeDelay = 12000; { Задержка перед перерисовкой очередного кадра }

Var
bars: Array[1 .. numBars] of Word;

currDegree: Double;
T: Word;
i, j: Integer;

Const
Change: Boolean = False;

Begin
ClrScr;
For i := 1 To numBars Do
Begin
{ Здесь я пытаюсь изобразить синусоиду }
currDegree := Pred(i) * (360 / numBars);
bars[i] := Trunc(13 + 12 * sin(currDegree / (180 / Pi)));
End;


While True Do
Begin

For j := 1 To numBars Do
For i := 1 To 24 Do
Begin
If i > bars[j] Then TextColor(Red) Else TextColor(Yellow);
GotoXY(j, i); Write(#176)
End;

If Change Then
Begin
{ Если уже был нажат Enter }
Delay(TimeDelay);

T := bars[1];
Move(bars[2], bars[1], Pred(numBars)*SizeOf(Word));
bars[numBars] := T;

{ Для выхода из программы - Esc }
If KeyPressed Then
If ReadKey = #27 Then Break
End
Else
Begin
{ Сразу после отрисовки статичной картинки - ждем нажатия на Enter }
While not KeyPressed Do;
Change := (ReadKey = #13)
End;
End;

ClrScr;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Ну, неужели так сложно догадаться, что надо всего лишь "прокрутить" массив в другом направлении:

Заменить кусок:
        T := bars[1];
Move(bars[2], bars[1], Pred(numBars)*SizeOf(Word));
bars[numBars] := T;

вот на это:
        T := bars[numBars];
Move(bars[1], bars[2], Pred(numBars)*SizeOf(Word));
bars[1] := T;

 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.01.2021 16:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name