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

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

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

> Типизированные файлы, задача про адрес
ladybird
сообщение 3.10.2009 22:34
Сообщение #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 килобайт ) Кол-во скачиваний: 187
Прикрепленный файл  2KLAB1ZA.PAS ( 2.18 килобайт ) Кол-во скачиваний: 207
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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