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

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

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

> Упорядочить массив по среднему баллу, задача на Записи
natik3
сообщение 21.05.2012 23:45
Сообщение #1


Новичок
*

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

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


Создать массив из 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Krjuger
сообщение 22.05.2012 10:58
Сообщение #2


Профи
****

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

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


Окей,поможем, давайте только вы скажете,что именно не работает, что не можете придумать.
Еще я не улавливаю смысла делать в record еще один record.И еще 1 вопрос:"Вы используете Builder?"
Насчет процедуры form;

for i:=1 to n do
readln(b.pred[j]);
a[i]:=b


Нигде в вашей функции j больше не фигурирует, так что оно работать не будет,а точнее если j инициализируется нулем,то запись будет всегда производиться в 1 и ту же ячейку,а если каким нибудь значением за пределами нашего массива,так вообще вылетит с ошибкой.

Сообщение отредактировано: Krjuger - 22.05.2012 11:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
natik3
сообщение 22.05.2012 12:32
Сообщение #3


Новичок
*

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

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


Цитата(Krjuger @ 22.05.2012 11:58) *

Окей,поможем, давайте только вы скажете,что именно не работает, что не можете придумать.
Еще я не улавливаю смысла делать в record еще один record.И еще 1 вопрос:"Вы используете Builder?"
Насчет процедуры form;

for i:=1 to n do
readln(b.pred[j]);
a[i]:=b


Нигде в вашей функции j больше не фигурирует, так что оно работать не будет,а точнее если j инициализируется нулем,то запись будет всегда производиться в 1 и ту же ячейку,а если каким нибудь значением за пределами нашего массива,так вообще вылетит с ошибкой.

я чуть чуть сама исправила свои недочеты.вот что получилось
Код
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows;

const n=5;
type
    formob=(spez,bakal,magis);
    Tballs=array[1..5]of 1..5;
    telem=record
                FIO:string[35]
                curs: integer;
                f_study:formob;
                balls:Tballs;
                Med_ball:real;
         end;
tmas=array [1..n] of telem;
var
a:tmas;
b:array[1..n]of string[30];
  s,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.FIO);
  writeln('Ввести номер формы обучения');
  readln(k);
  case k of
    1: b.f_study:=spez;
    2: b.f_study:=bakal;
    3: b.f_study:=magis
  end;
  writeln('Ввести курс');
  readln(b.curs);
  writeln('Ввести оценки');
  s:=0;
  for i:=1 to n do
   begin
    readln(b.balls[j]);
    s:=s+b.balls[j]
   end;
  b.med_ball:=s/5;
  a[i]:=b
   end;


   procedure sort(var b:tmas);
var
i,j:integer;
tmp:telem;
begin
   for i:=1 to n do
    if b[i].med_ball>b[i+1].med_ball 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;  m:=n;
//---------------------
Function Dvoechnik (b:tmas);
var i,k:integer;
  for i:=1 to n do
    Begin
      If a[i]<3 then
         k:=k+1
    end;
//---------------------
  Procedure Delete(k1:Integer;Var b:tmas);
Var i : Integer;
Begin {сдвиг элементов на один влево}
For i:=k1 To n-1 Do
b[n]:= b[i+1]; {i-му элементу присваиваем значение (i+1)-го}
b[n]:=0;{последний элемент равен 0}
End;
   //---------------------
while i<=n do
if Dvoechnik(a[i].balls) then
     if (course=5) and ( f_study=spez) or (course=6) and  ( f_study=magis ) then
         begin
           Delete(k1);
           m:=m-1;
         else
      a[i].course:= course+1
          end;
          end;
   SetConsoleOutputCP(1251);
  form(а);
  writeln;
  REPEAT
    mn:=Menu;
    case mn of
     1:begin

          sort(а);

       end;
     2: begin
     Dvoechnik(d);
          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.




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

Сообщений в этой теме
natik3   Упорядочить массив по среднему баллу   21.05.2012 23:45
Krjuger   Окей,поможем, давайте только вы скажете,что именно...   22.05.2012 10:58
natik3   Окей,поможем, давайте только вы скажете,что именн...   22.05.2012 12:32
Krjuger   Давайте не лезть вперед паровоза,у вас и без удале...   22.05.2012 13:26
natik3   Давайте не лезть вперед паровоза,у вас и без удал...   22.05.2012 13:56
Krjuger   Значит так,начнем разбор полетов. Tballs=array[1....   22.05.2012 14:23
natik3   Значит так,начнем разбор полетов. [code=pas] Tbal...   22.05.2012 16:45
Krjuger   Тут есть 2 варианта,либо сначала повысить всем,а п...   22.05.2012 17:17
natik3   Тут есть 2 варианта,либо сначала повысить всем,а ...   22.05.2012 17:29
Krjuger   Ненене, ты что то перемудрила.)) procedure LevelU...   22.05.2012 17:53
natik3   Ненене, ты что то перемудрила.)) procedure Level...   22.05.2012 18:02
Krjuger   Эх окей)) const n=3; const m=2; type formob=(...   22.05.2012 19:58
natik3   Эх окей)) const n=3; const m=2; type formob=...   22.05.2012 21:00
natik3   Эх окей)) [code=pas] const n=3; const m=2; type ...   3.06.2012 12:14
Krjuger   Вы уж извините,но копаться в том,что вы изменили ...   3.06.2012 13:43
natik3   Вы уж извините,но копаться в том,что вы изменили...   3.06.2012 14:25
IUnknown   function Dvoechnik(var a: telem):boolean; var j...   3.06.2012 14:37
Krjuger   Странный у вас преподаватель. break - это функция ...   3.06.2012 16:59
natik3   Странный у вас преподаватель. break - это функция...   4.06.2012 21:34
Krjuger   Да я допустил маленькую ошибочку,bеgin еnd не расс...   4.06.2012 21:59
natik3   Да я допустил маленькую ошибочку,bеgin еnd не рас...   4.06.2012 22:05
Krjuger   Окей. Тогда вынесем проверку на двоечника вперед,ч...   4.06.2012 22:26
natik3   Окей. Тогда вынесем проверку на двоечника вперед,...   4.06.2012 22:37
Krjuger   Показывай твой код потому что у мня не переводит.....   4.06.2012 22:42
natik3   Показывай твой код потому что у мня не переводит....   4.06.2012 22:47
Krjuger   Девушка, либо я дурак,либо что-то тут не так,но во...   4.06.2012 23:00
natik3   Девушка, либо я дурак,либо что-то тут не так,но в...   4.06.2012 23:08
Krjuger   Блииииин, я столько работы зря проделал. Девушка н...   4.06.2012 23:15
natik3   Блииииин, я столько работы зря проделал. Девушка ...   4.06.2012 23:26
Krjuger   Вы у меня спрашиваете?????Я условие в глаза не вид...   4.06.2012 23:34
natik3   Вы у меня спрашиваете?????Я условие в глаза не ви...   4.06.2012 23:37
Krjuger   Понимаете, у вас не настолько хорошо структурирова...   4.06.2012 23:51
natik3   Понимаете, у вас не настолько хорошо структуриров...   4.06.2012 23:56
natik3   Понимаете, у вас не настолько хорошо структуриров...   5.06.2012 0:02
Krjuger   То, что четко не обговорено в задании или преподав...   4.06.2012 23:58
Krjuger   Конешно можно, но на мой взгляд это глупость несус...   5.06.2012 0:09
natik3   Конешно можно, но на мой взгляд это глупость несу...   5.06.2012 0:17


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

 



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