Исправьте пожалуйста мне всего несколько строк.

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Absent
Сообщения: 4
Зарегистрирован: 17 май 2008, 13:38

Имеются сведения о районных библиотеках города: номер, тип(детская или взрослая), район, адрес, часы работы.
Вывести адреса и часы работы всех детских библиотек данного района
Немного не получилось

Код: Выделить всё

program ship;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const
n=3;
Type
masschisla=array[1..10] of integer;
masstext=array[1..100] of string;
Var
detvzros,tip:masschisla;
nomer,adress,raion,chasi:masstext;
i:integer;
k:string;

begin
for i:=1 to n do
begin
writeln('nomer ',i,' bibkioteki:');
readln(nomer[i]);
end;

for i:=1 to n do
begin
writeln('tip ',i,' bibkioteki:');
readln(tip[i]);
end;

for i:=1 to n do
begin
writeln('raion ',i,' bibkioteki:');
readln(raion[i]);
end;

for i:=1 to n do
begin
writeln('adress ',i,' bibkioteki:');
readln(adress[i]);
end;

for i:=1 to n do
begin
writeln('chasi raboti ',i,' bibkioteki:');
readln(chasi[i]);
end;

write('vvdite raion');
readln(k);
For i:=1 to n do
begin
if (tip[i]='detskaya') and (raion[i]=k) then
writeln('biblioteka nomer  ',nomer[i],' ',adress[i],' chasi raboti ',chasi[i]);
end;
readln;
end.


Всему виной вот эти стороки :
write('vvdite raion');
readln(k);
For i:=1 to n do
begin
if (tip='detskaya') and (raion=k) then

как нужно правильно присваить значение у текста?
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Прежде всего - задача явно на использование записей.
Ни что так не ограничивает фантазию программиста, как компилятор...
Absent
Сообщения: 4
Зарегистрирован: 17 май 2008, 13:38

это я понимаю
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Absent писал(а):это я понимаю

Странно, в коде не видно ни одного упоминания о записях.
Нужно не описать несколько массивов и обрабатывать их синхронно, а создать тип данных, включающий в себя все нужные поля.
Ни что так не ограничивает фантазию программиста, как компилятор...
Absent
Сообщения: 4
Зарегистрирован: 17 май 2008, 13:38

Дайте хотябы ссылку, где почитать можно об этом
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Посмотрите в этом разделе, таких задач решено уже великое множество.
Ни что так не ограничивает фантазию программиста, как компилятор...
Absent
Сообщения: 4
Зарегистрирован: 17 май 2008, 13:38

Спасибо решил

Код: Выделить всё

program shipilin_52;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const
n=3;
Type
bibliotekaRecord=Record
Detskaya: String;
end;
masschisla=array[1..10] of integer;
masstext=array[1..100] of string;
Var
nomer:masschisla;
tip,adress,raion,chasi:masstext;
i:integer;
biblioteka:bibliotekaRecord;
k:string;

begin
for i:=1 to n do
begin
writeln('nomer ',i,' bibkioteki:');
readln(nomer[i]);
end;

for i:=1 to n do
begin
writeln('tip ',i,' bibkioteki:');
readln(tip[i]);
end;

for i:=1 to n do
begin
writeln('raion ',i,' bibkioteki:');
readln(raion[i]);
end;

for i:=1 to n do
begin
writeln('adress ',i,' bibkioteki:');
readln(adress[i]);
end;

for i:=1 to n do
begin
writeln('chasi raboti ',i,' bibkioteki:');
readln(chasi[i]);
end;

write('vvdite raion');
readln(k);
biblioteka.Detskaya:='detskaya';
For i:=1 to n do
begin
if tip[i]=biblioteka.Detskaya then
if raion[i]=k then
writeln('biblioteka nomer  ',nomer[i],' ',adress[i],' chasi raboti ',chasi[i]);
end;
readln;
end.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Absent писал(а):Спасибо решил


Врядли вам за такое решение хорошую оценку поставят.
Нужно все поля разместить в одной записи, т.е. что то типа
[syntax='Delphi']
Type
TLibrary=record
Num:integer;
sType:boolean;
Addres:string;
Work:string;
end;
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Ответить