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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 527
от 25.12.2007, 20:35

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

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


Вопрос № 114921: Доброго времени суток! Никак не могу понять, как работает функция, что в приложении(вообще непонятен принцип). Написал, скомпилировал, выдает то, что нужно, а именно - при вводе х, равного 23, выводит 16. Так и должно быть......
Вопрос № 114924: Здравствуйте! Помогите разобраться! У меня задание типа создание простого калькулятора! Сначала я ввожу 1-ое число, потом выбираю знак операции, потом ввожу 2-ое число! Здесь я использую селектор: сase sign of '+' : res:= o...
Вопрос № 114945: Помогите Написать программу которая производит обмен первого и последнего символа введенного слова....
Вопрос № 114947: Написать программу: К слову присоединить столько ?(знаков вопроса)сколько в нем букв. ...
Вопрос № 114960: Добрый день! Помогите пожалуйста! Завтра Практическая работа вот нужно решить задания! Задача 1. Заменить первый и последний символ на символ *(звездочка). Задача 2. Есть ли в одномерном массиве два соседних положительных элемента? Ответ: Ест...
Вопрос № 114962: Сорри! Забыл еще одну! Она для Вас тоже легкая! Я начинающий программист потому пока не знаю ничего! Задача. Вывести табл. значений ф-и y=45+|x|. Диапазон изменения аргумента от -2 до 4, шаг приращения аргумента 1,5....
Вопрос № 114967: Извините! Я решил 2-ки свои исправить! Вот еще парочка! Задача 1. Вставить пробел после каждого символа введенного слова. Задача 2. Удалить все пробелы с введенного слова....
Вопрос № 115027: В одномерном массиве найти количество нечетных элементов массива! Заранее очень сильно благодарю!...
Вопрос № 115058: У меня почему не работает ,ошибки не указывает.. Задание Посчитать кол-во слов файл ,в которых присутствует буквы \'a\',\'o\',\'i\'. ...

Вопрос № 114.921
Доброго времени суток!
Никак не могу понять, как работает функция, что в приложении(вообще непонятен принцип). Написал, скомпилировал, выдает то, что нужно, а именно - при вводе х, равного 23, выводит 16. Так и должно быть...

Приложение:

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

Отвечает: programyst
!!!
Здравствуйте, Work_stranger!

function f(x:integer):integer;
begin
if x=1 then f:=1
else if odd(x) {проверка на чётность}
then f:=f(3*x+1)+1 {функция запускает сама себя}
else f:=f(x div 2)+1 {тоже самое только при других условиях}
end

Ответ не раскрывает сути вопроса!
-----
∙ Отредактировал: Gh0stik (Академик)
∙ Дата редактирования: 19.12.2007, 22:35
Ответ отправил: programyst (статус: Заблокирован)
Ответ отправлен: 19.12.2007, 21:49

Отвечает: Gh0stik
Здравствуйте, Work_stranger!

При обращении функции в процессе вычислений к самой себе называют рекурсией. Имеено она и отображена у Вас в коде.
Условие if odd(x) ... Вы поняли верно, в зависимости от четности/нечетности переменной х функция вычисляется по той или иной "формуле".
Для понятия как работает Ваш код достаточно немного преобразоватьисходный код так, чтобы можно было видеть этапы выполнения, например так:
function f(x:integer):integer;
begin
  if x=1 then begin writeln('f=1'); f:=1;end
    else if odd(x)
    then begin writeln('f=f(',3*x+1,')+1'); {выводим какое значение передается на текущем шаге в функцию}
    f:=f(3*x+1)+1;end
    else begin writeln('f=f(',x div 2,')+1'); {выводим какое значение передается на текущем шаге в функцию}
    f:=f(x div 2)+1;end
end;

begin
  WriteLn(f(23));
  Readln;
end.


После выполнения этого примера на экране Вы получите такую картинку:
f=f(70)+1
f=f(35)+1
f=f(106)+1
f=f(53)+1
f=f(160)+1
f=f(80)+1
f=f(40)+1
f=f(20)+1
f=f(10)+1
f=f(5)+1
f=f(16)+1
f=f(8)+1
f=f(4)+1
f=f(2)+1
f=f(1)+1
f=1
16


Легко убедится если посчитать все ЕДИНИЦЫ, то их количество и есть ответ - 16.

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Академик)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
WWW: http://gh0stik.rusfaq.ru/
ICQ: 289363162
----
Ответ отправлен: 19.12.2007, 22:34


Вопрос № 114.924
Здравствуйте! Помогите разобраться!
У меня задание типа создание простого калькулятора!
Сначала я ввожу 1-ое число, потом выбираю знак операции, потом ввожу 2-ое число!
Здесь я использую селектор:

