![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Nastasia |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Женский Реальное имя: Nastya Репутация: ![]() ![]() ![]() |
задача простенькакя, а я совсем новичок в этом деле, хотелось бы понять и разобраться.
Состроить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность: раздельного изменения составных частей адреса; создания объектов этого класса; уничтожения объектов этого класса. поиска необходимого адреса по названию Написать программу, демонстрирующую работу с этим классом. type
pochta=class
index,dom:integer;
oblast,gorod,ulica:string;
procedure Changeindex(a:integer);
procedure Changedom(b:integer);
procedure Changeoblast(c:string);
procedure Changegorod(d:string);
procedure Changeulica(f:string);
procedure Input ; //процедура для ввода данных
procedure ShowInfo; //процедура демонстрируящая информацию
end;
var adres:pochta;a,b:integer;
c,d,f:string;
procedure pochta.Changeindex(a:integer);//изменение номера индекса
begin
index:=a;
end;
procedure pochta.Changedom(b:integer);//изменение номера дома
begin
dom:=b;
end;
procedure pochta.Changeoblast(c:string);//изменение области
begin
oblast:=c;
end;
procedure pochta.Changegorod(d:string);//изменение города
begin
gorod:=d;
end;
procedure pochta.Changeulica(f:string);//изменение улицы
begin
ulica:=f;
end;
procedure pochta.input;
begin
write('Oblast- ');
readln(oblast);
write('Gorod- ');
readln(gorod);
write('Ulica- ');
readln(ulica);
write('Dom- ');
readln(dom);
write('Index- ');
readln(self.index);
end;
procedure pochta.ShowInfo;
begin
writeln('oblast- ',oblast,' gorod- ',gorod,
' ulica- ',ulica,' dom- ',dom,' index- ',index);
end;
begin
adres:=pochta.create;
adres.Input;
write('Vvedite a= ');
readln;
adres.Changeindex(a);
adres.ShowInfo;
write('Vvedite b= ');
readln;
adres.Changedom(b);
adres.ShowInfo;
write('Vvedite c= ');
readln;
adres.Changeoblast(c);
adres.ShowInfo;
write('Vvedite d= ');
readln;
adres.Changegorod(d);
adres.ShowInfo;
write('Vvedite f= ');
readln;
adres.Changeulica(f);
adres.ShowInfo;
adres.Free;
writeln('enter for exit');
readln;
|
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Ну, во-первых, в приведенном коде я не увидел ни создания, ни уничтожения объекта, как того требует задание. Поиска, кстати, тоже.
Во-вторых, такой способ представления информации крайне неудобен. Логичнее было бы ввести отдельный класс области (индекс; название; возможно, список городов), города (индекс; индекс области; название; возможно, список улиц), отдельный класс улицы (индекс; индекс города; название; возможно, список или диапазон номеров домов), дом (индекс; индекс улицы (предусмотреть для дома минимум 2 адреса - для домов, находящихся на пересечении улиц; предусмотреть возможность буквенного окончания и номера корпуса). Сщбственно, так и поиск по адресу будет реализовать значительно проще. Кроме того, в процедурах изменения нужно предусмотреть контроль на допустимость значения. Например, номер дома не может быть отрицательным. |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 23:42 |