• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Прошу помощи в решении задачи на Паскале!

Статус
В этой теме нельзя размещать новые ответы.
Если он работает в консоли с кодировкой CP1251 (Windows), то ничего не получится - из нее изъята псевдографика, насколько я помню.
 
В моем паскале write(chr($DB)); выводит букву Ы. Но у меня не DOS-Паскаль, а Паскаль АВС, так что все нормально.

Странно - как-то не встречал таких таблиц, где бы 219 коду соответствовало "Ы". Воистину - Век живи, век учись, ....... .......!
 
Это не шутка :) Просто у меня такой Паскаль.
 
Странно - как-то не встречал таких таблиц, где бы 219 коду соответствовало "Ы". Воистину - Век живи, век учись, ....... .......!
Как ни странно, если Вы используете Windows, то с этой таблицей Вы сталкиваетесь каждую секунду - это CP1251 Windows-1251 — Википедия
 
Как ни странно, если Вы используете Windows, то с этой таблицей Вы сталкиваетесь каждую секунду - это CP1251 Windows-1251 — Википедия

Странно. Кодировка данной страницы форума как раз W-1251. А вот 219 символ: █ .
На всякий случай - это черный прямоугольник.
 
спасибо большое за помощь)))
 
Подскажите как в Паскале пропишется счетчик для этой функции Q= 1+ x/1! + x**2/2!+...+ x**N/N!
 
Счетчик в смысле вычислитель? Подпрограмма для вычисления факториала есть?
 
Счетчик в смысле вычислитель? Подпрограмма для вычисления факториала есть?

Ну если просто вычислитель, то без проблем:

VAR
N,i:INTEGER;
x,y:EXTENDED;

FUNCTION X2np(X:Extended; n:INTEGER):Extended;
Var
i:INTEGER;
Y:Extended;
BEGIN
IF n=0 THEN X2np:=1 ELSE
IF n=1 THEN X2np:=X ELSE
BEGIN
Y:=X;
FOR i:=2 TO n DO Y:=Y*X;
X2np:=Y;
END;
END;

FUNCTION Nfact(n:LongInt):Extended;
VAR
i:LongInt;
fact:Extended;
BEGIN
IF n=0 THEN fact:=1 ELSE
BEGIN
fact:=1;
FOR i:=1 TO n DO
fact:=fact*i;
END;
Nfact:=fact;
END;

BEGIN
Write('x= ');
ReadLn(x);
Write('N= ');
ReadLn(N);
Y:=1;
FOR i:=1 TO N DO
Y:=Y+X2np(x,i)/Nfact(i);
WriteLn('Y= ',Y);
ReadLn;
END.
 
Немного не то
нужно было написать прогу с использованим цикла For
Q= 1+ x/1! + x**2/2!+...+ x**N/N!, N>0 вводится с клавиатуры.

Это для проверки проги (x=5, N=10, s=146.38)

Эх не могу найти свой исходник.Вобшем Как пропишется (Q= 1+ x/1! + x**2/2!+...+ x**N/N!) непосредсвенно в паскаль коде(с экспанетами и фактариалами(fakt)) и что ещё обозначает ... (три точки в функции)
 
Немного не то
нужно было написать прогу с использованим цикла For
Q= 1+ x/1! + x**2/2!+...+ x**N/N!, N>0 вводится с клавиатуры.

Это для проверки проги (x=5, N=10, s=146.38)

Эх не могу найти свой исходник.Вобшем Как пропишется (Q= 1+ x/1! + x**2/2!+...+ x**N/N!) непосредсвенно в паскаль коде(с экспанетами и фактариалами(fakt)) и что ещё обозначает ... (три точки в функции)

Нет, Леша, из этого сумбура я мало что понял. Прежде всего - результат работы программы:
c1d43b9dbfe8.webp
Как писал А.С.Пушкин - "Чего ж вам боле?"
Насчет цикла - а это, по-Вашему, что?
FOR i:=1 TO N DO
Y:=Y+X2np(x,i)/Nfact(i);
По-моему цикл и есть!
Три точки обозначают то же, что, если, допустим, я хочу перечислить все целые числа от 1 до 10, то могу это записать сокращенно: 1, 2, ..., 10. Так же и здесь. Между прочим, эта функция - не что иное, как разложение в ряд экспоненты
Exp(x) = 1 + x/1! + x²/2! + x³/3! + ... + xª/a! (здесь N заменено на a)
 
