31.10.2011, 20:24 | #1 (permalink) |
Новичок
Регистрация: 08.06.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите сделать одну процедуру
В файле содержится информация об итогах сессии Фамилия студента Группа Оценка1(математика) Оценка2(история) Оценка3(биология) написать программу которая вводит эту информацию и выводит следующие данные: вывести название предмета который был сдан лучше всего Короче я написал часть программы: Uses crt; Type itogi=record soname:string[20]; groop:string[10]; math:string[2]; history:string [2]; biology:string[2]; end; var f:file of itogi; x:char; procedure vvod; Var k:itogi; begin reset(f); while not(eof(f)) do read(d,k); write('введите фамилию'); readln(k.soname); write('введите группу'); readln(k.groop); write('оценка по математике'); readln(k.math); write('оценка по истории'); readln(k.history'); write('Оценка по биологии'); readln(k.biology); write(f,k); close(f); end; procedure vivod; Var k:itogi; begin reset(f); while not(eof(f)) do begin read(f,k); writeln(k.soname:20,k.groop:5,k.math:2,k:history:2 ,k.biology:2); end; close(f); readln; end; procedure best; ... begin 1:label; assign(f,'.....'); rewrite(f); close(f); 1:clrscr; writeln('Меню'); writeln('1.Ввод'); writeln('2.Вывод'); writeln('3.Лучший предмет'); writeln('0.Выход'); writeln('Ваш выбор'); readln(x); case x of '1':begin vvod; goto1;end; '2':begin vivod; goto1;end; '3':begin best; goto1;end; '0':exit;else goto1 ;end; end. так вот нужно написать вего лишь процедуру best(вывод названия предмета который был сдан лучше всего) заранее спасибо. |
31.10.2011, 20:24 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я отправлю вам похожие топики, они могут вам помочь На компьютере две ОС, как удалить одну из них? Двумерные массивы через процедуру Экран гаснет на одну-две секунды. Паскаль. Как создать процедуру с БЗ? |
31.10.2011, 22:03 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
1. Убрал кириллицу - это просто чтобы путаться с кодировками. Восстановите, если надо. 2. Убрал метки, и НАСТОЯТЕЛЬНО рекомендую забыть о них. Применение меток - дурной стиль программирования. 3. Исправил ошибки в англоязычных идентификаторах. 4. Кое-что оптимизировал. Вот работающий код: Код:
Uses crt; Const Name:Array[1..3] of String=('mathematics','history','biology'); Type itogi=record surname:string[20]; group:string[10]; marks:Array[1..3] of byte; end; var f:file of itogi; Nst,x:byte; procedure vvod; Var k:itogi; yn:Char; begin rewrite(f); Nst:=0; Repeat Inc(Nst); writeln('Enter the surname:'); readln(k.surname); writeln('Enter the group:'); readln(k.group); write('Mark on mathematics: '); readln(k.marks[1]); write('Mark on history: '); readln(k.marks[2]); write('Mark on biology: '); readln(k.marks[3]); write(f,k); write('Continue (Y/N) '); Readln(yn); writeln; Until (yn='n') or (yn='N'); writeln; close(f); end; procedure vivod; Var k:itogi; v,w:byte; begin reset(f); for v:=1 to Nst do begin read(f,k); write(k.surname:20,' ',k.group:10,' '); for w:=1 to 3 do write(k.marks[w]:3); writeln; end; close(f); readln; end; procedure best; Var k:itogi; v,w,num,max:byte; begin reset(f); for v:=1 to Nst do begin read(f,k); max:=k.marks[1]; num:=1; for w:=2 to 3 do if k.marks[w]>max then begin max:=k.marks[w]; num:=w; end; writeln(k.surname:20,' ',k.group:10,' best - ',Name[num]); end; close(f); readln; end; BEGIN assign(f,'D:\Stud'); Repeat clrscr; writeln('Choose:'); writeln('1 - Input'); writeln('2 - Output'); writeln('3 - Best marks'); writeln('0 - Quit'); readln(x); case x of 1: vvod; 2: vivod; 3: best; end; Until x=0; END. |
|
02.11.2011, 15:16 | #3 (permalink) | |
Member
Регистрация: 16.03.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 11
|
Цитата:
Код:
type student=record fam:string[30]; groop:string[40]; math,histor,biol:1..5; end; procedure vvod (var k:student; var f:text); begin Writeln('Vvedite familiy'); readln(k.fam); writeln('Vvedite groopy'); readln(k.groop); repeat writeln('Vvedite ocenky po math, histor and biology'); readln(k.math,k.histor,k.biol); until ((k.math in [2..5]) and (k.histor in [2..5]) and (k.biol in [2..5])); writeln(f,k.fam); writeln(f,k.groop); writeln(f,k.math); writeln(f,k.histor); writeln(f,k.biol); end; procedure vivod(var k:student); begin Writeln(k.fam,' ',k.groop,' ',k.math,' ',k.histor,' ',k.biol); end; procedure best(var k:student); begin if ((k.math>k.histor) and (k.math>k.biol)) then Writeln('Best math ',k.math,' ballov') else if ((k.histor>k.math) and (k.histor>k.biol)) then Writeln('Best histor ',k.histor,' ballov') else if ((k.biol>k.histor) and (k.biol>k.math)) then Writeln('Best biology ',k.biol,' ballov') else Writeln('Best net!!!'); end; Var k:student; f:text; filename:string; begin Writeln('Vvedite ima faila'); readln(filename); assign(f,filename+'.txt'); rewrite(f); vvod(k,f); vivod(k); best(k); close(f); readln; end. |
|
02.11.2011, 19:42 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Так, ну опять на мою голову свалилось ЭТО...
MrП_2.0, Вы действительно уверены, что написали программу лучшую, чем я? Если так, то не сочтите за труд ответить на несколько вопросов: 1. Моя программа обрабатывает данные по практически неограниченному количеству студентов, Ваша - только по одному студенту. Смысл? 2. Вы заменили типизированный файл текстовым - зачем? Потому что не умеете работать с типизированными файлами? 3. У заказчика, а также в моей программе, предусмотрен вывод меню с возможностью выбора позиции - Вы заменили этот сервис простым последовательным перебором процедур. Почему? Всё с оператором выбора (Case) разобраться не можете? В общем, опять старая песня - "смотрите, какой я молодец!". Подозреваю, что и итог будет тем же, что и в прошлые разы. Прискорбно. |
03.11.2011, 06:10 | #5 (permalink) |
Member
Регистрация: 16.03.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 11
|
1) Да смысла нет.
2) Умею, но я захотел использовать обычный текстовой. 3) Зачем делать меню если все надо делать последовательно, пока не введешь данные программа ничего выводить не будет. (Вылетит с ошибкой о не нахождении файла). Код:
assign(f,'D:\Stud'); |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
03.11.2011, 06:55 | #6 (permalink) |
404
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
|
2 Мr.П 2.0:
1)Научитесь оформлять код. 2)Если у автора было меню, значит оно было нужно 3)Windows данный фаил без разрешения прекрасно откроет через любой текстовый редактор. 4)Когда вы научитесь слушать критику? Вместо того, чтоб орать какой вы крутой программист (а это ооочень спорно) лучше послушали умного человека, который программирует не первый год и, однозначно, лучше вас. Слушайте старших и более опытных людей, блин, вам же пытаются помочь! Я так понимаю школота на каникулах и не знает чем заняться?. |
03.11.2011, 09:10 | #7 (permalink) | |||
Member
Регистрация: 16.03.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 11
|
Цитата:
Цитата:
Цитата:
точно не он. |
|||
03.11.2011, 09:56 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Вообще-то я обычно делаю приписку типа "имя файла и путь, естественно, поставьте свои". В этот раз такой фразы не написал.
Стоя, лёжа и "с колена". Да почему бы и нет?Ну что же, несколько заслуг авторитетного мэтра я вижу: во-первых, выучено правописание слова "программист", а во-вторых, представленная программа по крайней мере отлажена. Если Вашему Гуру удалось сделать то, в чем я в своё время потерпел поражение - а именно, вдолбить в Вас, что выкладывать сырые неотлаженные программы неприлично, то честь ему и хвала. |
03.11.2011, 15:24 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|