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


Ответ
 
Опции темы Опции просмотра
Старый 15.10.2011, 20:50   #1 (permalink)
Irinka15-2008
Новичок
 
Регистрация: 15.10.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Ребят, помогите, пожалуйста, дорешать

База не очень большая и поэтому не могу разобраться. Задача сначало запрашивает упользователя список студентов с данными(эту часть я выполнила), затем нужно произвести сортировку по году рождения и фамилии.
uses crt
type studlub = record
nomerzach:string[30];
FIO:string[20];
mestorojd:string[20];
godrojd:string[6];
nomerstud:string[6];
hobbi:string[10];
end;


var stud:studlub;
f:file of studlub;
g:text;

i, max, n:word;

begin
clrscr;
assign(f, 'stud.dat');
rewrite(f);
writeln('Vvodite dannie o studentax');
repeat
with stud do
begin
write('nomer zachetki: '); readln(nomerzach);
write('FIO: ');readln(Fio);
write('mestorojd: ');readln(mestorojd);
write('Godrojdeniy: ');readln(godrojd);
write('nomer studencheskogo: ');readln(nomerstud);
write('hobbi: ');readln(hobbi);
end;
write(f, stud);
clrscr;
writeln ('ENTER-prodolghenie vvoda, ESC-zavershenie vvoda');
until readkey=#27;

clrscr;

reset(f);
writeln('Spisok studentov:' :40);
writeln;
writeln('-----------------------------------------------------------------------');
writeln('| ьzacotki| FIO | Mesto rojd | God rojdeniy | Nomer stud | hobbi |');
writeln('-----------------------------------------------------------------------');
while not eof(f) do
begin
read(f, stud);
with stud do
begin
gotoXY(1,whereY);write('| ',nomerzach);
gotoXY(11,whereY);write('| ',Fio);
gotoXY(21,whereY);write('| ',mestorojd);
gotoXY(34,whereY);write('| ',godrojd);
gotoXY(50,whereY);write('| ',nomerstud);
gotoXY(63,whereY);write('| ',hobbi);
gotoXY(73,whereY);write('|');
end;
writeln;
end;
writeln;
close(f);

writeln('ENTER - exit programm');


readkey;
end.
Irinka15-2008 вне форума   Ответить с цитированием

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

У нас есть темы которые похожи на вашу

Помогите пожалуйста
Ребят, помогите, пожалуйста, с Pascal

Старый 15.10.2011, 21:05   #2 (permalink)
Irinka15-2008
Новичок
 
Регистрация: 15.10.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Простите, решается на ПАСКАЛЬ
Irinka15-2008 вне форума   Ответить с цитированием
Старый 15.10.2011, 21:12   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Irinka15-2008 Посмотреть сообщение
Простите, решается на ПАСКАЛЬ
Это-то как раз понятно, непонятно другое:
Цитата:
Сообщение от Irinka15-2008 Посмотреть сообщение
затем нужно произвести сортировку по году рождения и фамилии
Что значит "произвести сортировку"? Какую сортировку? Что значит, например, "по году рождения" - выстроить в порядке убывания? Выбрать студентов с одинаковым годом рождения? А "по фамилии"? В алфавитном порядке расставить, что ли?
Ну неужели трудно нормально сформулировать условие задачи?
Vladimir_S вне форума   Ответить с цитированием
Старый 15.10.2011, 21:15   #4 (permalink)
Irinka15-2008
Новичок
 
Регистрация: 15.10.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от Irinka15-2008 Посмотреть сообщение
Да. в меня должны спросить тип сортировки и в зависимости от этого отсортировать по году(убыванию) и студентов по алфавиту
Как-то так. Только файл я выкинул - не вижу в нем смысла, заменил массивом.

Код:
uses crt;
type
 studlub = record
  nomerzach:string[8];
  FIO:string[20];
  mestorojd:string[20];
  godrojd:word;
  nomerstud:string[6];
  hobbi:string[8];
 end;


var
 stud:Array[1..100] of studlub;
 dummy:studlub;
 i,j,N:word;
 sort_type:byte;

begin
 clrscr;
 N:=0;
 writeln('Vvodite dannie o studentax');
 repeat
  Inc(N);
  with stud[N] do
   begin
    write('nomer zachetki: '); readln(nomerzach);
    write('FIO: ');readln(Fio);
    write('mestorojd: ');readln(mestorojd);
    write('Godrojdeniy: ');readln(godrojd);
    write('nomer studencheskogo: ');readln(nomerstud);
    write('hobbi: ');readln(hobbi);
   end;
  clrscr;
  writeln ('ENTER-prodolghenie vvoda, ESC-zavershenie vvoda');
 until (readkey=#27) or (N=100);

 clrscr;

 writeln('Spisok studentov:');
 writeln;
 writeln('-----------------------------------------------------------------------');
 writeln('| Nzacotki |        FIO         |     Mesto rojd     | G.r. | N stud |  hobbi |');
 writeln('-----------------------------------------------------------------------');
 for i:=1 to N do
  begin
   with stud[i] do
    begin
     gotoXY(1,whereY);write('| ',nomerzach);
     gotoXY(12,whereY);write('| ',Fio);
     gotoXY(33,whereY);write('| ',mestorojd);
     gotoXY(54,whereY);write('| ',godrojd);
     gotoXY(61,whereY);write('| ',nomerstud);
     gotoXY(70,whereY);write('| ',hobbi);
     gotoXY(79,whereY);write('|');
    end;
   writeln;
  end;
 writeln;

 writeln('Press "Enter" to continue');
 readln;
 clrscr;

 writeln('Sort by:');
 writeln('        1 - Alphabet');
 writeln('        2 - Year of birth');
 readln(sort_type);

 clrscr;

 if sort_type=1 then
  begin
   for i:=1 to N do
    for j:=1 to N-i do
     if Ord(stud[j].FIO[1])>Ord(stud[j+1].FIO[1]) then
      begin
       dummy:=stud[j];
       stud[j]:=stud[j+1];
       stud[j+1]:=dummy;
      end;
  end else
  begin
   for i:=1 to N do
    for j:=1 to N-i do
     if stud[j].godrojd<stud[j+1].godrojd then
      begin
       dummy:=stud[j];
       stud[j]:=stud[j+1];
       stud[j+1]:=dummy;
      end;
  end;


 writeln('Spisok studentov posle sortirovki:');
 writeln;
 writeln('-----------------------------------------------------------------------');
 writeln('| Nzacotki |        FIO         |     Mesto rojd     | G.r. | N stud |  hobbi |');
 writeln('-----------------------------------------------------------------------');
 for i:=1 to N do
  begin
   with stud[i] do
    begin
     gotoXY(1,whereY);write('| ',nomerzach);
     gotoXY(12,whereY);write('| ',Fio);
     gotoXY(33,whereY);write('| ',mestorojd);
     gotoXY(54,whereY);write('| ',godrojd);
     gotoXY(61,whereY);write('| ',nomerstud);
     gotoXY(70,whereY);write('| ',hobbi);
     gotoXY(79,whereY);write('|');
    end;
   writeln;
  end;
 writeln;
 writeln('ENTER - exit programm');


 readkey;
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 16.10.2011, 08:36   #6 (permalink)
Irinka15-2008
Новичок
 
Регистрация: 15.10.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое! буду разбираться
Irinka15-2008 вне форума   Ответить с цитированием
Ads

Яндекс

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

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

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

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




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

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