Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: Студент
Рейтинг: 133
∙ повысить рейтинг >>
Botsman
Статус: Практикант
Рейтинг: 95
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 65
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 887
от 21.05.2009, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 267, Экспертов: 47
В номере:Вопросов: 2, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 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:
    Отправлен: 15.05.2009, 20:02
    Вопрос задал: Семенов Алексей Анатольевич (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Тимошенко Дмитрий
    Здравствуйте, Семенов Алексей Анатольевич!

    Написал программу по вашему заданию. Если что непонятно - пишите в форум.
    Код:
    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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное