Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 22.06.2014, 14:04   #1 (permalink)
shkolnik
Member
 
Регистрация: 22.06.2014
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Собрать в файле g сведения о лучших учениках школы

Дан файл f, содержащий сведения об учениках. Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится и отметки полученные учеником в последней четверти. Собрать в файле g сведения о лучших учениках школы, т.е. об учениках, не имеющих отметок ниже 4 и по сумме баллов не уступающих другим ученикам своего и параллельных классов.
shkolnik вне форума   Ответить с цитированием

Старый 22.06.2014, 14:04
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Первым делом нужно ознакомиться с аналогичными топиками

Сведения для Mirosoft. В чем проблема?
Рейтинг лучших игр 2012 года для PC
Рейтинг лучших онлайн игр 2012 года
1000 лучших мест России

Старый 22.06.2014, 14:12   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ответ традиционный: тыц!
Vladimir_S вне форума   Ответить с цитированием
Старый 22.06.2014, 18:13   #3 (permalink)
shkolnik
Member
 
Регистрация: 22.06.2014
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Попробовал сделать по шаблону, но не знаю как сделать вывод нескольких учеников и как вывести сумму баллов
shkolnik вне форума   Ответить с цитированием
Старый 22.06.2014, 19:30   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от shkolnik Посмотреть сообщение
Попробовал сделать по шаблону, но не знаю как сделать вывод нескольких учеников и как вывести сумму баллов
Выкладывайте свои наработки - посмотрим. И ОБЯЗАТЕЛЬНО входной файл f, можно в текстовом виде.
Vladimir_S вне форума   Ответить с цитированием
Старый 22.06.2014, 21:47   #5 (permalink)
shkolnik
Member
 
Регистрация: 22.06.2014
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Наверно самый идиотский набросок, ну как то так
var f: text;
Lastname: string;
Name: string;
Klass: string;
Mark:integer;
n,i,k: integer;

begin
assign(f,filename);
reset(f);

writeln('Ученик:');
k := 0;
readln(f,n);
for i := 1 to n do
begin
readln(Lastname);
readln(Name);
readln(Klass);
readln(Mark);
if (Mark > 4) then {}
begin
if Mark = then

close(f);
readkey;
end.
shkolnik вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 22.06.2014, 22:03   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Нет-нет, такие задачи решаются через тип "запись" ("record") и организацию массива записей. Кроме того, я просил Вас показать, как Вы представляете себе вид исходного файла. Чтобы было видно где, что и в каком порядке расположено.

Кроме того, если Вы используете команду Readkey, то будьте любезны поставить в начале uses CRT; , потому что это команда модуля CRT.
Vladimir_S вне форума   Ответить с цитированием
Старый 22.06.2014, 22:05   #7 (permalink)
shkolnik
Member
 
Регистрация: 22.06.2014
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот есть еще такой
const
N=4;
var
Student:Array[1..N] of Record
Lastname:string;
Name:string;
Klass:Word;
Mark:Word;
end;
i,i0:integer;
Rate:integer;
Begin
Rate:=4;
For i:=1 to N do
With Student[i] do
begin
Writeln(i,' Ученик');
Write('Фамилия: ');
Readln(Lastname);
Write('Имя: ');
Readln(Name) ;
Write('Класс: ');
Readln(Klass);
Write('Оценка: ');
Readln(Mark);
Writeln;
If Mark>Rate then
begin
i0:=i;
Rate:=Mark;
end;
end;
Writeln('Лучшиие ученики:');
With Student[i0] do
begin
Writeln('Name: ',Name);
Writeln('Lastname: ',Lastname);
Writeln('Klass: ',Klass);
Writeln('Mark: ',Mark);
end;
readln;
End.

это опираясь на тему в первом сообщении
shkolnik вне форума   Ответить с цитированием
Старый 22.06.2014, 22:21   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от shkolnik Посмотреть сообщение
Вот есть еще такой
Уже лучше. Правда, обычно в таких случаях тип вводят отдельно, т.е. так:
Код:
Type 
 Stud=Record
       Lastname:string;
       Name:string;
       Klass:Word;
       Mark:Word;
      end;
Var
 Student:Array[1..N] of Stud;
И в третий (и последний) раз повторяю: покажите пример исходного файла! Т.е. список, содержащий фамилии учеников, класс и оценки.
Тогда можно будет продолжить. Но только завтра. А если указанный перечень так и не появится, то - извините, ничем не могу помочь.
Vladimir_S вне форума   Ответить с цитированием
Старый 22.06.2014, 22:30   #9 (permalink)
shkolnik
Member
 
Регистрация: 22.06.2014
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

1 Ученик
Фамилия: Иванов
Имя: Иван
Класс: 5А
Оценка: 5

2 Ученик
Фамилия: Петров
Имя: Петр
Класс: 9В
Оценка: 4

3 Ученик
Фамилия: Соколов
Имя: Алексей
Класс: 6А
Оценка: 3

4 Ученик
Фамилия: Козлов
Имя: Олег
Класс: 5А
Оценка: 5
Единственное ни как не могу сообразить, как сделать несколько оценок (которые получены за четверть)
shkolnik вне форума   Ответить с цитированием
Старый 22.06.2014, 22:43   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Сразу скажу: с таким файлом работать ОЧЕНЬ трудно. Предлагаю такой вариант:

Иванов
Иван

5 4 3 4 3 5

Петров
Петр

4 4 3 4 3 3

и т.д.



Количество оценок целесообразно задать в виде константы (напр. Nm = 6). Как их считать - поясню. Но не сегодня.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:32.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.