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

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


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

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

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

Шичко Игорь
Статус: Практикант
Рейтинг: 178
∙ повысить рейтинг >>
Verena
Статус: Практикант
Рейтинг: 115
∙ повысить рейтинг >>
Пупорев Юрий Борисович
Статус: Специалист
Рейтинг: 114
∙ повысить рейтинг >>

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

Выпуск № 749
от 08.12.2008, 14:05

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

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

Вопрос № 152635: Здравствуйте уважаемые эксперты вот задачи : 1) найти номер максимального элемента таблицы a[1..10] 2)Дано предложение(я так понял его нужно ввести самому с клавиатуры).Определить количество слов в нём <img src="http://rusfaq.ru/ima...


Вопрос № 152661: Здравствуйте дорогие эксперты , помогите пожалуйста решить задачу: Упорядочить массивы X(K) , Y(K) K=350 по возрастанию суммы Xi + Yi. заранее СПАСИБО....
Вопрос № 152670: Здравствуйте. Есть задача реализовать сортировку массива методом выбора и вывести число сравнений и перестановок. Реализовал без всяких массивов, только через указатели. В связи с чем есть вопросы: почему нельзя использовать размерность массивов б...
Вопрос № 152689: Помогите пожалуйста с задачей: Найти сумму всех целых чисел, дающих при делении на 5 в остатке 3, из отрезка [ AB]. ...
Вопрос № 152744: Помогите нужно написать программу задание такое : Координаты точек x и y пятимерного арифметического пространства заданы двумя векторами x(5) и y(5). Координаты точки Z этого же пространства являются средним арифметическим координат точек x и y. ...
Вопрос № 152746: Дано натуральное число n и числа b0 = 1, b1 = 1, bk = k2 bk-1 + bk-2 k = 2, 3, …, n. Вычислить bn и распечатать.написать в паскаль...

Вопрос № 152.635
Здравствуйте уважаемые эксперты вот задачи :

1) найти номер максимального элемента таблицы a[1..10]
2)Дано предложение(я так понял его нужно ввести самому с клавиатуры).Определить количество слов в нём

Отправлен: 02.12.2008, 17:02
Вопрос задал: MyNameIsRuZ (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 6a3uJI
Здравствуйте, MyNameIsRuZ!

1) Поиск максимального элемента для массива a[1..10]:
var
a: array [1..10] of integer;
max, k, i: integer; //max - макс. элемент, k - индекс макс. элемента
begin
max:=a[1]; k:=1;
for i:=2 to 10 do
if max<a[i] then
begin
max:=a[i];
k:=i;
end;
writeln(k);
end.

2)
var
st: string;
i, k: integer;
begin
writeln("Введите строку:");
readln(st); k:=1;
for i:=0 to length(st) do
if st[i] = ' ' then k:=k+1; //считаем кол-во пробелов
writeln("слов - ",k);
end.

