Очень прошу помочь с задачей по двумерным массивам в Паскале.
Доброго времени суток!
Очень прошу помочь с задачей по двумерным массивам в Паскале. Дана матрица М[9,4] номеров в купейном вагоне.Заполнить её рядом натуральных чисел от 1 до 36. 1)Записать матрицу. 2)Реализовать запрос N места,вывод его индексов и замену его 0 - с повтором запроса. 3)Вывести матрицу оставшихся мест. 4)Определить число четных и нечетных элементов(верхних и нижних мест). Буду очень признателен за помощь! |
А вы сами пробовали что-то делать? Спросите, что не понимаете (не получается), мы и поможем
|
Вот что смог написать
program zadachka3; uses crt; var R: array[1..9,1..4] of integer; i,j:integer; obrazec:integer; found:boolean; begin ClrScr; randomize; writeln('Matrica R:'); for i:= 1 to 9 do begin for j:= 1 to 4 do begin R[i,j]:=random(36); write(R[i,j]:3); end; writeln; end; write('Vvedite obrazec dlya poiska ->'); readln(obrazec); found:=false; i:=1; j:=1; repeat if R[i,j]=obrazec then found:=true else i:=i+1; j:=j+1; until (i>36) and (j>36) or (found); if found then writeln('Sovpadenie s elementom nomer',I:3,'. ',j:3,'. ','Poisk uspeshen') else writeln ('Sovpadenii net'); writeln('Please press "Enter"'); readln; end. Смог написать только это.Не могу понять,как выделить этот самый элемент правильно,как сделать так,чтобы он выдавал именно числа от 1 до 36(у меня в этом диапазоне,но повторяет их) и с остальным никак не идет. |
Цитата:
Прежде всего - Вы абсолютно неправильно заполняете матрицу. Есть стандартный купейный вагон, в нем девять купе, каждое купе на четыре места, причем места имеют сквозную по всему вагону последовательную нумерацию - так при чем тут, скажите на милость, случайная выборка?!! Матрицу следует заполнять так: Код:
For i:=1 to 9 do {номера купе} Далее - обработка запроса. О чем речь? Представьте себе, что позвонил пассажир и попросил зарезервировать для него, допустим, место № 18. Ваша задача: определить, в каком купе находится это место (строка матрицы), каков его "внутрикупейный номер" (столбец матрицы), и далее, если это место свободно, зарезервировать его, т.е. заменить соответствующий элемент матрицы нулем, а если занято, т.е. там уже ноль - предложить пассажиру сменить запрос на другое место, и так повторять до тех пор, пока не последует запрос на свободное место. А в промежутке выводить матрицу и при этом рассчитывать, сколько осталось свободных "нижних" (нечетных) и "верхних" (четных) мест. Во всяком случае, именно так я понял. Поскольку вывод матрицы будет производиться несколько раз, целесообразно его оформить в виде процедуры: Код:
Procedure Matrix_output(var bm:boolean); Теперь - обработка запроса. Перед этим необходимо заполнить матрицу, как написано выше, и сделать обращение к процедуре: Код:
Matrix_output(b); Далее Код:
found:=false; Всё! |
Ладно, написал целиком.
Программа зациклена; чтобы выйти из нее, следует ввести нулевой (несуществующий) номер запрашиваемого места (N=0). Код:
VAR |
Спасибо!!!!
|
Цитата:
|
Часовой пояс GMT +4, время: 02:10. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.