3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 285
1

Перевести сортировку студентов с Pascal

01.07.2014, 20:02. Показов 513. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа на паскале. Она берет данные студентов из файла (текстового) и сортирует студентов в 2 группы (с обычной и повышенной стипендией) и делает 2 новых файла куда заносит эти значения.

Трактовка задачи

Составить программу назначения стипендии студентам по
результатам сессии, используя следующие правила:
1) если все оценки 5, назначается повышенная стипендия;
2) если все оценки 4 и 5, назначается обычная стипендия;
3) если есть оценка 3, стипендия не назначается.
В результате работы программы должен быть напечатан список
группы с оценками и средним баллом каждого студента и два списка
фамилий (назначенных на повышенную и обычную стипендию).

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
program stipendia;
uses CRT;
const max=30;
type TStud=record
           fam:string[15];
           oc: array[1..3]of byte;
           sr: real;
end;
var f:text;
    sp:array[1..max] of TStud;
    n,i,j,k,p,t: integer;
    s,s1:string;
{---------------------------------------}
begin
assign(f,'input.txt');
reset(f);//открываем файл с исходными данными, он в папке с программой
n:=0;
while not eof(f) do
 begin
  readln(f,s);
  s:=s+' ';//добавим пробел в конец
  n:=n+1;
  sp[n].fam:=copy(s,1,pos(' ',s)-1);//первое слово до пробела
  delete(s,1,pos(' ',s)); //удалим его
  sp[n].sr:=0;
  for i:=1 to 3 do
   begin
    sp[n].oc[i]:=strtoint(copy(s,1,pos(' ',s)-1));
    delete(s,1,pos(' ',s));
    sp[n].sr:=sp[n].sr+sp[n].oc[i];
   end;
   if not(sp[n].oc[1] in [2..5])or not(sp[n].oc[2] in [2..5])or not(sp[n].oc[3] in [2..5]) then
  begin
   writeln('В файле недопустимые оценки');
   halt;//если есть плохие, выходим из программы
 end;
  sp[n].sr:=sp[n].sr/3;
 end;
close(f);
{---------------------------------------}
writeln ('SPISOK GRUPI:');       //это только на экран
writeln('----------------------------------------');
writeln('|    Familia    | Ocenki | Srednii bal |');
writeln('----------------------------------------');
for i:=1 to n do
 begin
  write ('|',sp[i].fam:15,'|');
  for j:=1 to 3 do
  write (sp[i].oc[j]:2);
  writeln ('  |',sp[i].sr:8:2,'     |');
 end;
writeln('----------------------------------------');
write ('Press Enter...');
readln;
{---------------------------------------}
clrscr;
assign(f,'otlichniki.txt');
rewrite(f);
writeln ('NAZNACHENA POVISHENNAYA STIPENDIA:');//на экран, если не нужно, везде убрать
writeln (f,'NAZNACHENA POVISHENNAYA STIPENDIA:');//в файл
t:=0;
writeln('----------------------------------------');
writeln('|    Familia    | Ocenki | Srednii bal |');
writeln('----------------------------------------');
writeln(f,'----------------------------------------');
writeln(f,'|    Familia    | Ocenki | Srednii bal |');
writeln(f,'----------------------------------------');
for i:=1 to n do
if sp[i].sr=5.0 then
 begin
  t:=1;
  write ('|',sp[i].fam:15,'|');
  write (f,'|',sp[i].fam:15,'|');
  for j:=1 to 3 do
   begin
    write (sp[i].oc[j]:2);
    write (f,sp[i].oc[j]:2);
   end;
  writeln ('  |',sp[i].sr:8:2,'     |');
  writeln (f,'  |',sp[i].sr:8:2,'     |');
 end;
writeln('----------------------------------------');
writeln(f,'----------------------------------------');
if t=0 then
 begin
  writeln ('Naznachenih na povishennuu stipendiu NET!');
  writeln (f,'Naznachenih na povishennuu stipendiu NET!');
 end;
write('Press Enter...');
readln;
close(f);
{---------------------------------------}
clrscr;
assign(f,'obshie.txt');
rewrite(f);
writeln ('NAZNACHENA OBICHNAYA STIPENDIA');
writeln (f,'NAZNACHENA OBICHNAYA STIPENDIA');
k:=0;
writeln('----------------------------------------');
writeln('|    Familia    | Ocenki | Srednii bal |');
writeln('----------------------------------------');
writeln(f,'----------------------------------------');
writeln(f,'|    Familia    | Ocenki | Srednii bal |');
writeln(f,'----------------------------------------');
for i:=1 to n do
 begin
  p:=0;
  for j:=1 to 3 do
  if (sp[i].oc[j]=5)or(sp[i].oc[j]=4) then p:=p+1;
  if(p=3)and(sp[i].sr<5.0) then
   begin
    k:=1;
    write ('|',sp[i].fam:15,'|');
    write (f,'|',sp[i].fam:15,'|');
    for j:=1 to 3 do
     begin
      write (sp[i].oc[j]:2);
      write (f,sp[i].oc[j]:2);
     end;
    writeln ('  |',sp[i].sr:8:2,'     |');
    writeln (f,'  |',sp[i].sr:8:2,'     |');
  end;
 end;
writeln('----------------------------------------');
writeln(f,'----------------------------------------');
if k=0 then
 begin
  writeln ('Naznachenih na obichnuu stipendiu NET');
  writeln (f,'Naznachenih na obichnuu stipendiu NET');
 end;
close(f)
end.
Учитель сказал, изменить программу под делфи. Но с тем учетом, что данные берутся не из текстового файла, а из типизированного файла формата .dat и выводит список назначенных студентов в виде 2 таблиц, через StringGrid.

Помогите пожалуйста, хвост горит!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2014, 20:02
Ответы с готовыми решениями:

Переделать сортировку студентов по баллам на сортировку по фамилии
Вот у меня есть код сортировки введенных данных по среднему балу: TZap st, *mas_Z; ...

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program...

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться....

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

2
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
01.07.2014, 23:41 2
Цитата Сообщение от Frip Посмотреть сообщение
Помогите пожалуйста, хвост горит!
Лмчно ты что сделал или хотя бы попыталсся сделать для спасения своего хвоста ?
0
northener
02.07.2014, 02:59     Перевести сортировку студентов с Pascal
  #3

Не по теме:

Цитата Сообщение от mss Посмотреть сообщение
Лмчно ты что сделал или хотя бы попыталсся сделать для спасения своего хвоста ?
Вообще-то такие хвосты не спасать нужно, а ампутировать! :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2014, 02:59

Перевести в код Pascal ABC из кода Pascal Delphi
procedure TForm1.Button1Click(Sender: TObject); const n=8; var x:array of real; y,z:array of...

Необходимо перевести программу с Pascal ABC на free pascal
var a, factorial:longint; const c:array of char= ('0','1'); var res:string; d:0..1; k,...

Нужно перевести код из Turbo Pascal в Pascal ABC
Program n5; { Задача. Описать функцию less(f) от непустого файла f ...

Перевести в код Pascal ABC из кода Pascal Delphi
Помогите перевести в код ABC а то с Delphi вообще не знаком. Задание было такое: Записать в файл...

Перевести из Turbo Pascal в Pascal ABC
Добрый вечер. Необходимо перевести этот код из Turbo Pascal в Pascal ABC. Заранее спасибо. uses...

Сортировка списка студентов группы по алфавиту используя пузырьковую сортировку
Написать программу, сортирующую список студентов группы по алфавиту и использующую библиотечную...


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

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

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