Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39

Форматирование текста в паскале

30.03.2020, 09:40. Показов 1539. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять как строить хорошие таблички... Мучаюсь с выравниванием, до все равно ничего не выходит...
Пожалуйста, объясните алгоритм создание подобных матриц, и по возможности исправьте код.

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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
uses 
crt;
 
type
 
  From = (Prag, Mos, Blad,Soch,Ban);
  Mouth = (yan, fev, mart, apl,may,iul,iun,avg,sep,okt,noi,dek);
  Vec = array [0..4] of real;
  Name1 = array [0..4] of integer;
  
  Fin=record
  znach:real;
  index:integer;
  
  
end; 
Fin2 = array  [0..4] of Fin; 
  
var
  a: array [Prag..Ban, yan..dek] of integer;
  b:Fin2;
  name:Name1;
  i: From;
  j: Mouth;
  per:integer;
  i2:integer;
  
Procedure Sort ( var b: fin2 );
var 
 
i,j,k2:integer;
k:real;
begin
  
k:=0;
 
for i:=1 to 4 do begin
  name[i]:= name[i]+1;
end;
 
for i:=0 to 3 do begin
  {Внутренний цикл уже перебирает элементы и сравнивает между собой.}
  for j:=0 to 3-i do begin
    {Если элемент, больше следующего, то меняем местами.}
    if b[j].znach>b[j+1].znach then begin
      k:=b[j].znach;
      b[j].znach:=b[j+1].znach;
      b[j+1].znach:=k;
      
      k2:=b[j].index;
      b[j].index:=b[j+1].index;
      b[j+1].index:=k2;
      
    end;
  end;
