![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Phoenix |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем Привет!
Есть просьба огромная! Не могу дописать программу,а сдавать уже завтра надо. Буду очень признателен за любую помощь. В поисковике вроде смотрел и FAQ тоже, возможно что-то упустил. (Прошу прощения за такую простенькую прогу). Первую часть ее сделал, со второй немного проблематично. 1.Описать запись с именем NOTE, содержащую следующие поля: - фамилия, имя; - номер телефона; - год рождения. 2.Написать программу, выполняющую следующие действия: - ввод данных с клавиатуры в массив, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по датам дней рождения; - вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; если такого нет, вывести на экран соответствующее сообщение; - запись массива в файл под заданным с клавиатуры именем. Еще раз за раннее спасибо! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Не могу дописать программу Значит, начал? Приведи то, что уже сделано... |
Phoenix |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код Program Note1; uses crt; type note=record fio:string; tel:string [14]; godr:record d:1..31; m:1..12; y:integer; end; end; mas=array [1..8] of note; var a:mas; i,j,n,r:integer; Begin clrscr; write ('Vvod n:'); readln (n); for i:=1 to n do with a[i] do begin write ('FIO:'); readln (fio); write ('Nomer telephona:'); readln (tel); write ('birthday:'); with godr do readln (d,m,y); end; { !!! } for i:=1 to n-1 do for j:=i+1 to n do if a[i].godr.d>a[j].godr.d then begin r:=a[i].godr.d; a[i].godr.d:=a[j].godr.d; a[j].godr.d:=r; end; { !!! } for i:=1 to n do with a[i],godr do writeln (fio,':',' ','tel ',tel,',birthday ',d,'-',m,'-',y); readkey; End. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Var T: note;
...
{ !!! }
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].godr.d > a[j].godr.d then begin
T := a[i]; a[i] := a[j]; a[j] := T; { <--- Меняешь местами НЕ дни рождения, а записи !!! }
end;
{ !!! }
Кстати, должно сортироваться только по числу, или по полной дате? Или по числу/месяцу? |
Phoenix |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
По полной дате.
Еще один вопрос, если не затруднит Вас ответить на него: в задании 2-2 не могу понять что исполльзовать. Спасибо за помощь. Весьма благодарен. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Если по полной дате, то придется писать функцию сравнения дат... Вот так будет выглядеть программа:
Program Note1;
uses crt;
type
datatype = record
d: 1..31;
m: 1..12;
y: integer;
end;
type
note=record
fio: string;
tel: string [14];
godr: datatype; { <--- Выделяем это в отдельный тип... }
end;
mas = array [1..8] of note;
var
a: mas;
i, j, n, r: integer;
T: note;
function compare(d_1, d_2: datatype): integer;
begin
if d_1.y <> d_2.y then compare := (d_1.y - d_2.y) div abs(d_1.y - d_2.y)
else begin
if d_1.m <> d_2.m then compare := (d_1.m - d_2.m) div abs(d_1.m - d_2.m)
else begin
if d_1.d <> d_2.d then compare := (d_1.d - d_2.d) div abs(d_1.d - d_2.d)
else compare := 0;
end
end
end;
Begin
clrscr;
write ('Vvod n:'); readln (n);
for i:=1 to n do
with a[i] do begin
write ('FIO:'); readln (fio);
write ('Nomer telephona:'); readln (tel);
write ('birthday:');
with godr do readln (d,m,y);
end;
{ !!! }
for i:=1 to n-1 do
for j:=i+1 to n do
if compare(a[i].godr, a[j].godr) = 1 then begin
T := a[i]; a[i] := a[j]; a[j] := T;
end;
{ !!! }
for i:=1 to n do
with a[i],godr do
writeln (fio,':',' ','tel ',tel,',birthday ',d,'-',m,'-',y);
readkey;
End.
Задание 2-2 это: Цитата - вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; если такого нет, вывести на экран соответствующее сообщение; ?Тогда последовательный просмотр всех элементов массива (пока не переберем полностью все элементы или не найдем, что нужно) : i := 1; found := false;
while (i <= n) and (not found) do
if (a[i].tel = s) then found := true { <--- S - это строка с телефоном, введенная пользователем }
else inc(i)
if found then { элемент a[i] содержит нужный номер телефона, можно печатать информацию}
else { введенного номера в базе нет - ошибка ввода }
|
Phoenix |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
ага... Понял )
Выручил! Спасибо Вам за помощь. |
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 0:16 |