Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 23:39   #1
In\/isible
 
Аватар для In\/isible
 
Регистрация: 26.04.2011
Сообщений: 6
Восклицание задача на паскале, массив из записей

Описать структуру с именем TRAIN с полями:
NAZN - название пункта назначения;
NUMR - номер поезда, TIME - время отправления.
Написать программу, выполняющую следующие действия:
- заполнение ( с клавиатуры и из файла) массива RASP с элементами типа TRAIN; записи должны быть размещены в алфавитном порядке по названию пунктов назначения;
- вывод информации о поездах, отправляющихся после введенного с клавиатуры времени;
- если таких поездов нет, выдать сообщение.

Решите, пожалуйста, кому не сложно) сижу уже часов 6 бестолку х)
Понимаю, как решать, а написать никак не получается(
стыдно до ужаса
In\/isible вне форума Ответить с цитированием
Старый 28.04.2011, 15:00   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Наработки где?
Цитата:
- заполнение ( с клавиатуры и из файла) массива RASP с элементами типа TRAIN; записи должны быть размещены в алфавитном порядке по названию пунктов назначения;
Находим место, в которое надо вставить запись, увеличиваем размер массива на 1, смещаем записи на 1 вправо, вставляем запись
Цитата:
- вывод информации о поездах, отправляющихся после введенного с клавиатуры времени;
Банальное "если"
Цитата:
- если таких поездов нет, выдать сообщение.
Тоже банальное "если"
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 17.05.2011, 21:10   #3
In\/isible
 
Аватар для In\/isible
 
Регистрация: 26.04.2011
Сообщений: 6
По умолчанию

Код:
uses crt;
type
    train=record
                nazn:string;
                numr:integer;
                time:real;
                end;
    rasp=array[1..100] of train;
var
   t:rasp;
   f:text;
   a:train;
   n:integer;

procedure chtenie(f:text; var x:rasp);
var i:integer;
begin
     assign(f,'poezd.txt');
     reset(f);
     i:=1;
     while not eof(f) do
           begin
                readln(f,x[i].nazn);
                readln(f,x[i].numr);
                readln(f,x[i].time);
                writeln(f,x[i].nazn);
                writeln(f,x[i].numr);
                writeln(f,x[i].time);
           end;
     close(f);
end;

function max(x:rasp; nx:integer):integer;
var k,i:integer;
begin
     k:=1;
     for i:=1 to nx do
         if x[i].nazn>x[k].nazn then k:=i;
     max:=k;
end;

procedure swap(var x,y:string);
var z:string;
begin
     z:=x;
     x:=y;
     y:=z;
end;

procedure vibor(var x:rasp; nx:integer);
var i:integer;
begin
     for i:=nx downto 1 do
         swap(x[i].nazn, x[max(x,i)].nazn);
end;


procedure vyvod(f:text; var x:rasp);
var i,n:integer;
    k:real;
begin
     writeln('              введите время отправления: ');
     readln(k);
     assign(f,'poezd.txt');
     reset(f);
          for i:=1 to i+1 do
          while not eof (f) do
     begin
          if (k<=x[i].time) then writeln(x[i].nazn:10,x[i].numr:10,'      ', x[i].time);
     end;
     if (k>x[i].time) then writeln('поездов нет');
     close(f);
end;

begin
     chtenie(f,t);
     vyvod(f,t);
     vibor(t,3);
     vyvod(f,t);
end.

Последний раз редактировалось In\/isible; 17.05.2011 в 21:15.
In\/isible вне форума Ответить с цитированием
Старый 17.05.2011, 21:13   #4
In\/isible
 
Аватар для In\/isible
 
Регистрация: 26.04.2011
Сообщений: 6
По умолчанию

не работает процедура чтения
Что тут не так?...х)

Последний раз редактировалось In\/isible; 17.05.2011 в 21:16.
In\/isible вне форума Ответить с цитированием
Старый 17.05.2011, 22:33   #5
In\/isible
 
Аватар для In\/isible
 
Регистрация: 26.04.2011
Сообщений: 6
По умолчанию

ВСЁ РАБОТАЕТ!!! (^^,)
Код:
uses crt;
type
    train=record
                time:string[20];
                numr:integer;
                nazn:string[20];
            end;

     rasp=array[1..20] of train;
     
var t:rasp;
    f:text;
    dl:integer;
     
procedure txt_to_mas(var dlx:integer;fx:text;var tx:rasp);
    var i:integer;
    begin
         reset(fx);
         i:=1;
         while not eof(fx) do
                             begin
                                    readln(fx,tx[i].time);
                                    readln(fx,tx[i].numr);
                                    readln(fx,tx[i].nazn);
                                    inc(i);
                             end;
         dlx:=i-1;
         close(fx);
    end;



procedure vivod(dlx:integer;tx:rasp);
var i:integer;
begin
    writeln('                -RASPISANIE- ');
    for i:= 1 to dlx do
        begin
        writeln(tx[i].time:5);
        writeln(tx[i].numr:5);
        writeln(tx[i].nazn:5);
        end;
end;





procedure swap (var x,y:train);
var z:train;
begin
z:=x;
x:=y;
y:=z;
end;


function max (tx:rasp; dlx:integer):integer;
var k,i:integer;
begin k:=1;
      for i:= 1 to dlx do
          if tx[i].nazn > tx[k].nazn then k:=i;
      max:=k;
end;



procedure vibor (var tx:rasp;dlx:integer);
var i:integer;
begin
     for i:= dlx downto 1 do
    swap(tx[i],tx[max(tx,i)]);
end;
    
procedure vyvod(fx:text; var tx:rasp);
var i,n:integer;
    k:string[20];
begin
     writeln('              Vvedite vremya otpravleniya: ');
     readln(k);
     assign(fx,'poezd.txt');
     reset(fx);
          for i:=1 to i+1 do
          while not eof (fx) do
     begin
          readln(fx,tx[i].time);
          readln(fx,tx[i].numr);
          readln(fx,tx[i].nazn);
          if (k <= tx[i].time) then writeln(tx[i].nazn:10, tx[i].numr:10,'      ', tx[i].time);
     end;
     if (k>tx[i].time) then writeln('takih poezdov net');
     close(fx);
end;
    
begin
assign(f,'poezd.txt');
txt_to_mas(dl,f,t);
vibor(t,dl);
vivod(dl,t);
vyvod(f,t);
end.
In\/isible вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Паскале (Массив) FORZE2010 Помощь студентам 3 09.03.2011 21:25
Задача на Паскале с кодом асемблера(Массив) lezg1n Помощь студентам 0 09.03.2011 21:19
задача на паскале - Матрица,2-х мерный массив vdv08 Помощь студентам 15 22.09.2008 14:48
задача на паскале - Матрица,2-х мерный массив vdv08 Помощь студентам 1 14.09.2008 12:45