Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 16.05.2019
Сообщений: 46
1

Переписать программу с Pascal ABC в Turbo pascal

20.05.2019, 15:48. Показов 1150. Ответов 1
Метки нет (Все метки)

Здравствуйте помогите пожалуйста_)
Если не получится то можно задачу решить как-то по другому.
Сама задача звучит так:
Нужно написать программу на Паскале, которая выводит на экран гистограмму успеваемости учеников класса, например, по итогам контрольной работы. Исходные данные следует ввести в алфавитно-цифровом режиме работы.Например во время ввода исходных данных должно получиться так:

Введите исходные данные:
пятерок - 10
четверок - 15
троек - 7
двоек - 1

И в тоге должно получиться как на картинке.
И еще в программе должны быть комментарии поясняющие принцип работы.
Буду очень сильно признателен тому кто сможет ее сделать .

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
uses graphabc,crt;
const n=4;
      coL:array[1..n]of integer=(clyellow,clgreen,clblue,clblack);
      naz:array[1..n] of string=('пятерок','четверок','троек','двоек');
var oc:array[1..4]of integer;
    usp:array[1..4]of real;
    i:integer;
    mx,ms:real;//максимум и масштаб по вертикали
    sum:integer;
    x1,x2:integer;
    y1,y2:integer;
    w:integer;//ширина столбцов
    st:string;
begin
 writeln('Введите количество оценок 5,4,3,2');
 sum:=0;
 for i:=1 to 4 do
  begin
   readln(oc[i]);
   sum:=sum+oc[i];
  end;
 clrscr;
 hidecursor;
 setwindowsize(550,500);
 centerwindow;
 x1:=40;
 x2:=360;
 y1:=20;
 y2:=480;
 w:=round((x2-x1)/9);
 mx:=0;
 for i:=1 to 4 do
  begin
   usp[i]:=oc[i]/sum*100;
   if usp[i]>mx then mx:=usp[i]
  end;
 ms:=(y2-y1-50)/mx;
 rectangle(x1,y1,x2,y2);
 x1:=x1+w;
 for i:=1 to 4 do
  begin
   setbrushstyle(bsSolid);
   setbrushcolor(col[i]);
   rectangle(x1,y2-round(usp[i]*ms),x1+w,y2);
   rectangle(x2+10,y1+(2*i-1)*20,x2+70,y1+2*i*20);
   str(usp[i]:0:2,st);
   setbrushstyle(bsClear);
   textout(x1,y2-round(usp[i]*ms)-20,st);
   textout(x2+80,y1+(2*i-1)*20+5,naz[i]);
   x1:=x1+2*w;
  end;
  end.
Миниатюры
Переписать программу с Pascal ABC в Turbo pascal  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2019, 15:48
Ответы с готовыми решениями:

Список слов распечатать в алфавитном порядке. В Turbo Pascal или Pascal ABC
Дана непустая последовательность слов, в каждом из которых содержится от 1 до 6 заглавных латинских...

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record ...

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo Pascal, Pascal ABC,...

Различия трансляторов Pascal ABC.Net и Turbo/Borland Pascal
Пожалуйста, объясните различия между компиляторами Pascal ABC.Net и Turbo/Borland Pascal

1
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
20.05.2019, 16:35 2
Лучший ответ Сообщение было отмечено Animont как решение

Решение

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
uses graph,crt;
const n=4;
      coL:array[1..n]of integer=(12,10,9,14);{цвета оценок}
      naz:array[1..n] of char=('5','4','3','2');{написание оценок}
var oc:array[1..4]of integer; {массив количеств каждой оценки}
    usp:array[1..4]of real; {массив процентов оценок}
    i:integer;
    mx,ms:real;{максимум и масштаб по вертикали}
    sum:integer;{сумма всех оценок}
    x1,x2:integer;
    y1,y2:integer;
    w:integer;{ширина столбцов}
    st:string;
begin
 writeln('Введите количество оценок 5,4,3,2');
 sum:=0;
 for i:=1 to 4 do
  begin
   readln(oc[i]);
   sum:=sum+oc[i];{считаем сумму}
  end;
{переход в графический режим}
x1:=detect;
initgraph(x1,y1,'');
{координаты окна гистограммы}
x1:=40;
x2:=360;
y1:=20;
y2:=480;
w:=round((x2-x1)/9);
mx:=0;
for i:=1 to 4 do
 begin
  usp[i]:=oc[i]/sum*100;
  if usp[i]>mx then mx:=usp[i]
 end;
ms:=(y2-y1-50)/mx; {масштаб по вертикали}
rectangle(x1,y1,x2,y2);{окно гистограммы}
x1:=x1+w; {левый край первого столбца}
for i:=1 to 4 do
 begin
  setfillstyle(1,col[i]);{стиль закраски}
  bar(x1,y2-round(usp[i]*ms),x1+w,y2);{столбец гистограммы}
  bar(x2+10,y1+(2*i-1)*20,x2+70,y1+2*i*20);{ячейка в легенде}
  str(usp[i]:0:2,st);
  outtextXY(x1,y2-round(usp[i]*ms)-20,st);{подпись процентов}
  outtextXY(x2+80,y1+(2*i-1)*20+5,naz[i]);{подпись оценок в легенде}
  x1:=x1+2*w;{переход к новому столбцу}
 end;
readln
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2019, 16:35

Чем отличаются Turbo Pascal и Pascal ABC?
Чем отличаются турбо паскаль и abc? Просто у меня windows7 последняя теперь стоит, и там турбо...

Переобразовать pascal abc в turbo
Привет всем, помогите перевести текст из Pascal ABC в Turbo-Pascal. В ABC program grant; Uses...

Из множества выбрать три различные точки по условию -из Turbo Pascal во Free Pascal
Даны 2 множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг...

Нужен Turbo pascal или Free pascal на русском
Нужен Turbo pascal или Free pascal на русском языке, есть такой или нет? По книге обучаюсь по Turbo...


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

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

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