end;
 
 
 
 
end;  
 
  
function DetToStr(i: integer): string;
{converting detail from ordinal type to it's string name}
begin
  case i of
    0: DetToStr := 'Прага';
    1: DetToStr := 'Москва';
    2: DetToStr := 'Владивосток';
    3: DetToStr := 'Сочи';
    4: DetToStr := 'Бангкок';
  end;
end;
 
 
 
 
 
function FcToStr(rc: Mouth): string;
begin
  case ord(rc) of
    0: FcToStr := 'Январь';
    1: FcToStr := 'Фервраль';
    2: FcToStr := 'Март ';
    3: FcToStr := 'Апрель';
    4: FcToStr := 'Май';
    5: FcToStr := 'Июль';
    6: FcToStr := 'Июнь';
    7: FcToStr := 'Август';
    8: FcToStr := 'Сентябрь';
    9: FcToStr := 'Октярь';
    10: FcToStr := 'Ноябрь'; 
    11: FcToStr := 'Декабрь';   
  end;
end;
 
 
 
begin
  
  
  Writeln('ГОРОД          Я  —  Ф  —  М  —  А  —  М  —  И  —  И  —  А  —  С  —  О  —  Н  —  Д                      Средняя');
  
  
  
 
  Randomize;
  {input elements of matrix t, using ordinal types as indexes}
  
  
  for i := Prag to Ban do begin // вот тут начинается попа боль
    
    Write(DetToStr(ord(i))+6*#0);
    b[ord(i)].index:=ord(i);
    
    for j := yan to dek do begin
      
      if  j in [yan, fev, dek] then 
      a[i,j]:=random(30)-30
      
       else if j in [mart, apl,may] then 
        a[i,j]:=random(23)-10
     
       else if j in [iul,iun,avg] then 
        a[i,j]:=random(20)+15
    
       else if j in [sep,okt,noi] then 
        a[i,j]:=random(15)-10;       
        
       write(a[i,j]:5 );
       
       b[ord(i)].znach:=b[ord(i)].znach+a[i,j];
       
     end;
     
     b[ord(i)].znach:=b[ord(i)].znach/12;
    Write((b[ord(i)].znach):30);
     Writeln();
     
    end;
    
Sort(b);
Writeln('Нажмите для сортировки люббую клавишу');
readkey();
ClrScr;
 
Writeln('Сортировка по возрастанию среднегодовой температуры');
 
 
Writeln();
per:=0;
for i2:=0 to 4 do begin
  
per:=b[i2].index;
writeln(DetToStr(per)+' '+b[i2].znach)
 
 
end;
    
    
    
readkey();
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.03.2020, 09:40
Ответы с готовыми решениями:

Форматирование исходного кода программы на Паскале
Текст программы на Паскале хранится в файле на диске. Распечатать на экране текст программы, таким образом, чтобы в каждой строке...

RichEdit или RTF форматирование текста, а лучше HTML форматирование
Привет формучани. Подскажите бесплатный компонент который позволил бы выводить текст в формате RTF или HTML. Очень хорошо подходит TMS...

Как работает join и split в Паскале? И есть ли такие аналоги Питону в Паскале?
a=input() #из ' Hello world ' делаю 'Hello, world' a.strip(' ') a=', '.join(a.split(' ')) В Паскале как такое сделать?

6
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
30.03.2020, 11: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
type
  TCity = (Prag, Mosc, Vlad, Soch, Bang);
  TMonth = 1..12;
  TValue = record
    value: Integer;
    index: TCity;
  end;
  TValues = array [TCity] of TValue;
const
  WC=11; WM=5; WA=8; WAD=2; CityH='Город';
  CityS: array [TCity] of String[11] = (
    'Прага', 'Москва', 'Владивосток', 'Сочи', 'Бангкок');
  MonthS: array [TMonth] of String[3] = (
    'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек');
procedure Sort(var v: TValues);
var
  i, j: TCity;
  t: TValue;
begin
  for i:=Low(v) to Pred(High(v)) do
    for j:=Succ(i) to High(v) do
      if v[i].value>v[j].value then begin
        t:=v[i]; v[i]:=v[j]; v[j]:=t;
      end;
end;
var
  temps: array [TCity, TMonth] of Integer;
  tempy: TValues;
  c: TCity;
  m: TMonth;
begin
  Randomize;
  Write(CityH,'':WC-Length(CityH));
  for m:=Low(m) to High(m) do Write(MonthS[m]:WM);
  WriteLn(' Средняя');
  for c:=Low(temps) to High(temps) do begin
    tempy[c].index:=c; {tempy[c].value:=0;}
    Write(CityS[c],'':WC-Length(CityS[c]));
    for m:=Low(m) to High(m) do begin
      case m of
        3..5:  temps[c,m]:=-10+Random(23);
        6..8:  temps[c,m]:= 15+Random(20);
        9..11: temps[c,m]:=-10+Random(15)
        else   temps[c,m]:=-30+Random(30);
      end;
      Write(temps[c,m]:WM);
      Inc(tempy[c].value,temps[c,m]);
    end;
    WriteLn(tempy[c].value/12:WA:WAD);
  end;
  Sort(tempy);
  WriteLn; WriteLn('Сортировка по возрастанию среднегодовой температуры');
  for c:=Low(c) to High(c) do WriteLn(CityS[tempy[c].index]);
  Write('Нажмите ENTER...'); ReadLn;
end.
Добавлено через 2 минуты
Хозяйке на заметку: средняя из среднемесячных температур в общем случае не равна среднегодовой температуре

Добавлено через 7 минут
Причем, если TMonth тоже должен быть перечислимым типом, то изменения минимальны:
Pascal
3
  TMonth = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);
Pascal
41
42
43
44
        Mar..May:  temps[c,m]:=-10+Random(23);
        Jun..Aug:  temps[c,m]:= 15+Random(20);
        Sep..Nov:  temps[c,m]:=-10+Random(15);
        else       temps[c,m]:=-30+Random(30);
0
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
30.03.2020, 12:46  [ТС]
Program2.pas(20) : Нельзя преобразовать тип integer к (Prag,Mosc,Vlad,Soch,Bang)
for i:=Low(v) to Pred(High(v)) do

У меня Abc паскаль

Эта штука не работает, пробовал когда сортировал
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
30.03.2020, 13:03
Условие задачи напишите
и еще Простой АВС или АВС.net.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
30.03.2020, 13:16
Цитата Сообщение от frostbite101 Посмотреть сообщение
Program2.pas(20) : Нельзя преобразовать тип integer к (Prag,Mosc,Vlad,Soch,Bang)
Откуда там Integer, стесняюсь спросить?
Pascal
15
16
17
18
19
20
21
22
23
24
25
procedure Sort(var v: TValues);
var
  i, j: TCity;
  t: TValue;
begin
  for i:=Low(v) to Pred(High(v)) do
    for j:=Succ(i) to High(v) do
      if v[i].value>v[j].value then begin
        t:=v[i]; v[i]:=v[j]; v[j]:=t;
      end;
end;
Никаким Integer даже и не пахнет.
Для PascalABC есть свой раздел на форуме и он есть совсем не зря:
https://www.cyberforum.ru/pascalabc/

В PascalABC нет Low и High -- вам придется самостоятельно всё испортить, заменив общие выражения с Low и High их конкретными значениями: Low(v) --> Prag, High(v) --> Bang.
В остальном коде -- аналогично по смыслу.
0
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
30.03.2020, 13:19  [ТС]
Переделал код, под свои реали, большое спасибо!
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
type
  TCity = (Prag, Mosc, Vlad, Soch, Bang);
  TMonth = 1..12;
  TValue = record
    value: Integer;
    index: TCity;
  end;
  TValues = array [TCity] of TValue;
const
  WC=11; WM=5; WA=8; WAD=2; CityH='Город';
  CityS: array [TCity] of String[11] = (
    'Прага', 'Москва', 'Владивосток', 'Сочи', 'Бангкок');
  MonthS: array [TMonth] of String[3] = (
    'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек');
procedure Sort(var v: TValues);
var
  i, j: TCity;
  t: TValue;
begin
  for i:=Prag to Pred(Bang) do
    for j:=Succ(i) to Bang do
      if v[i].value>v[j].value then begin
        t:=v[i]; v[i]:=v[j]; v[j]:=t;
      end;
end;
var
  temps: array [TCity, TMonth] of Integer;
  tempy: TValues;
  c: TCity;
  m: TMonth;
begin
  Randomize;
  Write(CityH,'':WC-Length(CityH));
  for m:=1 to 12 do Write(MonthS[m]:WM);
  WriteLn(' Средняя');
  for c:=Prag to Bang do begin
    tempy[c].index:=c; {tempy[c].value:=0;}
    Write(CityS[c],'':WC-Length(CityS[c]));
    for m:=1 to 12 do begin
      case m of
        3..5:  temps[c,m]:=-10+Random(23);
        6..8:  temps[c,m]:= 15+Random(20);
        9..11: temps[c,m]:=-10+Random(15)
        else   temps[c,m]:=-30+Random(30);
      end;
      Write(temps[c,m]:WM);
      Inc(tempy[c].value,temps[c,m]);
    end;
    WriteLn(tempy[c].value/12:WA:WAD);
  end;
  Sort(tempy);
  WriteLn; WriteLn('Сортировка по возрастанию среднегодовой температуры');
  for c:=Prag to Bang do WriteLn(CityS[tempy[c].index]);
  Write('Нажмите ENTER...'); ReadLn;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
30.03.2020, 13:24
Например так:
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
type
  TCity = (Prag, Mosc, Vlad, Soch, Bang);
  TMonth = 1..12;
  TValue = record
    value: Integer;
    index: TCity;
  end;
  TValues = array [TCity] of TValue;
const
  TCityLow=Prag; TCityHigh=Bang; TMonthLow=1; TMonthHigh=12;
  WC=11; WM=5; WA=8; WAD=2; CityH='Город';
  CityS: array [TCity] of String[11] = (
    'Прага', 'Москва', 'Владивосток', 'Сочи', 'Бангкок');
  MonthS: array [TMonth] of String[3] = (
    'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек');
procedure Sort(var v: TValues);
var
  i, j: TCity;
  t: TValue;
begin
  for i:=TCityLow to Pred(TCityHigh) do
    for j:=Succ(i) to TCityHigh do
      if v[i].value>v[j].value then begin
        t:=v[i]; v[i]:=v[j]; v[j]:=t;
      end;
end;
var
  temps: array [TCity, TMonth] of Integer;
  tempy: TValues;
  c: TCity;
  m: TMonth;
begin
  Randomize;
  Write(CityH,'':WC-Length(CityH));
  for m:=TMonthLow to TMonthHigh do Write(MonthS[m]:WM);
  WriteLn(' Средняя');
  for c:=TCityLow to TCityHigh do begin
    tempy[c].index:=c; {tempy[c].value:=0;}
    Write(CityS[c],'':WC-Length(CityS[c]));
    for m:=TMonthLow to TMonthHigh do begin
      case m of
        3..5:  temps[c,m]:=-10+Random(23);
        6..8:  temps[c,m]:= 15+Random(20);
        9..11: temps[c,m]:=-10+Random(15)
        else   temps[c,m]:=-30+Random(30);
      end;
      Write(temps[c,m]:WM);
      Inc(tempy[c].value,temps[c,m]);
    end;
    WriteLn(tempy[c].value/12:WA:WAD);
  end;
  Sort(tempy);
  WriteLn; WriteLn('Сортировка по возрастанию среднегодовой температуры');
  for c:=TCityLow to TCityHigh do WriteLn(CityS[tempy[c].index]);
  Write('Нажмите ENTER...'); ReadLn;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2020, 13:24
Помогаю со студенческими работами здесь

Форматирование
Надо вывести текст с таким вот форматирование xxxxxxxxxxx yyyyyyyyyyy xxxxxxxxxxx yyyyyyyyyyy xxxxxxooooooooooooyyyyyy ...

Форматирование
Подскажите пожалуйста, мне нужно отформатировать дискету(если можно подскажите код)

Форматирование
Здесь текст программы, которая должна выглядеть так: program project1; label start; var x,y:real; c:char; begin start:...

Форматирование
Решил отформатировать жесткий диск, убрал галку "быстрое" после этого форматирование продолжается целый день, и далее. после нажатия...

Форматирование xp
помогите как удалить windows xp полностью так сказать до голого железа,собираюсь поставить 7 версию а свою удалить начисто но перед...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru