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

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

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

> Прошу помощи. (тип данных запись), Багаж пасажиров...
сообщение
Сообщение #1


Новичок
*

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

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


Очень прошу помочь с решением даной задачи:

Багаж пассажира характеризуется количеством и общим весом вещей. Создать файл f, содержащий информацию о багаже n пассажиров. Информацию о багаже вывести на экран в виде таблицы. Выяснить пассажира багаж которого состоит из 1-го чемодана весом менее z килограмм.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

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

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


Простите за беспокойство но мне б еще с табличкой помочь.
Я сделал таблицу, ну не совсем с помошью gotoxy. А теперь не знаю как запустить цыкл, чтоб в таблицу входил не тролько 1-ый пассажир.
program Operation Valiza;
uses crt;
type
dani=record
imya:string;
vaga_re4ej:byte;
kiljkistj_re4ej:integer;
end;
pasazhur=array [0..100] of dani;
var
vaga_re4ej:byte;
Q:pasazhur;
f:file of dani;
n,m,i,j,z :integer;
BEGIN
textcolor(yellow);
textbackground(black);
clrscr;
writeln('Vveditj kiljkistj pasagiriv:');
readln(n);
assign(f,'data.dat');
rewrite(f);
for i:=1 to n do with q[i] do
begin
writeln('Vveditj dani pro ',i,'-go pasazhura');
writeln('Imja:');
readln(imya);
writeln('Kiljkistj valiz:');
readln(kiljkistj_re4ej);
writeln('Vaga:');
readln(vaga_re4ej);
write(f,q[i]);
end;
reset(f);
while not EoF(f) do begin
read(f,q[i]);
end;
for i:=1 to n do begin
textcolor(0);
textbackground(5);
clrscr;
gotoxy(32,1); writeln('Tablica Informacji:');
gotoxy(20,4); writeln('Imja:');
gotoxy(37,4); writeln('Valizy:');
gotoxy(54,4); writeln('Vaga Valiz:');
textcolor(white);
gotoxy(20,i*+4+6); write(q[i].imya);
gotoxy(37,i*+4+6); write(q[i].kiljkistj_re4ej);
gotoxy(54,i*+4+6); write(q[i].vaga_re4ej);
repeat until keypressed;
end;
begin
clrscr;
writeln('Vvedu vagu re4ey jaku tobi potribno znaty:'); readln(m);
for i:=1 to n do
if q[i].vaga_re4ej=m
then writeln(q[i].imya);
readln;
end;
END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(CormiX @ 25.03.2010 19:04) *
Простите за беспокойство но мне б еще с табличкой помочь.
Я сделал таблицу, ну не совсем с помошью gotoxy. А теперь не знаю как запустить цыкл, чтоб в таблицу входил не тролько 1-ый пассажир.
Беспокойства нет никакого, для того и форум )).
Послушай, ты чересчур увлекся модулем CRT с его малиновыми цветами, позиционным выводом и - главное! - очисткой экрана. Тебе она ТАК понравилась, что ты как только что-то выведешь - так сразу и стираешь! smile.gif Зачем ты вставил clrscr в цикл вывода? Убери.

Я тебе больше скажу, только ты не обижайся smile.gif. Забудь пока (на время) вообще про всякие TextColor и GoToXY. Позаботься о ЛОГИКЕ программы. Красивости (если не расхочется) будешь наводить потом. CRT - это ЗЛО, и зло немалое.. За этими глупостями ты не видишь главного. Я тебе в прошлый писал, что НЕТ СМЫСЛА записывать файл, если ты его СТИРАЕШЬ СРАЗУ после входа в программу. Ну, сам посуди - кому такой файл нужен?? Но ты не счел нужным обратить внимание на мои слова ((.

Я тебе набросал образец, как приблизительно надо делать. К сожалению, совсем без CRT обойтись не удается, поскольку в этом модуле по какой-то странной причине еще и управление клавиатурой. Но я использую только ReadKey из него, обрати на это внимание. Сначала тебе, может быть, покажется, что это не очень красиво, но потом (немного поигравши с этой простейшей прогой) ты поймешь, что так гораздо лучше. Стирать экран нецелессобразно иногда, лучше его проматывать. Представь себе, что у тебя число пассажиров превышает количество строк на экране - что ты будешь делать? Если ты сейчас ответил "листать постранично", то, извини, с того и следует начинать, что делать всю эту кухню. И за ней ты забудешь про основную задачу.. А тем не менее, простейшими средствами типа Write и WriteLn можно добиться очень неплохих результатов. И обычная промотка окна командной строки позволит просмотреть таблицу любого размера.

Постарайся разобраться с моим кодом. Если что-то неясно - спрашивай. Тут есть начальная функциональность. Что еще нужно - можно добавить.

И еще: обрати МАКСИМАЛЬНОЕ ВНИМАНИЕ на форматирование (сдвиги). Вникни в то, как у меня сделано - там КАЖДАЯ строчка и каждое слово на СВОЕМ месте. Будешь соблюдать эти простые правила - будешь находить свои ошибки (типа той же очистки экрана в цикле) в несколько раз быстрее.

Давай, успехов тебе.
uses
crt;

const
c1= 10;
c2= 20;
c3= 15;
c4= 20;
Filename= 'passazh.dat';

type
tPassazhir=record
imya: string;
vaga: byte;
kilkist: integer;
end;

var
f: file of tPassazhir;
pass: array [1..100] of tPassazhir;
n: integer;


procedure AddRecord;
BEGIN
Inc(n);
with pass[n] do begin
write('Imja: ');
readln(imya);
write('Kiljkistj valiz: ');
readln(kilkist);
write('Vaga: ');
readln(vaga);
end
end;


procedure DelRecord;
var
i: integer;
begin
Write('Vvedite nomer zapisi dlya udaleniya (0 dlya otkaza): ');
ReadLn(i);
if i>0 then begin
for i:=i to n-1 do pass[i]:=pass[i+1];
Dec(n);
WriteLn('Zapis udalena')
end
end;


procedure ClearBase;
begin
n:=0;
WriteLn('Vse zapisi udaleny');
end;


function IStr(i: integer): string;
begin
Str(i,IStr)
end;


function FillStr(c: char; i: integer): string;
var
s: string;
begin
s:='';
while Length(s)<i do Insert(c,s,1);
FillStr:=s
end;


procedure FillStr(c: char; s1,s2,s3,s4: string);
begin
WriteLn(c,s1:c1,c,s2:c2,c,s3:c3,c,s4:c4)
end;


function CenterStr(s: string; l: integer):string;
begin
CenterStr:= s+FillStr(' ',(l-Length(s))div 2)
end;


procedure ShowBase;
var
i: integer;
begin
WriteLn;
WriteLn('+',FillStr('=',c1+c2+c3+c4+3),'+');
WriteLn('|',CenterStr('Baza Dannyh Bagazha Passazhirov',c1+c2+c3+c4+3):c1+c2+c3+c4+3,'|');
WriteLn('+',FillStr('-',c1+c2+c3+c4+3),'+');
Write('|',CenterStr('Nomer',c1):c1);
Write('|',CenterStr('Imja',c2):c2);
Write('|',CenterStr('Valizy',c3):c3);
Write('|',CenterStr('Vaga Valiz, kg',c4):c4);
WriteLn('|');
Write('|',FillStr('-',c1));
Write('+',FillStr('-',c2));
Write('+',FillStr('-',c3));
Write('+',FillStr('-',c4));
WriteLn('|');
for i:=1 to n do with pass[i] do begin
Write('|',CenterStr(IStr(i),c1):c1);
Write('|',CenterStr(imya,c2):c2);
Write('|',CenterStr(IStr(kilkist),c3):c3);
Write('|',CenterStr(IStr(vaga),c4):c4);
WriteLn('|');
end;
WriteLn('+',FillStr('-',c1+c2+c3+c4+3),'+');
end;


procedure ReadFile;
begin
assign(f,FileName);
ReSet(f);
while not EoF(f) do begin
Inc(n);
read(f,pass[n])
end;
Close(f);
WriteLn('File '+FileName+' prochitan');
end;


procedure WriteFile;
var
i: integer;
begin
assign(f,Filename);
rewrite(f);
for i:=1 to n do write(f,pass[i]);
Close(f);
WriteLn('File '+FileName+' zapisan');
end;

var
c: char;

begin
n:=0;
repeat
WriteLn('Dobavitj Udalitj Ochistitj Pokazatj Read Write Exit');
c:=ReadKey;
case UpCase© of
'D': AddRecord;
'U': DelRecord;
'O': ClearBase;
'P': ShowBase;
'R': ReadFile;
'W': WriteFile;
'E',#27: begin
WriteLn('Rabota s programmoi zavershena');
Exit
end;
else WriteLn('Nevernyi vybor')
end
until false
END.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 13.09.2025 6:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name