сase sign of
'+' : res:= op1 + op2;
'-' : res:= op1 + op2;
ну и т.д.

вопрос: а как здесь использовать функции "sqrt" и "sqr"? ПОСОВЕТУЙТЕ ПОЖАЛУЙСТА!
Отправлен: 19.12.2007, 21:41
Вопрос задал: Васько (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: programyst
!!!
Здравствуйте, Васько!

сase sign of
'Sqr' : res:= Sqr(Op1);
'Sqrt' : res:= Sqrt(op1);

ну и т.д.

Ответ неверный!
Оператор сase в языке Pascal обрабатывает в селекторе только переменные перечисляемого типа.
Правильный ответ приведен ниже.

-----
∙ Отредактировал: Gh0stik (Академик)
∙ Дата редактирования: 19.12.2007, 22:03
Ответ отправил: programyst (статус: Заблокирован)
Ответ отправлен: 19.12.2007, 21:52

Отвечает: Gh0stik
Здравствуйте, Васько!

Поскольку case в работает только с перечисляемыми типами, то можно использовать любое обозначение соответствующее заданного типа. По Вашему примеру понятно, что sign:char, то в качестве идентификатора соответствующей операци можете выбрать любой удобный для Вас символ.
Например так:
res:real;
...
сase sign of
'+' : res:= op1 + op2;
'-' : res:= op1 + op2;
'q' : res:=sqrt(op1);
'w' : res:=sqr(op1);
end;


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Академик)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
WWW: http://gh0stik.rusfaq.ru/
ICQ: 289363162
----
Ответ отправлен: 19.12.2007, 21:54
Оценка за ответ: 5
Комментарий оценки:
Cпасибо!

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

Предлагаю использовать только возведение в любую степень, т.к. "sqrt" = A1/2 и "sqr"=A2.

Case sign of
'+':res:=op1 + op2;
'-':res:=op1 - op2;
'^':res:=exp(ln(op1)*op2);
end;


Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 20.12.2007, 13:28
Оценка за ответ: 5
Комментарий оценки:
СПАСИБО! Но все таки, если я хочу использовать корень, то как мне тогда его записать!?


Вопрос № 114.945
Помогите Написать программу которая производит обмен первого и последнего символа введенного слова.
Отправлен: 19.12.2007, 22:56
Вопрос задал: Волошин Виталий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Волошин Виталий Алексеевич!

Вот достаточно простое решение:
var s:string;
    c:char;
begin
  write('Input word: '); readln(s); {вводим слово}
  c:=s[1]; {переставляем символы местами}
  s[1]:=s[length(s)];
  s[length(s)]:=c;
  write('Result: ',s); {вводим результат}
  Readln;
end.


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Академик)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
WWW: http://gh0stik.rusfaq.ru/
ICQ: 289363162
----
Ответ отправлен: 19.12.2007, 23:12
Оценка за ответ: 5
Комментарий оценки:
Класс! Вы гений!


Вопрос № 114.947
Написать программу: К слову присоединить столько ?(знаков вопроса)сколько в нем букв.
Отправлен: 19.12.2007, 23:02
Вопрос задал: Волошин Виталий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

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

PS. Листинг предполагает, что текст введён маленькими латинскими буквами!

В ответе наблюдается несколько "фантомов":
1) mn = [a..z], не понятнозачем используется множество символов, а потом еще и проверяется является символ строки элементом множества?!!!
2) d := length(s), зачем запоминать значение длины строки в переменную, которую в последствии НЕ используем?!

-----
∙ Отредактировал: Gh0stik (Академик)
∙ Дата редактирования: 20.12.2007, 00:58

Приложение:

---------
Наши программисты самые программистые программисты!..

