![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Hardip |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот думаю над задачей, даже похожая есть.. Дан файл содержащий сведения о книгах: фамилия автора, название, год издания, цена книги.
Как вывести на экран книгу с заданным годом издания (нужно указать в write), упорядоченные по алфавиту, а если таковых нет, то выдать соответствующее сообщение; а так же отсортировать записи в порядке возрастания цены книги. Файл, я сделал, прикладываю. Если кто-то поможет буду благодраен. Видел похожую программу, но не могу сделать под себя.. Код program Project1; {$APPTYPE CONSOLE} uses SysUtils; type qwe=record fio,db:string; a,b,c:byte; end; rty=record a:real; b:integer; end; const n=10; var d:array[1..n]of qwe; e:array[1..n]of rty; f:text; i,j,x,y:integer; s:string; begin i:=1; assign(f,'school'); reset(f); while not(eof(f)) do begin readln(f,d[i].fio); readln(f,d[i].db); readln(f,d[i].a,d[i].b,d[i].c); i:=i+1; end; for i:=1 to n do begin e[i].a:=(d[i].a+d[i].b+d[i].c)/3; e[i].b:=i; end; for i := n downto 2 do for j := 2 to i do if e[j].a < e[j - 1].a then begin x := Round(e[j].a); y:=e[j].b; e[j].a := e[j - 1].a; e[j].b := e[j - 1].b; e[j - 1].a := x; e[j - 1].b := y; end; for i:=1 to n do writeln(d[e[i].b].fio,': ',e[i].a); writeln('Vvdeite FIO'); readln(s); for i:=1 to n do if d[i].fio=s then writeln('FIO: ',d[i].fio,', DR: ',d[i].db,', Osenki: ',d[i].a:2,d[i].b:2,d[i].c:2); writeln('Srednie ball menishe treh:'); for i:=1 to n do if e[i].a<=3 then writeln(d[e[i].b].fio,': ',e[i].a); readln; end. Она делат вот что - Дан файл в котором содержится информация о школьниках: 1) Ф.И.О. 2) год рождения, месяц, число 3) оценки экзаменов а) отсортировать записи по возрастанию среднего экзаменационного балла; б) по запросу по Ф.И.О. - выдать средний балл; в) распечатать ведомость школьников со средним баллом меньше 3. Прикрепленные файлы ![]() |
![]() ![]() |
Krjuger |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну для начала посмотри,то как у тебя тип обьявлен.у тебя 3 переменных типа байт.Но разве в файле число у тебя храниться в таком виде?Попробуй написать число 10 типа байт в блокнот а потом открой его и посомтри,что там будет.Там будет какая нибудь билеберда нарисована,это потому что целые числа(integer) занимают 2,4,8 байт в разных типах компиляторов(имеется в виду из разрядность),а ты береш только 1 байт от этого числа,поэтому у тебя исходные данные при считывании из файла неверные.есть 2 способа это исправить,изменить тип переменных.Либо записывать в файл информацию в виде байтов,а потом и считывать соответствующе.
Сообщение отредактировано: Krjuger - 30.11.2010 1:15 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:50 |