Консультация № 169433
15.06.2009, 15:17
0.00 руб.
18.06.2009, 08:18
0 10 0
Здравствуйте!
Вот мой "черный" код программы над которым я сижу уже четвертый час.. это я в стадии разработки, приступаю к работе с записями.. пока вот на таком уровне . Вот разложила на столе питерские издания по Паскалю, и решаю.. знаний не хватает однозначно, чтобы написать то, что хочу. Буду благодарна за любые идеи, и еще- критикуйте мои ошибки, что неправильно, и как нужно.. чтобы мне разобраться..
-m- хочу сделать 5 видов товаров, мне нужно, чтобы вводя с клавиатуры, осуществлялась проверка, как занести в программу 5 товаров, чтобы ниже chelovek[i].m= описать цифрой (через перечисляемый тип или как??)- это для меня важно, остальное допишу с вводом-ввыводом данных.. с графикой тоже справлюсь..
-по условию 30 человек, но в массиве сделала пока что только на 3, чтобы можно было периодически проверять при написании
-
Помогите!!!

Код:
uses crt;
type anketa=record
fio: string[45];
dom_tel: string[8];
adres: string[50];
m: 1..5;
end;
var
klient: anketa;
chelovek: array [1..3] of anketa;
i: integer;
begin
for i:=1 to 3 do
begin
clrscr;
writeln ('введите сведения о', i, '-м клиенте');
{обратите внимание, ввод каждого поля осуществляется отдельно!!!!!}
writeln ('введите фамилию, имя и отчество');
readln (chelovek[i].fio);
writeln ('введите домашний телефон');
readln (chelovek[i].dom_tel);
writeln ('введите адрес');
readln(chelovek[i].adres);
writeln ('введите товар');
readln(chelovek[i].m);
end;
writeln ('ввод закончен');
writeln ;
{обратите внимание, что вывод записи осуществляется по полям!!!!!!!}
for i:=1 to 3 do
if chelovek[i].m = телевизор then
writeln ('ФИО клиента:', chelovek[i].fio);
readkey;
end.




Приложение:
Текст задания: (по Златопольскому)
Известна информация о 30-ти клиентах пункта проката: фамилия, отчество, адрес и дом.телефон. Известно также название предмета, взятого каждым из них напрокат (в виде: m-телевизор, х-холодильник и т.д).Вывести на экран фамилию, имя и адрес клиентов, взявших напрокат телевизор.

Обсуждение

Неизвестный
15.06.2009, 15:26
общий
Народ! по вопросу 169424, который я тоже задавала по Записям, я теперь поспешила, я поняла как делать , благодаря Юрию Борисовичу. Спасибо вам!
Неизвестный
15.06.2009, 15:34
общий
Каждый клиент покупает один товар или может от одного до 5?
Если один, то:
type anketa=record
fio: string[45];
dom_tel: string[8];
adres: string[50];
m: string[50];
end;
Если от одного до пяти, то
...
m: array[1..5] of string[50];
....

Сравнение:

if chelovek[i].m = 'телевизор' then
...
Неизвестный
15.06.2009, 15:51
общий
Нет, это я к примеру 5 товаров (так как ввод должен быть с клавиатуры), но каждый клиент по условию берет один из товаров..
Неизвестный
15.06.2009, 16:06
общий
Тогда подправьте то, что я уже написал и двигайтесь дальше:
...
m: string[50];
...

Сравнение:

if chelovek[i].m = 'телевизор' then
...

Удачи!
Неизвестный
15.06.2009, 16:12
общий
Спасибо вам Игорь за помощь! Справлюсь..
Неизвестный
15.06.2009, 16:16
общий
Будут вопросы - пишите.
Неизвестный
15.06.2009, 18:14
общий
if chelovek[i].m = 'телевизор' then!!!

Вот более-менее нормальный вид, но как осуществить поиск? Тут на два человека. Принцип таков, ввожу с клавиатуры- нужно, чтобы именно в таблицу занес того человека, у которого в списке будет- "телевизор" (ввод с клавиатуры). Как это сделать?
А тут получается, что когда заполняю на 2 человека (к примеру, у 1-ого- холодильник, а у второго- телевизор), в таблицу выдает только false, а true пропускает. Помогите! В чем ошибка??

Код:
uses crt;
const n=2;
type anketa=record
fio: string[45];
dom_tel: string[8];
adres: string[50];
m: string[50];
end;

var
klient: anketa;
chelovek: array [1..n] of anketa;
i: integer;
m: array[1..5] of string[50];

begin
clrscr;
writeln ('введите сведения о', i , '-м клиенте');
for i:=1 to n do

begin
writeln('Клиент ',i);
write('Фамилия, Имя, Отчество: ');
{обрати внимание, ввод каждого поля осуществляется отдельно}
readln(chelovek[i].fio);
write ('Домашний телефон:');
readln (chelovek[i].dom_tel);
write ('Адрес:');
readln(chelovek[i].adres);
writeln ('Товар');
readln(chelovek[i].m);
writeln
end;
clrscr;
for i:=1 to n do
if chelovek[i].m = 'телевизор' then
writeln('Список клиентов:');
writeln('----------------------------');
writeln('| ФИО | Адрес | Товар | ');
writeln('----------------------------');

gotoXY(1,whereY);{заносим массив в таблицу}
write('| ',chelovek[i].fio);
gotoXY(13,whereY);
write('| ',chelovek[i].adres);
gotoXY(26,whereY);
write('| ',chelovek[i].m);
gotoXY(45,whereY);
write('|');
writeln;
writeln('----------------------------');
readkey;
end.
Неизвестный
16.06.2009, 07:22
общий
У Вас для клиента с телевизором выполняется только один шаг:
if chelovek[i].m = 'телевизор' then
writeln('Список клиентов:');
Я так понимаю Вам нужно, чтобы выполнялся вывод всей записи:

if chelovek[i].m = 'телевизор' then
begin
writeln('Список клиентов:');
writeln('----------------------------');
writeln('| ФИО | Адрес | Товар | ');
writeln('----------------------------');

gotoXY(1,whereY);{заносим массив в таблицу}
write('| ',chelovek[i].fio);
gotoXY(13,whereY);
write('| ',chelovek[i].adres);
gotoXY(26,whereY);
write('| ',chelovek[i].m);
gotoXY(45,whereY);
write('|');
writeln;
writeln('----------------------------');
end;

Все что между begin и end выполнится только для клиента с телевизором.
Неизвестный
16.06.2009, 09:47
общий
Цитата: 224392
if chelovek[i].m = 'телевизор' then
begin


Даже и не знаю, что и сказать... и вот с этим begin я не могла сделать усё)). Как могла быть так не внимательна... спасибо! Тут и сказать нечего.
Неизвестный
16.06.2009, 11:40
общий
Ничего, с годами проходит.
Опять же - практика.
Форма ответа