Ответ отправил: SHERRY (статус: 5-ый класс)
Ответ отправлен: 20.12.2007, 00:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Все работает! Тут [\'a\'..\'z\'] с кавычками!


Вопрос № 114.960
Добрый день! Помогите пожалуйста! Завтра Практическая работа вот нужно решить задания!
Задача 1. Заменить первый и последний символ на символ *(звездочка).
Задача 2. Есть ли в одномерном массиве два соседних положительных элемента? Ответ: Есть или Нет.
Это последние задачи на сегодня! Спасибо!
Отправлен: 20.12.2007, 00:39
Вопрос задал: Волошин Виталий Алексеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Маренич Владимир
Здравствуйте, Волошин Виталий Алексеевич!

См. в проложении основное решение. Ввод и вывод данных думаю не надо...

Приложение:

Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 20.12.2007, 00:56
Оценка за ответ: 5
Комментарий оценки:
Работает! Супер!

Отвечает: programyst
Здравствуйте, Волошин Виталий Алексеевич!

первая задача

function MY(const s: string):string;
var I:byte;S1:String;
begin
I := SetLength(S);{получаем размер строки}
S1 := S;{для сохранения исходной строки}
s1[1]:= '*';
S1[i]:= '*'; {или} S1[i-1]:='*'; {точно не помню проверь оба}
My := S1;{присвоение изменённой строки функции}
end;

вторая задача
const K=9; {можно любое число}
type TVector= array[1..K]of integer;{вектор чисел}

function My_(A:TVector):Boolean;
var b:Boolean;i: Integer;
begin
b:= False;
I:=2;{счётчик 2 чтобы не выскочить за пределы вектора}
while (i<=K)and(b=False) do{проверка всего вектора}
begin
if (A[i]>0) and (A[i-1]>0) then b := true else b:= false;
inc(i);
end;
My_ := b;
end;

Ответ отправил: programyst (статус: Заблокирован)
Ответ отправлен: 20.12.2007, 01:12
Оценка за ответ: 3


Вопрос № 114.962
Сорри! Забыл еще одну! Она для Вас тоже легкая! Я начинающий программист потому пока не знаю ничего!
Задача.
Вывести табл. значений ф-и y=45+|x|. Диапазон изменения аргумента от -2 до 4, шаг приращения аргумента 1,5.
Отправлен: 20.12.2007, 00:51
Вопрос задал: Волошин Виталий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: programyst
Здравствуйте, Волошин Виталий Алексеевич!
Type TMatrix=array[1..5]of array[1..2] of real;
procedure MY__(var X:Real;var A:TMatrix);
var i,j:Byte;
begin
X:= -2;I:=1;
while X<=4 do
begin
A[i,1] := 45+abs(X);

A[i,2]:= X;
inc(i);
X:= X+1.5;
end;
end;

{получили матрицу результатов т.е таблицу}
Ответ отправил: programyst (статус: Заблокирован)
Ответ отправлен: 20.12.2007, 01:24
Оценка за ответ: 4


Вопрос № 114.967
Извините! Я решил 2-ки свои исправить! Вот еще парочка!
Задача 1. Вставить пробел после каждого символа введенного слова.
Задача 2. Удалить все пробелы с введенного слова.
Отправлен: 20.12.2007, 01:48
Вопрос задал: Волошин Виталий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: programyst
Здравствуйте, Волошин Виталий Алексеевич!

function My(S:string):string;
var S1:String;I:Byte;
begin
S1:=S;i:=1;
while i<=length(S1); do begin
S1:= insert(' ',S1,i+1); {или} S1:=insert(' ',S1,i); {точно непомню проверь оба}
inc(i);
end;
My := S1;
end;

function My_(S:String):String;
var
begin
S1:=S;i:=1;
while i<=length(S1); do begin
if S1[i]=' ' then S1:= delete(S1,i+1,1); {или} S1:=delete(S1,i,1); {точно непомню проверь оба}
inc(i);
end;
My_ := S1;
end;
Ответ отправил: programyst (статус: Заблокирован)
Ответ отправлен: 20.12.2007, 02:06
Оценка за ответ: 3


Вопрос № 115.027
В одномерном массиве найти количество нечетных элементов массива! Заранее очень сильно благодарю!
Отправлен: 20.12.2007, 12:58
Вопрос задал: Spider777 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Pavl
Здравствуйте, Spider777! Задача не сложная. Сначала обнуляем счётчик нечётных элементов. Если найден нечётный элемент, то увеличиваем счётчик на 1. Вот программа.

Приложение:

Ответ отправил: Pavl (статус: 2-ой класс)
Ответ отправлен: 20.12.2007, 13:24
Оценка за ответ: 5
Комментарий оценки:
ГРОМАДНОЕ СПАСИБО!!! Если что, то обязательно напишу! СПАСИБО!!! Всем посоветую!!!


Вопрос № 115.058

У меня почему не работает ,ошибки не указывает..
Задание Посчитать кол-во слов файл ,в которых присутствует буквы \'a\',\'o\',\'i\'.

Приложение:

Отправлен: 20.12.2007, 15:26
Вопрос задал: Викулин Степан Николаевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Pyatno
Здравствуйте, Викулин Степан Николаевич!
Проверила вашу программу у меня все работает,только я дописала путь к файлу где хранится текстовый файл (D:...).
Ответ отправила: Pyatno (статус: 1-ый класс)
Ответ отправлен: 20.12.2007, 16:28
Оценка за ответ: 1
Комментарий оценки:
Двух слов не скажеть


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

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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.66 от 23.12.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное