![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
natik3 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Женский Репутация: ![]() ![]() ![]() |
Создать массив из 20 элементов,хранящих информацию о студенках факультета.Каждый элемент содержит фамилию,курс,форму обучения,(специалист,бакалавр,магис тр)и оценки по 5 предметам за последнюю сессию.
Упорядочить массив по среднему баллу.Осуществить перевод студентов на следующий курс.Переводятся студенты ,не имеющие задолжностей за последнюю сессию,студенты 5-ого курса(специалисты) и 6-ого курса(магистры)должны быть удалены ,как окончившие курс обучения. Я сделала,но явно неправильно,и кое где несообразила,как дальше.помогите исправить ошибки и дописать то,что совсем неверно.буду очень благодарна! Код program Project2; {$APPTYPE CONSOLE} uses SysUtils, Windows; const n=5; type formob=(spez,bakal,magis); zmas=array [1..5]of integer; telem=record name:record FIO:string[30] curs: 1..6; end; pred:zmas; form:formob; end; tmas=array [1..n] of telem; var a:tmas; b:array[1..n]of string[30];// массив студентов,которых переводят mn,choice,i:Integer; exit_:char; error_in: boolean; Function menu :integer; //Вывод меню на экран begin writeln; writeln (' ','1.Упорядочить массив по среднему баллу'); writeln (' ','2.Перевести студентов на следующих курс'); Writeln (' ','3.Завершение работы.'); repeat write ('Ваш выбор: '); readln (choice); error_in:=(choice<1) or (choice >3); if error_in then writeln ('Ошибка ввода!') until not error_in; menu:=choice; end; procedure form (var a:tmas); var k,i,j:integer; b:telem; n:integer; tmp:telem; begin writeln('Ввести ФИО'); readln(b.name.FIO); writeln('Ввести номер формы обучения'); readln(k); case k of 1: b.form:=spez; 2: b.form:=bakal; 3: b.form:=magis end; writeln('Ввести курс'); readln(b.name.curs); writeln('Ввести оценки'); for i:=1 to n do readln(b.pred[j]); a[i]:=b end; Function Sr(b:zmas):integer; var s1,s,i:integer; begin S:=0; for i:=1 to n do begin S:=S+S1(b[i].pred); Sr:=s1 div 5 end; end; procedure sort(var b:tmas); var i,j:integer; tmp:telem; begin for i:=1 to n do if(b[i]>b[i+1]) then begin tmp:=b[i]; b[i]:=b[i+1]; b[i+1]:=tmp; end; end; Procedure perevod (var b:tmas); var i,k:integer; i:=1; k:=0; while i<= n-k do //--------------------- Function Dvoechnik (a:tmas); var i,k:integer; for i:=1 to n do Begin If a[i]<3 then k:=k+1 end; //--------------------- SetConsoleOutputCP(1251); form(а); writeln; REPEAT mn:=Menu; case mn of 1:begin sort(а); end; 2: begin Writeln('Перевод на следующий курс'); end end; if mn<>3 then begin Writeln; write (' ','Завершить работу? (Y/N)'); readln(exit_); end; UNTIL (exit_='y') or (exit_='Y') or (choice=3); readln End. |
![]() ![]() |
Krjuger |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Да я допустил маленькую ошибочку,bеgin еnd не расставил, щас просто программирую больше на дугом языке.
Вот так вроде работает. Но я использовал свое условие,а не IUnknown. У программы на данный момент есть 1 недостаток.Если например специалист на 5 курсе получает 2, то его не оставляют на 2 год а все равно удаляют. Поскольку, я не знаю,как в этой ситуации поступать, я менять ничего не стал,но если все равно нужно из-за двойки оставлять на том же курсе,то в строчке if ((a[i].f_study=spez) and (a[i].curs<5)) then Вместо < ставиться <=, то есть она будет выглядеть. if ((a[i].f_study=spez) and (a[i].curs<=5)) then И так для всех трех, бакалавров,спецов и магистров. Сообщение отредактировано: Krjuger - 4.06.2012 22:08 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:26 |