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

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

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

 
 Ответить  Открыть новую тему 
> Записи, Сортировка
ko1hoz
сообщение 14.05.2007 20:12
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Нужно создать файл, состоящий из 20 записей.
-Район;
-№школы;
-количество учеников;
-количество неуспевающих учеников;
-количество отличников и хорошистов.
Так вот, надо вывести данные о школах каждого района, у которых процент качественной успеваемости наибольший. Информацию выводить, отсортировав по наименованию района.

Файл то я конечно создал. А вот в остальном запутался. Много что-то условий. Помогите пожалуйста. Напишите хотя бы примерный алгоритм действий, а дальше думаю сам разберусь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 14.05.2007 20:18
Сообщение #2


Помощник капитана
****

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

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


Цитата
Так вот, надо вывести данные о школах каждого района, у которых процент качественной успеваемости наибольший.

А начиная со скольки процентов отличников и хорошистов в сравнении со всеми учениками школа считается "успеваемой"

Сообщение отредактировано: Артемий - 14.05.2007 20:19


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Renbo
сообщение 14.05.2007 20:32
Сообщение #3


Пионер
**

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

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


Сортировку зри тут: сортировка записей
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 14.05.2007 20:44
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Цитата(Артемий @ 15.05.2007 0:18) *

А начиная со скольки процентов отличников и хорошистов в сравнении со всеми учениками школа считается "успеваемой"

Ну это я незнаю, но я так понял нужно высчитать процент этих самых отличников в каждой школе и потом вывести тока школы с наибольшим процентом от каждого района.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 15.05.2007 12:22
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Вот так собственно я создаю файл
uses crt;
const
n=5;
type
spisok=record
raion:string;
p_p,nom,kol_uch,neus_uch,otl_hor:integer;
end;
var
i:integer;
sp:spisok;
F:file of spisok;
begin
assign (F,'d:\kurs.dat');
rewrite (F);
for i:=1 to n do
begin
with sp do
begin
writeln ('raion:'); readln(raion);
writeln ('p/p:'); readln(p_p);
writeln ('nomer shkoli:'); readln(nom);
writeln ('kolichestvo uch:'); readln(kol_uch);
writeln ('kolichestvo neusp:'); readln(neus_uch);
writeln ('kolichestvo otl i hor:'); readln(otl_hor);
end;
write(F,sp);
end;
close(F);
readln;
end.

А вот это я написал сортировку.
uses crt;
Const name='d:\kurs2.txt';
Type
spisok=record
raion:string;
p_p,nom,kol_uch,neusp,otl_hor:integer;
end;
Var
k,i:integer;sum:real;
sp:spisok;Ot:char;
sp1:array [1..50] of spisok;
pr:array [1..50] of real;
F:file of spisok;
F1:text;
begin
clrscr;
assign(F,'d:\kurs.dat');
reset(F);
Writeln('Zapisat v fail? Y/N');
Readln(Ot);
If (Ot='Y') or (Ot='y') then assign (F1,name) else assign (F1,'con');
Rewrite(F1);
Writeln(F1,' Svedeniya o shkolah raionov');
k:=0;
For i:=1 to 77 do write(F1,'-');
writeln(F1);
Writeln(F1,'| raion |nom_p/p|nom_shkoli|kol uch|kol neusp uch|otl i hor|procent|');
For i:=1 to 77 do write(F1,'-');
writeln(F1);
While not eof(F) do
begin
Read(F,sp);
With sp do
begin
if raion='oktyabrskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='centralnii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='zaelcovskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='zheleznodorozhnii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
if raion='kirovskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='pervomaiskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='kalininskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
if raion='leninskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='dzerzhinskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;
if raion='sovetskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/kol_uch*100;
end;

end;
end;
end;
For i:=1 to k do with sp1[i] do
begin
write(F1,'|', raion:12 ,'|',p_p:7,'|',nom:10,'|');
writeln(F1,kol_uch:7,'|',neusp:13,'|',otl_hor:9,'|',pr[i]:7:2,'|');
end;
For i:=1 to 77 do write(F1,'-');
writeln(F1);
Close(F1);Readln;
end;
end.


