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

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


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

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

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

Botsman
Статус: Студент
Рейтинг: 252
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 91
∙ повысить рейтинг >>
Пупорев Юрий Борисович
Статус: Специалист
Рейтинг: 45
∙ повысить рейтинг >>

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

Выпуск № 863
от 25.04.2009, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 253, Экспертов: 42
В номере:Вопросов: 8, Ответов: 11

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

Вопрос № 165368: Написать программу, рисующую кольцо, разбивающую его на 4 разноцветные дуги, а затем имитирующую вращение кольца, равномерно перемещая по нему разноцветные дуги....


Вопрос № 165369: Здравствуйте, уважаемые эксперты! Помогите решить следующую задачу. Написать программу, обрабатывающую данные рекурсивным способом. Определить, является ли заданная строка "правильной записью целого числа" (возможно со знаком). Число ...
Вопрос № 165379: Помогите решить задачку !!!! Дан одномерный массив размерности 20. Заполнить его случайными числами на отрезке [-25,25]. Заменить все ее члены, большие Z, этим числом. Подсчитать количество замен. Вывести исходный и полученный массивы на печать....
Вопрос № 165382: Здравствуйте, опять прошу помочь мне. Задача: В одномерном массиве, состоящем из 35 вещественных элементов вычислить: а) номер максимального элемента массива. б) приобразовать массив таким образом, чтоб в первой его половине располагались э...
Вопрос № 165411: Просьба помочь еще с одной задачей:Задача "Отрезки". На прямой линии определенным образом расположено N отрезков (N < 500). Из них нужно выбрать максимальное количество непересекающихся, т.е. не имеющих НИ ОДНОЙ общей точки. Считать, что...
Вопрос № 165412: Здравствуйте, прошу помочь мне. Задача: В одномерном массиве, состоящем из 35 вещественных элементов вычислить: а) номер максимального элемента массива. б) приобразовать массив таким образом, чтоб в первой его половине располагались элемент...
Вопрос № 165431: Определить делителем каких чисел a,b,c является число k. ...
Вопрос № 165453: Доброго времени суток.Заданное чи сло, от 1 до 1999, напечатать римскими цифрами XLVI и т.д. Вводвывод в файл. Код в приложении. Задание: оптимизировать код так, чтобы из файла считывалось не число, а несколько. Например сейчас если в файле буде...

