Другие языки программирования и технологии
пжлстааа, срооочно!! кто знает паскаль???
в поезде 18 вагонов, в каждом 36 мест.информация о проданных на поезд билетах хранится в двухмерном массиве, номера строк которого соотвтствует номерам вагонов, а номера сттолбцов - номерам мест. если билет на то или иное место продан , то соответствующий элемент массива имеет значения 1, в противном случае - 0.составить программу , определяющую число свободных мест в любом их вагонов поезда.
Ну и что сложного? Вы в прописи заглядывали, или всю жизнь вот так "сижу думаю"?
i - номер вагона, а дальше цикл по столбцам
S := 0;
for j:=1 to 36 do S := S + A[i,j];
WriteLn('В ', i, ' вагоне ', 36-S, ' свободных мест' );
i - номер вагона, а дальше цикл по столбцам
S := 0;
for j:=1 to 36 do S := S + A[i,j];
WriteLn('В ', i, ' вагоне ', 36-S, ' свободных мест' );
Почти полный спектр услуг:
var Poezd : array [1..18, 1..36] of Byte;
procedure ClearPoezd;
var V, M : Byte;
begin
for V := 1 to 18 do for M := 1 to 36 do Poezd[V, M] := 0;
end;
function Svobodno(V : Byte) : Byte;
var M, K : Byte;
begin
K := 0; for M := 1 to 36 do if Poezd[V, M] = 0 then K := K + 1;
Svobodno := K;
end;
procedure InfoMesta(V : Byte);
var M : Byte;
begin
Write('Вагон ', V, ' : '); for M := 1 to 36 do if Poezd[V, M] = 0 then Write(M, ' '); WriteLn;
end;
procedure InfoPoezd;
var V, M : Byte;
begin
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
for V := 1 to 18 do if Svobodno(V) = 0 then WriteLn('Вагон ', V, ' - свободных мест нет. ') else InfoMesta(V);
end;
procedure Kupim(V : Byte);
var R : Byte;
begin
repeat
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
InfoMesta(V);
Write('Выберите проданное место или 0 для возврата: '); ReadLn(R);
if R in [1..36] then
if Poezd[V, R] = 1 then WriteLn('К сожалению место ', R, ' в вагоне ', V, ' уже занято! ')
else Poezd[V, R] := 1;
until R = 0;
end;
procedure Prodajem;
var R, V : Byte;
begin
repeat
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('Наличие свободных мест в вагонах: ');
for V := 1 to 18 do WriteLn('Вагон ', V, ' - свободных мест ', Svobodno(V));
Write('Выберите вагон или 0 для возврата: '); ReadLn(R);
if R in [1..18] then Kupim(R);
until R = 0;
end;
var R : Byte;
begin
ClearPoezd;
repeat
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('Информация о свободных местах в вагонах поезда: ');
WriteLn('1. Свободные мест всего поезда');
WriteLn('2. Внести информацию о продаже мест');
WriteLn('0. Завершить работу');
Write('Выберите действие: '); ReadLn(R);
case R of
1: InfoPoezd;
2: Prodajem;
end;
until R = 0;
WriteLn('Пока! Удачного дня! ');
end.
var Poezd : array [1..18, 1..36] of Byte;
procedure ClearPoezd;
var V, M : Byte;
begin
for V := 1 to 18 do for M := 1 to 36 do Poezd[V, M] := 0;
end;
function Svobodno(V : Byte) : Byte;
var M, K : Byte;
begin
K := 0; for M := 1 to 36 do if Poezd[V, M] = 0 then K := K + 1;
Svobodno := K;
end;
procedure InfoMesta(V : Byte);
var M : Byte;
begin
Write('Вагон ', V, ' : '); for M := 1 to 36 do if Poezd[V, M] = 0 then Write(M, ' '); WriteLn;
end;
procedure InfoPoezd;
var V, M : Byte;
begin
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
for V := 1 to 18 do if Svobodno(V) = 0 then WriteLn('Вагон ', V, ' - свободных мест нет. ') else InfoMesta(V);
end;
procedure Kupim(V : Byte);
var R : Byte;
begin
repeat
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
InfoMesta(V);
Write('Выберите проданное место или 0 для возврата: '); ReadLn(R);
if R in [1..36] then
if Poezd[V, R] = 1 then WriteLn('К сожалению место ', R, ' в вагоне ', V, ' уже занято! ')
else Poezd[V, R] := 1;
until R = 0;
end;
procedure Prodajem;
var R, V : Byte;
begin
repeat
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('Наличие свободных мест в вагонах: ');
for V := 1 to 18 do WriteLn('Вагон ', V, ' - свободных мест ', Svobodno(V));
Write('Выберите вагон или 0 для возврата: '); ReadLn(R);
if R in [1..18] then Kupim(R);
until R = 0;
end;
var R : Byte;
begin
ClearPoezd;
repeat
WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('Информация о свободных местах в вагонах поезда: ');
WriteLn('1. Свободные мест всего поезда');
WriteLn('2. Внести информацию о продаже мест');
WriteLn('0. Завершить работу');
Write('Выберите действие: '); ReadLn(R);
case R of
1: InfoPoezd;
2: Prodajem;
end;
until R = 0;
WriteLn('Пока! Удачного дня! ');
end.
я знаю! Задача не трудная! Если подумаешь, самаможешь решить.
К сожалению у меня паскаля нету =(
К сожалению у меня паскаля нету =(
во вложенном цикле тебе надо проверить каждый индекс массива - вот и всё
i - номер вагона, а дальше цикл по столбцам
S := 0;
for j:=1 to 36 do S := S + A[i,j];
WriteLn('В ', i, ' вагоне ', 36-S, ' свободных мест' );
Согласен с этим полностью!
S := 0;
for j:=1 to 36 do S := S + A[i,j];
WriteLn('В ', i, ' вагоне ', 36-S, ' свободных мест' );
Согласен с этим полностью!
Программа очень простая
Похожие вопросы
- кто знает паскаль?
- знающие паскаль, вопрос к вам
- кто знает Паскаль помогите написать програмку
- Помогите кто знает Паскаль
- Для тех, кто хорошо знает паскаль
- Помогите плизз....в долгу не останусь....Кто знает Паскаль!!??
- Я внутри написал, что я знаю про паскаль не то что решать и все такое а так теоретический в общем, смысл проги, я прав?
- Аналог ассоциативного массива в Паскале.
- ПАСКАЛЬ и ГРАФИКА
- Товарищи программисты на Delphi и Pascal помогите девушке!!!)) вопрос глупый..насчет паскаля..