Почему выводится только один район(заельцовский)? И как сделать, чтобы из каждого района выводилася школа только с мах процентом?

Сообщение отредактировано: ko1hoz - 15.05.2007 12:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 17.05.2007 6:40
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Нуу rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 17.05.2007 7:01
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Проясни ситуацию, плз..
Вот у тебя длинный набор операторов if идет в проге (по названиям районов). Но в каждом таком if'е ты делаешь абсолютно одно и то же. Спрашивается: зачем тебе эти "иф"ы?

И еще: прикрепи, пожалуйста, файл с данными (запакуй в архив и приаттач).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 17.05.2007 14:15
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Цитата(Lapp @ 17.05.2007 11:01) *

Проясни ситуацию, плз..
Вот у тебя длинный набор операторов if идет в проге (по названиям районов). Но в каждом таком if'е ты делаешь абсолютно одно и то же. Спрашивается: зачем тебе эти "иф"ы?

И еще: прикрепи, пожалуйста, файл с данными (запакуй в архив и приаттач).

Ну как бы считаю процент отличников для каждой школы в данном районе и соответственно переписываю в массив.
P.S. Прикрепил данные, там 5 школ из 3ёх районов с произвольно введёнными данными. Соответственно в результате должно получится 3 школы.


Прикрепленные файлы
Прикрепленный файл  KURS.rar ( 184 байт ) Кол-во скачиваний: 122
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 18.05.2007 6:19
Сообщение #9


Гость






осталась 1 неделя до сдачи rolleyes.gif
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 18.05.2007 6:21
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Цитата(Гость @ 18.05.2007 10:19) *

осталась 1 неделя до сдачи rolleyes.gif

изивине, от гостя написал.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 23.05.2007 16:45
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Подскажите пожалуйста, вот программа а также файл с данными. В итоге у меня выводятся все школы районов (20 штук) с их качественными процентными, всё как и нужно. А как сделать, чтобы от каждого района выводилось только по одной школе с максимальным процентом?
 
uses crt;
Const name='d:\kurs2.txt';
Type
spisok=record
raion:string;
p_p,nom,kol_uch,neusp,otl_hor:integer;
end;
Var
k,i:integer;sum:real;
sp:spisok;Ot:char;
sp1:array [1..50] of spisok;
pr:array [1..50] of real;
F:file of spisok;
F1:text;
max:real;
begin
clrscr;
assign(F,'d:\kurs.dat');
reset(F);
Writeln('Zapisat v fail? Y/N');
Readln(Ot);
If (Ot='Y') or (Ot='y') then assign (F1,name) else assign (F1,'con');
Rewrite(F1);
Writeln(F1,' Svedeniya o shkolah raionov');
k:=0;
For i:=1 to 77 do write(F1,'-');
writeln(F1);
Writeln(F1,'| raion |nom_p/p|nom_shkoli|kol uch|kol neusp uch|otl i hor|procent|');
For i:=1 to 77 do write(F1,'-');
writeln(F1);
While not eof(F) do
begin
Read(F,sp);
begin
if sp.raion='oktyabrskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='centralnii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='zaelcovskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='sovetskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='pervomaiskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='kalininskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='leninskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='dzerzhinskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='zheleznodorozhnii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;
if sp.raion='kirovskii' then
begin
k:=k+1;
sp1[k]:=sp;
pr[k]:=sp.otl_hor/sp.kol_uch*100;
end;

end;
end;
For i:=1 to k do with sp1[i] do
begin
write(F1,'|', raion:12 ,'|',p_p:7,'|',nom:10,'|');
writeln(F1,kol_uch:7,'|',neusp:13,'|',otl_hor:9,'|',pr[i]:7:2,'|');
end;
For i:=1 to 77 do write(F1,'-');
writeln(F1);
Close(F1);Readln;
close(F)
end.


Прикрепленные файлы
Прикрепленный файл  KURS.rar ( 389 байт ) Кол-во скачиваний: 80
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ko1hoz
сообщение 24.05.2007 22:38
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Евгений

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


Сделал, можно тему закрыть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



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