Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
7 / 7 / 2
Регистрация: 03.10.2010
Сообщений: 44
1

Модуль CRT, таблица/график. Близок к решению

11.03.2011, 20:14. Показов 2950. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, товарищи программисты.

Имеется условие:
Создать таблицу и распечатать график функции у(х) на отрезке 1 с шагом h. Ось Ох направить по вертикали вниз, а ось Оу – по горизонтали вправо. В каждой строчке напечатать кусочек оси Ох. Например, | – знак псевдографики - это ось Ох и * – в позиции соответствующей очередному значению функции. Использовать модуль CRT.

Т.е. нужно решить без графа.

Что пока получается:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Program lab3_2;
uses crt;
type
  mas=array [1..5] of real;
var
  i,kol,y,x,w,h:integer;
  k:real;
  xa,ya:mas;
function y1(xx:real):real;
  begin
    y1:=xx*xx+4
  end;
procedure tablica(l:integer; xx,yy:mas);
  var
    j,n:integer;
  begin
    gotoxy(1,1);
    write(#218);
    gotoxy(13,1);
    write(#191);
    gotoxy(1,(l+1)*2+1);
    write(#192);
    gotoxy(13,(l+1)*2+1);
    write(#217);
    for n:=1 to l+2 do
      for j:=1 to 5 do
        begin
          gotoxy(j+1,n*2-1);
          write(#196);
          gotoxy(j+7,n*2-1);
          write(#196)
        end;
    j:=1;
    while j<14 do
      begin
        for n:=1 to 2*l+1 do
          begin
            gotoxy(j,n+1);
            write(#179)
          end;
        j:=j+6
      end;
    gotoxy(7,1);
    write(#194);
    gotoxy(7,(l+1)*2+1);
    write(#193);
    gotoxy(4,2);
    write('x');
    gotoxy(10,2);
    write('y');
    for n:=1 to l do
      begin
        gotoxy(2,n*2+2);
        write(round(xx[n]));
        gotoxy(8,n*2+2);
        write(round(yy[n]))
      end
  end;
begin
  TextAttr:=15;
  clrscr;
  k:=-5;
  kol:=0;
  while k<5 do
    begin
      kol:=kol+1;
      xa[kol]:=k;
      ya[kol]:=y1(k);   
      k:=k+0.5
    end;
  tablica(kol,xa,ya);
  window(15,2,79,24);
  x:=lo(windmax)-lo(windmin);
  y:=hi(windmax)-hi(windmin);
  TextAttr:=16*7;
  clrscr;
  for i:=1 to y+1 do
    begin
      gotoxy(trunc(x/2),i);
      write(#179)
    end;
  for i:=1 to x-1 do
    begin
      if i<> trunc(x/2) then
        begin
          gotoxy(i,trunc(y/2)+1);
          write(#196)
        end
    end;
  write('y');
  gotoxy(trunc(x/2),hi(windmax));
  write('x');
  w:=trunc(x/40);
  i:=1;
  while i<11 do
    begin
      gotoxy(trunc(x/2)-4,trunc(y/2)+1+w);
      write(i:4);
      if i>0 then
        i:=i*(-1)
      else i:=(i-1)*(-1);
        if w>0 then
          w:=w*(-1)
        else w:=(w-1)*(-1)
    end;
  h:=trunc(y/4);
  i:=1;
    while i<6 do
      begin
        gotoxy(trunc(x/2)+h,trunc(y/2)+2);
        write(i);
        if i>0 then
          i:=i*(-1)
        else i:=(i-1)*(-1);
        if h>0 then
          h:=h*(-1)
        else h:=(h-trunc(y/4))*(-1)
      end;
  for i:=1 to 2 do
    begin
      gotoxy(trunc(x/2)+round(ya[i])*trunc(y/4),trunc(y/2)+1+round(xa[i]));
      write('*')
    end;
  readln
end.
Вроде бы похоже на то, что в учебнике, но что-то не пашет..

Я понимаю, что эта нудная задача и делать ее небыстро, но может попробовать подкорректировать код для стабильной работы? Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2011, 20:14
Ответы с готовыми решениями:

Модуль CRT
Ребята, помогите Please:help:: Надо зарисовать фон не используя графический модуль:wall: Я слышал...

Модуль Crt.
uses crt,dos; var i: integer; begin textBackGround(White); clrscr; ...

модуль Crt
Доброго времени суток! Помогите пожалуйста. Мне нужно переделать эту программу так, чтобы внутри...

Модуль CRT
У меня есть такого вида меню: uses crt; var s,s1,s2,s3,s4:string; x,y:integer; kod:char; begin...

1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.03.2011, 19:41 2
Pascal
1
2
type
  mas=array [1..5] of real;
А не мало 5? У Вас вроде в массивы записывается по 21 значению....

Добавлено через 4 часа 54 минуты
Вот так нарисовал, можете подделать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
uses crt;
const m:array[1..2] of string[5]=('X','F(x)');
var x1,y1:array[1..21] of real;
    x2,y2:array[1..21] of byte;
    x,y,h:real;
    n,i,j:integer;
begin
textbackground(0);
textcolor(15);
clrscr;
h:=0.5;
x:=-5;
n:=0;
while x<=5+h/2 do
 begin
  n:=n+1;
  x1[n]:=x;
  y1[n]:=x*x+4;
  x:=x+h;
 end;
{рисование шапки таблицы}
{верхняя рамка}
write(#201);
for i:=1 to 2 do{количество колонок}
 begin
  for j:=1 to 6 do write(#205);{ширина колонок}
  if i<2 then write(#209)else write(#187);
 end;
writeln;
write(#186);
{середина}
for i:=1 to 2 do
 begin
  for j:=1 to 6 do write(' ');
  if i<2 then write(#179) else write(#186);
 end;
writeln;
write(#199);
for j:=1 to 6 do write(#205);
write(#216);
for j:=1 to 6 do write(#205);
write(#182);
{подписи в шапке}
gotoXY(1,whereY-1);
for i:=1 to 2 do
 begin
  gotoXY(6*(i-1)+3,whereY);
  write(m[i]);
 end;
for i:=1 to n do
 begin
  gotoXY(1,3+i);
  write(#186,x1[i]:5:1,' ',#179,y1[i]:5:1,' ',#186);
 end;
{нижняя рамка}
gotoXY(1,whereY+1);
write(#200);
for i:=1 to 2 do
 begin
  for j:=1 to 6 do write(#205);
  if i<2 then write(#207)else write(#188);
 end;
{Заголовок}
gotoXY(30,1);
write('Таблица вычисления и график функции y=x^2+4 ');
gotoXY(38,2);
writeln('на интервале x=[-5..5]');
window(17,3,79,24);
textbackground(7);
textcolor(black);
clrscr;
for i:=1 to 21 do
 begin
  gotoXY(1,whereY);
  if odd(i) then writeln(x1[i]:2:0,#180)
  else writeln('  ',#179);
 end;
gotoXY(4,11);
for i:=1 to 58 do
if odd(i)then write(#196)
else write(#194);
gotoXY(4,13);
for i:=1 to 29 do
if odd(i) then write(i:4);
for i:=1 to 21 do
 begin
  gotoXY(round(y1[i]*2)+5,11+round(x1[i]*2));
  write('*');
 end;
readln
end.
1
12.03.2011, 19:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2011, 19:41
Помогаю со студенческими работами здесь

Модуль Crt....
немогу никак доделать задачку ... &quot;. Создать программу «Электронно - музыкальный инструмент»...

модуль CRT
не удивляйтесь вопросу, но мне очень нужно узнать ,что-то дополнительно (интересное) о модуле CRT....

Модуль CRT
Нарисовать на экране несколько вложенных друг в друга разноцветных прямоугольников.

Модуль CRT
Задание: 1. Напишите 3 подпрограммы, каждая из которых будет выдавать заданную ей строку в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru