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

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

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

> Задача на строки и массивы, программа для работы с базой тел.станции
demure
сообщение 30.10.2005 16:31
Сообщение #1


Гость






Пожалуйста! Помогите срочно! Хотя бы наводку какую-нибудь... Вообще без понятия, что тут делать smile.gif

Программа должна содержать меню и ввод-вывод в окна на экране. Необходимо предусмотреть контроль ошибок пользователя при вводе данных.
При разработке программы применить технологию нисходящего проектирования. Логически законченные объекты оформить в виде подпрограммы, все необходимые данные которым передаются через список параметров. Использование глобальных переменных следует избегать.

Итак, задание smile.gif
Предприятие имеет местную телефонную станцию на 20 номеров. Телефонный справочник данного предприятия для каждого номера телефона содержит номер помещения и список служащих, сидящих в данном помещении.
Составить программу, которая:
- корректирует базу
- по номеру помещения выдает номер телефона
- по фамилии выдает номер телефона и номер помещения.
номер телефона двузначный.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
klem4
сообщение 30.10.2005 16:50
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата
ввод-вывод в окна на экране


Программа под windows должна быть ? С окнами ? Или что ты имел в виду ?

А вообще-то очень пахнет обычной задачей на записи, на форуме решалось достаточно много их ... используй поиск, в какой конкретно части программы возникает проблемма ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
demure
сообщение 30.10.2005 17:12
Сообщение #3


Гость






сам не понял про какие окна там говорят. программа на BP 7.0, как в школе smile.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 30.10.2005 17:30
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Хорошо. Про окна забыли smile.gif

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

Type
TRec = record
tNumb : byte; // номер телефона из 2-х цифр
p : byte; // номер цеха
t : byte; // кол-во рабочих в данном цехе
workers : array[1..20] of string[30]; // фамилии рабочих данного цеха
end;

var
base : array[1..20] of TRec;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2005 17:37
Сообщение #5


Гость






demure, ты поиском по форуму пользовался? Скажи мне, чем кардинально твоя программа отличается от "магазина", "ж/д вокзала", "аэропорта", "спортивной команды"? Тем, что ЗА тебя решат ее так, что тебе только сдать останется?

Если не будет ТВОИХ набросков и конкретных вопросов по заданию (вопрос "ничего не получается" не пойдет), тема закрывается...
 К началу страницы 
+ Ответить 
demure
сообщение 21.11.2005 22:46
Сообщение #6


Гость






Вот, наконец-то занялся программой.
Сделал заполнение базы. Код такой:

Код

uses Crt;
type
TelefStation = Record
phone: LongInt;
nomer: byte;
FIO: string;
end;
var
Book: array[1..20] of TelefStation;
Nums,I: byte;
code: integer;
c: char;
quit: boolean;
{dobavlenie novoi zapisi}
procedure New_Item;
var
Kom:byte;
F:String;
Tl:LongInt;
begin
Clrscr;
Inc(Nums);
if Nums>20 then
begin
write('maksimalnoe kolichestvo zapisei!');
exit; end;
begin
writeln('Zapis N:',Nums); writeln;
writeln('Vvedite Nomer telef:');
readln(Tl);
writeln('Vvedite Nomer pomesheniya:');
readln(Kom);
writeln('Vvedite FIO');
readln(F);
writeln;
with Book[Nums] do
begin
FIO:=F;
nomer:=Kom;
phone:=Tl;
end;
Write('Novaya zapis uspeshno dobavlena!');
end;end;


далее по заданию - корректировка базы.
т.е., как объяснила (мало что понимающая, к сожалению) преподша, нужно, чтобы программа могла редактировать любую запись (удалять, изменять и пр.)
с удалением, я думаю не сложно... а вот с изменением. не совсем понимаю, как делать... нужно еще искать наверное, или, может поможете? smile.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 21.11.2005 23:22
Сообщение #7


Гость






Цитата
а вот с изменением. не совсем понимаю, как делать...

Как раз, с изменением дело тоже обстоит просто. Тебе нужно выбрать (а может, это указано у тебя в задании где-нибудь), ты хочешь работать напрямую с файлом, или сначала все данные читать в массив, обрабатывать их, и перезаписывать файл?

Я бы советовал второй вариант. Тогда алгоритм изменения записи такой: Читаешь содержимое файла в массив, по нужному тебе полю ищешь запись, которую надо поменять, и, собственно, меняешь:
WhatToFind := '...'; { Кого будем искать, эту строку можно и вводить с клавиатуры}
For i := 1 To 20 Do
With Book[i] Do Begin

{ Может быть не FIO, а любое другое поле из типа TelefStation,
зависит от того, что тебе нужно искать }
If FIO = WhatToFind Then Begin
{ Здесь запрашиваешь новые данные и заменяешь ими старые }
End;
 К началу страницы 
+ Ответить 
Guest
сообщение 22.11.2005 16:56
Сообщение #8


Гость






Цитата

да дело в том, что программа не должна использовать файлы. мы вообще работу с файлами еще не изучали smile.gif
в принципе можно и с ними сделать, ведь удобнее, ясное дело, училка все равно не допрет в чем дело, но мне это труднее...
 К началу страницы 
+ Ответить 
demure
сообщение 22.11.2005 17:05
Сообщение #9


Гость






Задание дано в таком же виде, как я написал - больше ничего..
базу всю, видимо, нужно вводить вручную каждый раз))
да, контроль ошибок... куда ткнуть проверку на то, двузначный ли номер я тоже не совсем понимаю
 К началу страницы 
+ Ответить 
volvo
сообщение 22.11.2005 17:28
Сообщение #10


Гость






Цитата
куда ткнуть проверку на то, двузначный ли номер я тоже не совсем понимаю

Сразу после ввода номера и проверяй его на двухзначность:
With Book[i] Do Begin
...
Repeat
Write('Введите номер: '); ReadLn(nomer);
If not nomer in [10 .. 99] Then
WriteLn('Ошибка - номер должен быть двухзначным !!!')
Until nomer in [10 .. 99];
...
End;
 К началу страницы 
+ Ответить 
Guest
сообщение 22.11.2005 18:50
Сообщение #11


Гость






так, это понятно.
ну так что там с корректировкой? unsure.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 22.11.2005 19:04
Сообщение #12


Гость






blink.gif Я же в посте №7 написал, как в массиве найти нужную запись... Не работаешь с файлами - не надо, но массив-то у тебя есть...
 К началу страницы 
+ Ответить 

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

 



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