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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

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

Пупорев Юрий Борисович
Статус: Специалист
Рейтинг: 384
∙ повысить рейтинг >>
_Ayl_
Статус: 5-й класс
Рейтинг: 266
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 265
∙ повысить рейтинг >>

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

Выпуск № 905 от 10.06.2009, 08:35
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 339, экспертов - 148
В номере: вопросов - 3, ответов - 7

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

Вопрос № 168934: Дан массив AS,содержащий 20 элементов целого типа. Посчитать кол-во нулевых элементов. Из ненулевых элементов сформировать массив А и найти произведение модулей его элементов. Индексацию элементов заданного массива начать с 20. для перебора элемен...


Вопрос № 168962: Уважаемые эксперты, помогите пожалуйста решить следующий ворос (нуждаюсь в срочном ответе): какие входные и выходные параметры необходимо прописать в отрывке программы, созданной в паскале (через var,real,integer и т.п.) program nm; uses...
Вопрос № 168971: Здравствуйте! Только начинаю работать в Паскале, и помаленьку разбираю различные задачки и программы. В сборнике "Златопольский - Сборник задач по программированию" увидела такое...

Вопрос № 168934:

Дан массив AS,содержащий 20 элементов целого типа. Посчитать кол-во нулевых элементов. Из ненулевых элементов сформировать массив А и найти произведение модулей его элементов.
Индексацию элементов заданного массива начать с 20. для перебора элементов использовать оператор for.

Отправлен: 04.06.2009, 13:04
Вопрос задал: qwqwqw12
Всего ответов: 1
Страница вопроса >>


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

Приложение:

Ответ отправил: Пупорев Юрий Борисович, Специалист
Ответ отправлен: 04.06.2009, 16:37

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



    Вопрос № 168962:

    Уважаемые эксперты, помогите пожалуйста решить следующий ворос (нуждаюсь в срочном ответе):

    какие входные и выходные параметры необходимо прописать в отрывке программы, созданной в паскале (через var,real,integer и т.п.)
    program nm;
    uses crt;
    type s=array[1..100,1..100] of integer;
    var n,m,i,j:integer;
    ma:s;
    a,b:real;

    procedure vvod; (ЗДЕСЬ ОПИСАНИЕ ЭЛЕМЕНТОВ)
    begin
    for i:=1 to n do
    for j:=1 to m do begin
    write(i,j,' = ');
    readln(ma[i,j]);
    end;
    end;

    procedure vivod;(ЗДЕСЬ ОПИСАНИЕ ЭЛЕМЕНТОВ)
    begin
    for i:=1 to n do begin
    for j:=1 to m do write(ma[i,j]:3);
    writeln;
    end;
    end;

    Отправлен: 04.06.2009, 20:09
    Вопрос задал: Саша Казаченко Ивановна, Посетитель
    Всего ответов: 2
    Страница вопроса >>


    Отвечает _Ayl_, 5-й класс :
    Здравствуйте, Саша Казаченко Ивановна.

    1. Можно не прописывать никаких, тогда будут использованы уже описанные глобальные переменные.
    2. Можно прописать локально только переменные цикла (i и j)
    3. Можно передавать размерность матрицы как параметры (переменные n и m), а саму матрицу считать глобальной.
    4. И, наконец, можно все переменные передавать как параметры.

    Вариант 1 реализован в вашем отрывке.
    В Приложении описания для остальных вариантов реализации.

    Приложение:

    Ответ отправил: _Ayl_, 5-й класс
    Ответ отправлен: 04.06.2009, 20:35

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


    Отвечает Зенченко Константин Николаевич, Модератор :
    Здравствуйте, Саша Казаченко Ивановна.

    Так, как записано у Вас, то параметры определять не нужно, компилятор сам определит эти имена переменных как глобальные, т.е. доступные с любого места программы.
    Но если Вам нужно все таки передавать эти переменные через параметры, то так, как в приложении(заметьте я поменял имена переменных, чтобы показать, что это совершенно разные переменные).
    Вызывать нужно так:
    procedure vvod(var ma:s;i,j,n,m:integer);
    и
    procedure vivod(ma:s;i,j,n,m:integer);
    Удачи!

    Приложение:
    Украина, Киев
    Тел.: +38-097-953-66-19
    Адрес: Украина, Киев

    -----
    Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч

    Ответ отправил: Зенченко Константин Николаевич, Модератор
    Ответ отправлен: 04.06.2009, 20:35

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



    Вопрос № 168971:

    Здравствуйте!
    Только начинаю работать в Паскале, и помаленьку разбираю различные задачки и программы. В сборнике "Златопольский - Сборник задач по программированию" увидела такое задание: Вычислить сумму 1+ 1/3+ 1/(3*3)+1/(3*3*3)... Проблема в том, что есть условие- не использовать операцию возведение в степень. Помогите пожалуйста, как составить эту программу? Заранее благодарна.

    Отправлен: 05.06.2009, 10:05
    Вопрос задал: Reresana, Посетитель
    Всего ответов: 4
    Страница вопроса >>


    Отвечает Шичко Игорь, Практикант :
    Здравствуйте, Reresana.
    Реализуется примерно так.
    Код и описаните в приложении.
    Вопросы - пишите.

    Приложение:

    Ответ отправил: Шичко Игорь, Практикант
    Ответ отправлен: 05.06.2009, 10:50

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

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


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

    Если внимательно посмотреть на члены данного ряда, можно заметить, что каждый следующий член можно представить как предыдущий, деленный на 3. Соответственно эту задачу можно решить таким образом:
    Код:
    ...
    sum:=1; {Сумма ряда}
    pred:=1; {Предыдущий член ряда}
    i:=1; {Счетчик}
    while i<10 do begin {Условие окончания - 10 членов ряда просумировано}
    sum:=sum+pred/3; {Увеличиваем сумму}
    pred:=pred/3; {Текущий член, становится предыдущим}
    inc(i); {Увеличиваем количество просуммированных членов на 1}
    end;
    ...

    Данный код подсчитает сумму 10-ти членов ряда.
    К сожалению Вы не указали в вопросе условие окончания подсчета - обычно в задачах такого рода условием окончания служит задан ная точность. Код для подсчета суммы с заданной точностью приведен ниже:
    Код:
    ...
    sum:=1; {Сумма ряда}
    pred:=1; {Предыдущий член ряда}
    e:=0.001; {Точность}
    while pred>e do begin {Условие окончания - последний просуммированный член меньше, либо равен заданной точности}
    sum:=sum+pred/3; {Увеличиваем сумму}
    pred:=pred/3; {Текущий член, становится предыдущим}
    end;
    ...

    Ну вот вроде и все. Надеюсь понятно пояснил. Вопросы в мини-форум.

    Ответ отправил: Тимошенко Дмитрий, Студент
    Ответ отправлен: 05.06.2009, 10:57

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо за помощь! Этот код меня заинтересовал. Код на 10 членов ряда- Совершенно верно, Вы действительно правы, окончание подсчета должно быть 3 в 8 степени (этого я не указала), то есть 8 членов ряда. Код набрала, составила подсчет.

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


    Отвечает Зенченко Константин Николаевич, Модератор :
    Здравствуйте, Reresana.

    1/(3*3)=(1/3)/3 и т.д.
    Такие задачи можно решить двумя вариантами.
    1) суммировать пока очередной элемент ряда превышает установленную точность;
    2) суммировать первые N элементов ряда.
    Удачи!

    Приложение:
    Украина, Киев
    Тел.: +38-097-953-66-19
    Адрес: Украина, Киев

    -----
    Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч

    Ответ отправил: Зенченко Константин Николаевич, Модератор
    Ответ отправлен: 05.06.2009, 11:03

    Оценка ответа: 5
    Комментарий к оценке:
    Как правильно заметил Тимошенко Дмитрий, я не указала окончание ряда, и поэтому такой результат. Код набрала, спасибо большое за помощь! Для себя узнала, что такое "repeat until", и с чем его едят:)))

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


    Отвечает Botsman, Специалист :
    Здравствуйте, Reresana.
    Позволю себе добавить еще один способ решения этой задачи. Сразу оговорюсь, что вашего преподавателя по Pascal (если таковой имеется) он вряд ли устроит, но от этого он не станет менее правильным
    Предложенная сумма есть не что иное, как геометрическая последовательность (о чем уже говорил Boriss в мини-форуме). При этом ее знаменатель q=1/3<1.
    Для таких последовательностей существует вполне определенная математическая формула, которую (поскольку в задаче не указано количество суммируемых членов) можно применить: S=b1/(1-q).
    Код - естественно - в приложении. Но в данном случае он не представляет ничего интересного

    Приложение:

    -----
    Хочешь победить Excel? Спроси меня как! ;)

    Ответ отправил: Botsman, Специалист
    Ответ отправлен: 05.06.2009, 11:44

    Оценка ответа: 5
    Комментарий к оценке:
    Как Вы сказали- ничего интересного?)) но в данном случае, всё явно и просто. Есть одно "но"(поскольку в задаче не указано количество суммируемых членов), а они действительно не указаны были мною, а зря. Моя ошибка :)). Преподавателя нет, учусь для себя. Спасибо большое за помощь!

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



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

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

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

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

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

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

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


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.0 beta от 24.05.2009

    В избранное