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

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

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

> Типизированные файлы, задача про адрес
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Женский
Реальное имя: Ольга

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


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

Условие задачи прошлой лаб. такое:
1. Сформировать массив записей с полями улица, номер дома, квартира, кол-во жильцов и вывести его на экран в виде таблицы.
2. Найти и вывести на экран кол-во жильцов по заданному пользователем адресу.
3.Сформировать новый массив не включающий поля "улица".
4.Вывести новый массив в виде таблицы.

в этой лаб. условие не меняестся, только надо все это сделать через файлы и добавить сортировку по чему либо.

Вот, что у меня получилось, программа запускается, но ничего не делает и тут не хватает сортировки. Заранее извиняюсь за безобразие в программе.

program zapis;
uses crt;
const
n=10;
type
adres=record
street:string;
dom,kv,zilci:integer;
end;
ff=file of adres;
mas_adres=array [1..n] of adres;
mas_nov=array [1..n] of adres;
var
f:ff;
f1:file of real;
z:adres;
m:mas_adres;
ma:mas_nov;
i,t,p:integer;
k:word;
v:boolean;
st,sp:string;

Procedure vvod(var zt:adres;stt:string);
begin
for i:=1 to 2 do
with m[i] do
begin
street:=stt;
write('street ');
readln(street);
write('# doma ');
readln(dom);
write('# kvartiri ');
readln(kv);
write('kol-vo zilcov ');
readln(zilci);
end;
end;

Procedure poisk(nt:byte;mt:mas_adres);
var
i:byte;
st,st1:string;
begin
write('fileadres');
readln(st1);
assign(f1,st1);
rewrite(f1);
v:=true;
writeln('st');
readln(st);
for i:=1to 2 do
if mt[i].street=st
then
if v
then
begin
writeln('kolvo zilcov');
with mt[i] do
writeln(zilci:4);
v:=false;
end
else
with mt[i] do
writeln(zilci:10);
close(f1);
end;
{for i:=1 to 2 do
with zt do
begin
readln(street);
readln(dom);
readln(kv);
for i:=1 to 2 do
if ((zt.street=m[i].street) and (zt.dom=m[i].dom)) and (zt.kv=m[i].kv)
then
begin
write('Kol-vo zilcov: ');
write(m[i].zilci);
writeln;
v:=true;
end;
if v=false then
writeln('takogo adresa ne naideno')
end;
end;}

begin
clrscr;
writeln('viberite 1,2,3,4,5 ');
readln(t);
case t of
1:begin
write('file street');
readln(st);
assign(f,st);
rewrite(f);
p:=0;
repeat
writeln('street or enter');
readln(sp);
if sp<>''
then
begin
p:=p+1;
vvod(m[p],sp);
write(f,m[p]);
end;
until sp='';
close(f);
end;

2:begin
repeat
writeln('filestreet or enter');
readln(st);
if st<>''
then
begin
assign(f,st);
{$I-}
reset(f);
k:=ioresult;
if k<>0
then
writeln('error');
{$I-}
end;
until (st='') or (k=0);
p:=0;
while not eof (f) do
begin
p:=p+1;
read(f,m[p]);
end;
close(f);
end;

3:begin
clrscr;
assign(f,st);
reset(f);
write('--------------------------------------------------');
writeln;
write('| street | #doma | #kv | kol-vo zilcov |');
for i:=1 to 2 do
with m[i] do
begin
writeln;
write(street:12,' ');
write(dom:6, ' ' ,kv:9, ' ', zilci:8, ' ');
writeln;
end;
write('---------------------------------------------------');
writeln;
close(f);
end;

{ 4:sort; }
5:poisk(n,m)
end;

{Procedure novmas(var zet:mas_adres; var zit:mas_nov);
var
i:integer;
begin
for i:=1 to 2 do
begin
ma[i].dom:=m[i].dom;
ma[i].kv:=m[i].kv;
ma[i].zilci:=m[i].zilci;
end;
end;

Procedure novmasa(var zit:mas_nov);
begin
write('-------------------------------------');
writeln;
write('| #doma | #kv | kol-vo zilcov |');
for i:=1 to 2 do
with ma[i] do
begin
writeln;
write(dom:6, ' ' ,kv:8, ' ', zilci:8, ' ');
writeln;
end;
write('-------------------------------------');
writeln;
end;}

{begin
clrscr;
{vvod(z,st);}
{vivod(z);
poisk(n,m);
{for i:=1 to 2 do
novmas(m,ma);
novmasa(ma);
readln; }
end.



Лектор дал шаблон программы через case(когда писал сам запутался в переменных и нас запутал), но мне почему то кажется, что через сами процедуры будет проще....


Добавлено через 3 мин.
И еще, на всякий случай таже программа, только с записями, уже проверенная...


Прикрепленные файлы
Прикрепленный файл  2KL2FAIL.PAS ( 3.41 килобайт ) Кол-во скачиваний: 273
Прикрепленный файл  2KLAB1ZA.PAS ( 2.18 килобайт ) Кол-во скачиваний: 284
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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