Вопрос № 165.368
Написать программу, рисующую кольцо, разбивающую его на 4 разноцветные дуги, а затем имитирующую вращение кольца, равномерно перемещая по нему разноцветные дуги.
Отправлен: 19.04.2009, 22:52
Вопрос задал: Crimerst (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

За неимением других ответов - высылаю два варианта.
В первом дуги заполняются с помощью Arc - поэтому возникает муар, а во втором с помощью FloodFill - возникает "мерцание".
Может быть какой-либо подойдет.

С уважением, Дмитрий

Приложение:

Ответ отправил: Тимошенко Дмитрий (статус: 6-й класс)
Ответ отправлен: 20.04.2009, 22:18

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247931 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Спасибо!


    Вопрос № 165.369
    Здравствуйте, уважаемые эксперты! Помогите решить следующую задачу.
    Написать программу, обрабатывающую данные рекурсивным способом.
    Определить, является ли заданная строка "правильной записью целого числа" (возможно со знаком). Число вводить посимвольно.
    Отправлен: 19.04.2009, 23:36
    Вопрос задал: Crimerst (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Пупорев Юрий Борисович
    Здравствуйте, Crimerst!
    Решение задачи с комментариями в приложении.

    Приложение:

    Ответ отправил: Пупорев Юрий Борисович (статус: Специалист)
    Ответ отправлен: 20.04.2009, 09:35

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247873 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Большое спасибо!


    Вопрос № 165.379
    Помогите решить задачку !!!! Дан одномерный массив размерности 20. Заполнить его случайными числами на отрезке [-25,25]. Заменить все ее члены, большие Z, этим числом. Подсчитать количество замен. Вывести исходный и полученный массивы на печать.
    Отправлен: 20.04.2009, 08:19
    Вопрос задал: 036498
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Andrey Popkov
    Здравствуйте, !


    вот один из вариантов решения:

    Приложение:

    Ответ отправил: Andrey Popkov (статус: 3-й класс)
    Ответ отправлен: 20.04.2009, 14:31

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247892 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 165.382
    Здравствуйте, опять прошу помочь мне. Задача:
    В одномерном массиве, состоящем из 35 вещественных элементов вычислить:
    а) номер максимального элемента массива.
    б) приобразовать массив таким образом, чтоб в первой его половине располагались элементы, стоявшие в нечетных , во второй половине в четных позициях.
    Большое спасибо.
    Отправлен: 20.04.2009, 09:54
    Вопрос задал: Ложкин Иван Дмитриевич (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Quikk
    Здравствуйте, Ложкин Иван Дмитриевич!

    По пункту А. Поиск максимального элемента в массиве:

    program massive;
    uses crt;
    var m: array [1..100] of integer;
    i: byte;
    n,max: integer;
    begin
    clrscr;
    randomize;
    repeat
    write('Введите N: ');
    readln(n);
    until (n>0) and (n<=100);
    write('Массив:');
    for i:=1 to n do
    begin
    m[i]:=random(4);
    write(m[i]:4);
    end;
    writeln;
    max:=m[1];
    for i:=2 to n do
    if max<m[i] then max:=m[i];
    writeln('Максимальный элемент: ',max);
    write('Индекс:');
    for i:=1 to n do
    if max=m[i] then write(i:4);
    readln;
    end.
    Ответ отправил: Quikk (статус: 4-й класс)
    Ответ отправлен: 20.04.2009, 11:34

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247878 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Andrey Popkov
    Здравствуйте, Ложкин Иван Дмитриевич!

    решение а) и б) в одном флаконе :

    Приложение:

    Ответ отправил: Andrey Popkov (статус: 3-й класс)
    Ответ отправлен: 20.04.2009, 14:12

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247890 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 165.411
    Просьба помочь еще с одной задачей:Задача "Отрезки". На прямой линии определенным образом расположено N отрезков (N < 500). Из них нужно выбрать максимальное количество непересекающихся, т.е. не имеющих НИ ОДНОЙ общей точки. Считать, что координаты концов всех отрезков являются целыми числами.
    Требуется написать программу, которая определяет максимальное число отрезков и выводит координаты их концов (в случае, если решение не единственно, достаточно выдать любое).
    Технические требования:
    Формат входных данных:
    В первой строке входного файла задано целое число N. В каждой из последующих N строк — пара целых чисел, задающих левый и правый концы отрезка.
    Формат выходных данных:
    Выходной файл в первой строке содержит найденное количество отрезков, а затем список выбранных отрезков. Описание каждого отрезка должно располагаться на отдельной строке в виде пары чисел, задающих левый и правый концы отрезка.
    Пример файла входных данных:
    3
    -1 34 6
    3 5
    Пример файла выходных данных:
    2
    -1 3
    4 6
    39
    Отправлен: 20.04.2009, 13:55
    Вопрос задала: Улитина Наталья Владимировна (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 3)

    Отвечает: Micren
    Здравствуйте, Улитина Наталья Владимировна!
    Программа.
    Суть алгоритма сводится к тому, что отрезки сначала сортируются по одной из своих координат(в данной программе по правому концу отрезка), а затем выбираются отрезки по прядку и проверяется условие не пересечения с последним добавленным в список-результат отрезком.
    Код:

    program Pascal_165411;

    type
    PCut=^TCut;
    { Отрезок }
    TCut=object
    public
    constructor Init(ax1,ax2:Integer);
    function GetX1: Integer;
    function GetX2: Integer;
    private
    x1,x2:Integer;
    end;

    PNode=^TNode;
    { Узел списка }
    TNode=object
    private
    cut:TCut;
    prev,next:PNode;
    end;

    { Список }
    TList=object(TNode)
    constructor Init;
    destruc tor Done;virtual;
    procedure Add(acut:TCut); { Добавляет отрезок к списку }
    function GetNext:PCut; { Позволяет идти по списку вперед }
    function GetSize:Integer; { Возвращает размер списка }
    private
    size:Integer;
    current:PNode;
    procedure DeleteNode(node:PNode);
    end;

    constructor TCut.Init(ax1: Integer; ax2: Integer);
    begin
    { Минимальная координата всегда в x1, максимальная в x2 }
    if ax1<=ax2 then begin
    self.x1:=ax1;
    self.x2:=ax2;
    end else begin
    self.x1:=ax2;
    self.x2:=ax1;
    end;
    end;

    function TCut.GetX1: Integer;
    begin
    GetX1:=x1;
    end;

    function TCut.GetX2: Integer;
    begin
    GetX2:=x2;
    end;

    constructor TList.Init;
    begin
    { Устанавливаем начальные значения для списка }
    prev:=@self;
    next:=@self;
    current:=@self;
    size:=0;
    end;

    { Деструктор. Уничтожает список }
    destructor TList.Done;
    begin
    while size>0 do D eleteNode(next);
    end;

    { Удаляет узел списка }
    procedure TList.DeleteNode(node:PNode);
    begin
    if (node<>@self) and (node<>nil) and (size>0) then begin
    node^.prev^.next:=node^.next;
    node^.next^.prev:=node^.prev;
    Dispose(node);
    Dec(size);
    end;
    end;

    procedure TList.Add(acut:TCut);
    var
    node,insertPoint:PNode;
    begin
    insertPoint:=next;
    { Вставляем элемент в список сортируя по x2 по возрастанию для этого ищем
    позицию вставки }
    while insertPoint<>@self do begin
    if insertPoint^.cut.GetX2>acut.GetX2 then break;
    insertPoint:=insertPoint^.next;
    end;
    { Собственно вставка }
    new(node);
    node^.cut.Init(acut.GetX1,acut.GetX2);
    node^.next:=insertPoint;
    node^.prev:=insertPoint^.prev;
    insertPoint^.prev^.next:=node;
    insertPoint^.prev:=node;
    Inc(size);
    end;

    function TList.GetNext:PCut;
    begin
    current:=current^.next;
    { Если уже дошл и до корня вернуть нуль-указатель, иначе указатель на отрезок }
    if current=@self then GetNext:=nil
    else GetNext:=@current^.cut;
    end;

    function TList.GetSize:Integer;
    begin
    GetSize:=size;
    end;

    var
    list,res:TList;
    inF,outF:Text;
    N,i,x1,x2,right:Integer;
    cut:TCut;
    cutPtr:PCut;

    begin
    { Инициализация списка исходных данных }
    list.Init;
    { Открываем файлы. Имена файлов задайте какие вам нужно!!! }
    Assign(inF,'e:file.txt');
    Assign(outF,'e:out.txt');
    Reset(inF);
    ReWrite(outF);
    { Читаем 1ю строку в которой количество отрезков }
    ReadLn(inF,N);
    { Читаем отрезки и заносим в список }
    for i := 1 to N do begin
    ReadLn(inF,x1,x2);
    cut.Init(x1,x2);
    list.Add(cut);
    end;
    Close(inF);
    { Инициализация списка результата }
    res.Init;
    { Проходим по списку отрезков }
    cutPtr:=list.GetNext;
    while cutPtr<>nil do begin
    { Исключаем отрез ки левая координата которых меньше границы right -
    условие не пересечения }
    if (cutPtr^.GetX1>right) or (res.GetSize=0) then begin
    res.Add(cutPtr^); { Добавим отрезок к списку. }
    right:=cutptr^.GetX2; { Изменим границу }
    end;
    cutPtr:=list.GetNext; { Следующий элемент }
    end;
    { Выводим размер списка результата }
    WriteLn(outF,res.GetSize);
    { Идем по списку и ваводим его в файл }
    cutPtr:=res.GetNext;
    while cutPtr<>nil do begin
    WriteLn(outF,cutPtr^.GetX1,' ',cutPtr^.GetX2);
    cutPtr:=res.GetNext;
    end;
    Close(outF);
    list.Done;
    res.Done;
    end.

    Не забудьте задать имена файлов какие Вам нужно.
    Ответ отправил: Micren (статус: Практикант)
    Ответ отправлен: 20.04.2009, 16:40

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247902 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Огромное Вам спасибо!!!!!!!!


    Вопрос № 165.412
    Здравствуйте, прошу помочь мне. Задача:
    В одномерном массиве, состоящем из 35 вещественных элементов вычислить:
    а) номер максимального элемента массива.
    б) приобразовать массив таким образом, чтоб в первой его половине располагались элементы, стоявшие в нечетных , во второй половине в четных позициях.
    Большое спасибо.
    Отправлен: 20.04.2009, 14:00
    Вопрос задал: Ложкин Иван Дмитриевич (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Пупорев Юрий Борисович
    Здравствуйте, Ложкин Иван Дмитриевич!
    Решение задачи с комментариями в приложении.

    Приложение:

    Ответ отправил: Пупорев Юрий Борисович (статус: Специалист)
    Ответ отправлен: 20.04.2009, 19:21

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247918 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 165.431
    Определить делителем каких чисел a,b,c является число k.
    Отправлен: 20.04.2009, 16:53
    Вопрос задал: Dimasic59 (статус: Посетитель)
    Всего ответов: 3
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Proce
    Здравствуйте, Dimasic59!
    Код программы в приложении.

    Приложение:

    Ответ отправил: Proce (статус: 4-й класс)
    Ответ отправлен: 20.04.2009, 18:36

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247912 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Spirit87
    Здравствуйте, Dimasic59!
    очень просто, через функцию mod

    Приложение:

    Ответ отправил: Spirit87 (статус: 2-й класс)
    Ответ отправлен: 20.04.2009, 19:23

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247919 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Киселева Светлана Александровна
    Здравствуйте, Dimasic59!
    Может мой вариант решения Вам больше понравится. Если остаток от деления чисел a или b или c на k равен 0 (делятся нацело), то k - делитель. Остаток от деления находится при помощи mod и сравнивается с нулем. Еще я завела переменную fl, которая меняет произвольное начальное значение (я взяла 0) на другое (я понменяла на 1), если ХОТЯ БЫ ОДНО из чисел окажется кратным для k. Если этого не произойдет, то fl останется равным 0, тогда нужно выдать сообщение, что k не является делителем ни одного из этих чисел.
    program delitel;
    var
    a,b,c,k:integer;
    fl:byte;
    Begin
    write('a=');
    readln(a);
    write('b=');
    readln(b);
    write('c=');
    readln(c);
    write('k=');
    readln(k);
    fl:=0;
    if a mod k=0 then begin writeln('k - delitel chisla a'); fl:=1 end;
    if b mod k=0 then begin writeln('k - delitel chisla b'); fl:=1 end;
    if c mod k=0 then begin writeln('k - delitel chisla c'); fl:=1 end;

    if fl=0 then writeln('k ne yavlyaetsya delitelem a,b,c');
    readln
    END.

    ---------
    Если помочь другим в твоих силах - помоги!
    Ответ отправила: Киселева Светлана Александровна (статус: 2-й класс)
    Ответ отправлен: 21.04.2009, 12:22

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247968 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

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


    Вопрос № 165.453
    Доброго времени суток.Заданное число, от 1 до 1999, напечатать римскими цифрами XLVI и т.д.
    Вводвывод в файл. Код в приложении. Задание: оптимизировать код так, чтобы из файла считывалось не число, а несколько. Например сейчас если в файле будет 1 2 3 4, то переведется тока 1, а надо чтобы все перевелись. Желательно использование процедур, функций. Заранее спасибо.

    Приложение:

    Отправлен: 20.04.2009, 21:14
    Вопрос задал: Bel9illi (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 4)

    Отвечает: Пупорев Юрий Борисович
    Здравствуйте, Bel9illi!
    Решение с функцией для перевода многих чисел из файла в приложении.

    Приложение:

    Ответ отправил: Пупорев Юрий Борисович (статус: Специалист)
    Ответ отправлен: 21.04.2009, 06:43

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247945 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


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

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

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

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

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

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала 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

    В избранное