В принципе любой из приведенных кодов можно доработать (проверка корректности ввода, к примеру)
Ответ отправил: 6a3uJI (статус: 6-й класс)
Ответ отправлен: 02.12.2008, 17:31

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

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


    Отвечает: Шемет Станислав Васильевич
    Здравствуйте, MyNameIsRuZ!
    как мне надоело что надо обязательно что то здесь писать, ведь ответ в приложении...
    прошу не обижаться на меня, но у меня есть ответ на задачу но нечего сказать

    Приложение:

    ---------
    Любовь это прекрасно!!!

    Ответ отправил: Шемет Станислав Васильевич (статус: 1-й класс)
    Ответ отправлен: 02.12.2008, 20:03

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


    Вопрос № 152.661
    Здравствуйте дорогие эксперты , помогите пожалуйста решить задачу:

    Упорядочить массивы X(K) , Y(K) K=350 по возрастанию суммы Xi + Yi.

    заранее СПАСИБО.
    Отправлен: 02.12.2008, 19:44
    Вопрос задал: Boss186 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Пупорев Юрий Борисович
    Здравствуйте, Тателадзе Георгий Мамукович!
    Массив размерность 350 элементов в учебных целях, это конечно по кавказски, с размазом, но я оставил 20, хоть проверить можно. Решение в приложении. В принципе обычная сортировка, только сразу двух массивов.

    Приложение:

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

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


    Вопрос № 152.670
    Здравствуйте. Есть задача реализовать сортировку массива методом выбора и вывести число сравнений и перестановок. Реализовал без всяких массивов, только через указатели.
    В связи с чем есть вопросы: почему нельзя использовать размерность массивов больше 16? Программа либо вылетает, либо виснет. Думаю, что адрес после 16 элемента выходит за пределы кучи или еще какой-то спец. области памяти.
    Можно ли эту процедуру как-то красиво оформить через getmem()?
    Почему в процедуре sort_choice компилятор выдает ошибку на dispose() для любого локального для процедуры указателя (прав я или нет - передается адрес глобального указателя, который не стоит обнулять)?
    И как все-таки правильно работать с процедурами new() и dispose()? Например, если я в самом конце программы ставлю dispose(globalptr) (естественно, в начале new(globalptr)), то компилятор выдает runtime error 204 at xxxx:yyyy.
    И почему указатель свободно используется в операциях присваивания даже без new() для него?< br>Есть подозрение на сам компилятор, т.к. скачал его черт знает откуда (даже в заголовке написано "техподдержка на http").

    Приложение:

    Отправлен: 02.12.2008, 20:49
    Вопрос задал: Vitaliy (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

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

    Посмотрите на результат компиляции Вашей программы:
    Код:
    ;сегмент кода
    seg000:03A8 push word_1734
    seg000:03AC push word_1732
    seg000:03B0 mov al, byte_1736
    seg000:03B3 push ax
    seg000:03B4 call sub_0;input_mas
    seg000:03B7 push word_1734
    seg000:03BB push word_1732
    seg000:03BF mov al, byte_1736
    seg000:03C2 push ax
    seg000:03C3 call sub_49;output_mas
    seg000:03C6 push word_1734
    seg000:03CA push word_1732
    seg000:03CE mov al, byte_1736
    seg000:03D1 push ax
    seg000:03D2 call sub_15C;sort_choice
    ;семент данных
    dseg:0052 word_1732 dw 0 ; DATA XREF: sub_15C+14Cr
    dseg:0052 ; seg000:03ACr ...
    dseg:0054 word_1734 dw 0 ; DATA XREF:sub_15C:loc_2A4r
    dseg:0054 ; seg000:03A8r ...
    dseg:0056 byte_1736 db 0 ; DATA XREF: sub_15C+150r
    dseg:0056 ; seg000:039Bw ...

    При компиляции программы во все переменные по умолчанию подставляется 0. word_1732:word_1734 это и есть переменная globalptr:point;. Когда Вы передаете в подпрограмму указатель на якобы массив, Вы передаете адрес (сегмент:смещение) на таблицу прерываний(системных функций) DOS и BIOS, с помощью которых работает вся сист ема. Структура данных хранящихся в этой таблице:
    прерывание 00h=(сегмент:смещение)адрес=0000:0000,прерывание 01h=(сегмент:смещение)адрес=0000:0004, и т.д. до прерывания 0FFh.
    point=^integer; используя такую запись переменной, Вы определяете адрес(сегмент:смещение) на область памяти размером два байта. В подпрограммах при выполнении команд ptr^:=random(100);inc(ptr); Вы изменяете область памяти на которую указывает указатель и увеличиваете его на два байта, а таблице прерываний на один указатель отводится четыре байта, т.е. 2*16/4=8. Таким образом Вы "затираете" прерывание 08h, которое вызывается 18.2 раза в секунду, т.к. это прерывание системного таймера. Куда попадает управление после очередного его вызова - одному богу известно.

    © Цитата: runtime error 204:Недопустимая операция с указателем

    Подпрограммы Dispose и FreeMem cообщают об этой ошибке, если указатель равен NIL или указывает на адрес вне кучи.

    Константа NIL это и есть те самые 0000h:0000h. Именно по этому у Вас и выскакивает ошибка.
    Процедуры new() и dispose() - это процедуры для работы с типизированными типами данных(т.е. размер самой переменной подтавляет компилятор), getmem() и freemem() - процедуры работают с переменными любой длины, но длину этой переменной, на которую указавает указатель, программист должен указывать сам. Работа с этими процедурами многогранна, всё описывать не буду. В приложении программа создающая связанный список ( одномерный массив ), меняет местами два элемента в голове этого списка.

    Вопросы задавайте в мини-форум.
    Удачи!

    Приложение:

    ---------
    Итерация от человека, рекурсия — от Бога (Питер Дойч)

    Ответ отправил: Зенченко Константин Николаевич (статус: Профессор)
    Украина, Киев
    Тел.: +380979536619
    Адрес: Украина г.Киев
    ----
    Ответ отправлен: 03.12.2008, 13:55

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

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


    Вопрос № 152.689
    Помогите пожалуйста с задачей:
    Найти сумму всех целых чисел, дающих при делении на 5 в остатке 3, из отрезка [AB].
    Отправлен: 02.12.2008, 22:34
    Вопрос задал: Александр С (статус: 1-й класс)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: SHERRY
    Здравствуйте, Александр !!!!
    Код:

    const
    a = 4; b = 10;
    var
    sum,i: integer;
    begin
    sum := 0;
    for i:=a to b do
    if (i mod 5 = 3) then
    sum := sum + i;
    writeln(sum);
    readln;
    end.

    ---------
    Самурай без меча подобен самураю с мечом, только без меча..
    Ответ отправил: SHERRY (статус: Студент)
    Ответ отправлен: 02.12.2008, 22:44

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

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


    Отвечает: Andersen
    Здравствуйте, Александр С!
    Вот вариант функции которая решает задачу

    Приложение:

    Ответ отправил: Andersen (статус: 1-й класс)
    Ответ отправлен: 03.12.2008, 10:41

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

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


    Вопрос № 152.744
    Помогите нужно написать программу задание такое :
    Координаты точек x и y пятимерного арифметического пространства заданы двумя векторами x(5) и y(5). Координаты точки Z этого же пространства являются средним арифметическим координат точек x и y. Вычислить и распечатать координаты точки Z.
    Отправлен: 03.12.2008, 12:32
    Вопрос задала: Lyalya3 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

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

    В приложении код программы со всеми пояснениями.

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

    Приложение:

    Ответ отправил: Шевченко Дмитрий (статус: 6-й класс)
    Ответ отправлен: 03.12.2008, 16:25

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


    Вопрос № 152.746
    Дано натуральное число n и числа b0 = 1, b1 = 1, bk = k2 bk-1 + bk-2 k = 2, 3, …, n. Вычислить bn и распечатать.написать в паскаль
    Отправлен: 03.12.2008, 12:46
    Вопрос задал: Smirnov artem vlad (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: 6a3uJI
    Здравствуйте, Smirnov artem vlad!
    Я так понял, что b(k) = b(k-1)+b(k-2). Для данного случая вот код:
    uses crt;
    var
    n:integer;
    function Rec(m:integer):longint;
    var
    sum:longint;
    begin
    sum:=0;
    if m=0 then sum:=0;
    if m=1 then sum:=1;
    if m>1 then sum:=rec(m-1)+rec(m-2); //или введи другую формулу для b(k)
    Rec:=sum;
    end;
    begin
    clrscr;
    write('n=');
    readln(n);
    writeln('b',n,'=',Rec(n));
    end.
    Ответ отправил: 6a3uJI (статус: 6-й класс)
    Ответ отправлен: 03.12.2008, 13:19

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


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

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

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

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

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

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


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

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

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

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

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

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


    © 2001-2008, Портал 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

    В избранное