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

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

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

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


Гость






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

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

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


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

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

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


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


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

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


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


Гость






сам не понял про какие окна там говорят. программа на BP 7.0, как в школе smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






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

Если не будет ТВОИХ набросков и конкретных вопросов по заданию (вопрос "ничего не получается" не пойдет), тема закрывается...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






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

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

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

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


Гость






Цитата

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


Гость






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


Гость






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

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


Гость






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


Гость






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

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

 





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