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

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

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

> Процедуры и функции модуля Crt и Dos
Вадим
сообщение 13.10.2004 20:07
Сообщение #1





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

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


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

Сообщение отредактировано: Вадим - 13.10.2004 20:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 19)
xds
сообщение 14.10.2004 0:07
Сообщение #2


N337
****

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

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


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


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


Пионер
**

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

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


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


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


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

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

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


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

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


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


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

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

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


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


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


Новичок
*

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

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


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


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

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

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


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


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


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

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

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


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

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


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





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

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


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


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

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

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


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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.10.2004 21:56
Сообщение #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 - 4.11.2010 11:54
 К началу страницы 
+ Ответить 
Amro
сообщение 17.10.2004 22:08
Сообщение #12


Пионер
**

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

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


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


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


Гость






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


Гость






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

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

Та же беда...
 К началу страницы 
+ Ответить 
Гость_Вадим
сообщение 21.10.2004 21:19
Сообщение #15


Гость






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


Гость






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


{$N+}

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


Новичок
*

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

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


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


Michael_Rybak
*****

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

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


Код в студию.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bast
сообщение 7.12.2007 16:56
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.12.2007 21:09
Сообщение #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

 



- Текстовая версия 20.07.2025 14:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"