В принципе, и вычисление степеней, и вычисление факториалов можно поместить в один цикл с вычислением суммы.
А вот вычислять степени N c помощью экспоненты и замены основания, для того чтобы вычислить в итоге экспоненту мне кажется нелогичным.
 
Сейчас мысленно вернулся к задачке и понял, что в данном случае действительно можно короче и проще:

VAR
N,i:INTEGER;
x,y,add:EXTENDED;

BEGIN
Write('x= ');
ReadLn(x);
Write('N= ');
ReadLn(N);
Y:=1;
Add:=1;
FOR i:=1 TO N DO
BEGIN
Add:=Add*x/i;
Y:=Y+Add;
END;
WriteLn('Y= ',Y);
ReadLn;
END.

Но предыдущий вариант более "универсален".
 
помогие плиз с задачкой про курс корабля)

С клав. вводится текущий курс корабля (север, юг, запад, восток), Затем поступает команда (направо, налево, прямо, назад) Надо чтобы в итоге он выавал курс корабля после команды..я так понимаю тут будет много Case и перечисляемяе типы..но. что-то я не знаю что в кейсе писать(
 
помогие плиз с задачкой про курс корабля)

С клав. вводится текущий курс корабля (север, юг, запад, восток), Затем поступает команда (направо, налево, прямо, назад) Надо чтобы в итоге он выавал курс корабля после команды..я так понимаю тут будет много Case и перечисляемяе типы..но. что-то я не знаю что в кейсе писать(

С перечисляемыми типами не получилось - значения переменных таких типов нельзя вводить с консоли, кроме того, они не могут быть индексами оператора CASE. Так что пришлось попроще (программа прерывается вводом команды 5 (Stop)):
Код:
CONST
Course:ARRAY[1..4] of STRING=('Nord', 'Zued', 'West', 'Ost');
VAR
Course_bef,Course_aft,Command:BYTE;
BEGIN
WriteLn('Enter the initial course number:');
WriteLn('                                 1 - Nord');
WriteLn('                                 2 - Zued');
WriteLn('                                 3 - West');
WriteLn('                                 4 - Ost');
ReadLn(Course_bef);
REPEAT
WriteLn('Enter the command number:');
WriteLn('                         1 - Right');
WriteLn('                         2 - Left');
WriteLn('                         3 - Forward');
WriteLn('                         4 - Back');
WriteLn('                         5 - Stop');
ReadLn(Command);
IF Command<>5 THEN
BEGIN
Case Course_bef of
1 {Nord}:
Case Command of
1: Course_aft:=4 {Ost};
2: Course_aft:=3 {West};
3: Course_aft:=1 {Nord};
4: Course_aft:=2 {Zued};
END;
2 {Zued}:
Case Command of
1: Course_aft:=3 {West};
2: Course_aft:=4 {Ost};
3: Course_aft:=2 {Zued};
4: Course_aft:=1 {Nord};
END;
3 {West}:
Case Command of
1: Course_aft:=1 {Nord};
2: Course_aft:=2 {Zued};
3: Course_aft:=3 {West};
4: Course_aft:=4 {Ost};
END;
4 {Ost}:
Case Command of
1: Course_aft:=2 {Zued};
2: Course_aft:=1 {Nord};
3: Course_aft:=4 {Ost};
4: Course_aft:=3 {West};
END;
END;
Writeln('Course: ',Course[Course_aft]);
Writeln;
Course_bef:=Course_aft;
END;
UNTIL Command=5 {Stop};
END.
 
Последнее редактирование:
С перечисляемыми типами не получилось - значения переменных таких типов нельзя вводить с консоли, кроме того, они не могут быть индексами оператора CASE. Так что пришлось попроще (программа прерывается вводом команды 5 (Stop))
ничего подобного) я кстати сделал ее с кейсом и еще одним вложенным кейсом и перечисляемыми типами, все работает) задачка была принята) Позже если будет интересно могу выложить решение.
 
Дана непустая последовательность натуральных чисел, за которой следует 0. Вычислить сумму тех из них, порядковые номера которых кратны 3...)
 
Считывайте числа в целочисленный массив до тех пор, пока не встретите 0, при этом счетчик размерности массива увеличивайте на 1 с каждым заполненным ненулевым элементом. Затем заводите цикл, в котором анализируйте остаток от деления переменной счетчика на 3. Переменную суммы увеличивайте на значение элемента массива всякий раз, когда остаток от деления будет равен 0. Затем выводите получившуюся сумму.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху