Вопрос № 167382: Здравствуйте. У меня проблема с задачей. Я ее решил, но нужно оформить в виде функции. Пожалуйста проверьте задачу и помогите оформить с функцией Задача : дана целочисленная прямоугольная матрица. Найти сумму элементов в тех строках, которые соде...
Вопрос № 167392: Уважаемые эксперы помогите пожалуйста с задачей. Заранее огромное спасибо. Задано множество S возможных операций над объектами: S={Доступ на чтение, Доступ
на запись, Передача прав}. Реализовать программный модуль создающий матрицу доступа поль...
Вопрос № 167.382
Здравствуйте. У меня проблема с задачей. Я ее решил, но нужно оформить в виде функции. Пожалуйста проверьте задачу и помогите оформить с функцией Задача : дана целочисленная прямоугольная матрица. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент (оформить в виде функции)
Приложение:
Отправлен: 15.05.2009, 17:42
Вопрос задал: DaImeR (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, DaImeR!
Смотрите приложение. Функция SummaMass суммирует одну строку массива. Функция CheckMinus - проверяет наличие отрицательных элементов. Удачи!
Приложение:
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев ---- Ответ отправлен: 15.05.2009, 18:35
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249247 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: спасибо, все понял
Вопрос № 167.392
Уважаемые эксперы помогите пожалуйста с задачей. Заранее огромное спасибо. Задано множество S возможных операций над объектами: S={Доступ на чтение, Доступ на запись, Передача прав}. Реализовать программный модуль создающий матрицу доступа пользователей. Реализация подразумевает: выбрать идентификаторы 3х пользователей, которые будут использоваться при входе в систему (например: Ivan, Sergey, Boris). Один из пользователей должен являться администратором, для него права доступа ко всем объектам (количество
объектов = 5) должны быть выставлены как полные. Права остальных пользователей к объектам должны заполняться случайным образом с помощью датчика случайных чисел. Пользователь может иметь несколько прав к объекту, полные права, либо не иметь прав. При запуске должен запрашиваться идентификатор пользователя. При успешно - осуществляется вход, при неуспешной - выводится соответствующее сообщение. При успешном входе должен выводится список всех объектов с указанием прав
(например: "User: Boris Объект 1: Чтение Объект 2: Запрет Объект 3: Чтение, Запись Объкт 4: Полные права Объект 5: Запрет. Жду ваших указаний >") После этого программа должна ждать указаний. При выполнении операции передачи прав(grant) должна модифицироваться матрица доступов. Должна поддерживаться операция выхода из системы (quit), после которой запрашивается другой идентификатор. Пример: Жду ваших указани > read Над камим объектом производится операция?
1 Операция прошла успешно Жду ваших указаний > write Над камим объектом производится операция? 2 Отказ. Нет прав Жду ваших указаний > grant Над камим объектом производится операция? 3 Отказ. Нет прав Жду ваших указаний > grant Над камим объектом производится операция? 4 Какое право передается? read Какому пользователю передается право? Ivan Операция прошла успешн Жду ваших указаний > quit User:
Отвечает: Тимошенко Дмитрий
Здравствуйте, Семенов Алексей Анатольевич!
Написал программу по вашему заданию. Если что непонятно - пишите в форум.
Код:
program Dostup; uses crt; type TRights=set of (RRead,RWrite,RGrant); { Виды прав } const FullRights: TRights=[RRead,RWrite,RGrant]; { Полные права
} MaxObj=5; { Число объектов } MaxUsers=3; { Число пользователей } var Users: array [1..MaxUsers] of string[20]; { Имена пользователей } UserRights: array [1..MaxObj,1..3] of TRights; { Права пользователей } i,j,CurrUser: byte; { Счетчики, номер текущего пользователя } SCommand: string[20]; { Текущая команда или имя пользователя } tmpRight: TRights; { Временное хранилище типа передаваемых прав }
begin<
br> clrscr; { Инициализируем пользователей } Users[1]:='Ivan'; Users[2]:='Sergey'; Users[3]:='Boris'; { Инициализируем права - первый пользователь - админ } randomize; for i:=1 to MaxObj do begin UserRights[i,1]:=FullRights; for j:=2 to MaxUsers do begin UserRights[i,j]:=[]; if random(2)=1 then UserRights[i,j]:=UserRights[i,j]+[RRead]; if random(2)=1 then UserRights[i,j]:=UserRights[i,j]+[RWrite]; if
random(2)=1 then UserRights[i,j]:=UserRights[i,j]+[RGrant]; end; end; { Главный цикл - по пользователям } CurrUser:=0; repeat write('User: '); readln(SCommand); { Проверяем выход} if SCommand='quit' then break; { Проверяем вход пользователя } for i:=1 to MaxUsers do if Users[i]=SCommand then begin CurrUser:=i; break; end; if CurrUser=0 then<
br> writeln('Неправильное имя пользователя!') else begin { Успешный вход } { Выводим права } for i:=1 to MaxObj do begin write('Объект ',i,': '); if UserRights[i,CurrUser]=[] then { Нет прав } write('Запрет') else if UserRights[i,CurrUser]=FullRights then { Полные права } write('Полные права') else begin if RRead in UserRights[i,CurrUser] then write('Чтение,
'); if RWrite in UserRights[i,CurrUser] then write('Запись, '); if RGrant in UserRights[i,CurrUser] then write('Передача, '); GotoXY(WhereX-2,WhereY); write(' '); end; writeln; end; { Цикл по командам пользователя } repeat write('Жду ваших указаний >'); readln(SCommand); { Проверяем команды }
if SCommand='quit' then break { Выход } else if (SCommand='read') or (SCommand='write') or (SCommand='grant') then begin write('Над каким объектом производится операция? '); readln(j); { Проверим диапазон } if j>MaxObj then writeln('Нет такого объекта') else begin { Команда read } if SCommand='read' then
if RRead in UserRights[j,CurrUser] then writeln('Операция прошла успешно') else writeln('Отказ. Нет прав'); { Команда write } if SCommand='write' then if RWrite in UserRights[j,CurrUser] then writeln('Операция прошла успешно') else writeln('Отказ. Нет прав'); { Команда grant } if SCommand='grant'
then if RGrant in UserRights[j,CurrUser] then begin write('Какое право передается? '); readln(SCommand); { Проверим команды } if (SCommand='read') or (SCommand='write') or (SCommand='grant') then begin { Запомним передаваемое право } if SCommand='read' then tmpRight:=[RRead] else if SCommand='write'
then tmpRight:=[RWrite] else tmpRight:=[RGrant]; write('Какому пользователю передается право? '); readln(SCommand); { Найдем пользователя } i:=1; while i<=MaxUsers do begin if Users[i]=SCommand then break; inc(i); end; { Если пользователь не на
йден выведем сообщение } if i>MaxUsers then writeln('Неправильное имя пользователя!') else begin{ Иначе передадим права } UserRights[j,i]:=UserRights[j,i]+tmpRight; end; end else writeln('Неправильно задан вид прав'); end else writeln('Отказ. Нет прав'); end; end else
writeln('Неверная команда'); until false; CurrUser:=0; end; until false; { Завершение работы } writeln('Пока!'); end.
Ответ отправил: Тимошенко Дмитрий (статус: Студент)
Ответ отправлен: 17.05.2009, 15:19
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249337 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.