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

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

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

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

Проверка. Паскаль

  • Автор темы Автор темы Vera101
  • Дата начала Дата начала

Vera101

Новые
Регистрация
11 Май 2016
Сообщения
23
Реакции
0
Баллы
0
Проверка. Паскаль

Добрый день. Необходима проверка и указания по исправлению. Спасибо.
 

Вложения

  • п2.PNG.webp
    п2.PNG.webp
    3.6 KB · Просмотры: 261
  • п4.PNG.webp
    п4.PNG.webp
    20.5 KB · Просмотры: 181
  • п1.PNG.webp
    п1.PNG.webp
    5.2 KB · Просмотры: 220
  • п3.PNG.webp
    п3.PNG.webp
    9.4 KB · Просмотры: 204
Добрый день. Необходима проверка и указания по исправлению. Спасибо.
Добрый день, Вера. Готов Вам помочь, но при условии, что программы будут выложены в ТЕКСТОВОМ виде, а не рисунками. Или вручную их набивать для тестирования прикажете?
Сразу скажу - ошибки есть. Конкретнее после появления ТЕКСТОВЫХ листингов.
 
<code>program Project4;

{$APPTYPE CONSOLE}

uses
SysUtils,
Math;

procedure F(x,e:real);
var y0,y1:real;
begin
y0:=1;
y1:=1.5*y0-0.5*x*sqr(y0)*y0;
while Abs (y0-y1)>e do
begin
y0:=y1;
y1:=1.5*y0-0.5*x*sqr(y0)*y0;
end;
writeln('y=',y1:0:5);
write('1/sqrt(x)=', 1/sqrt(x):0:5);
end;
var x,e:real;
begin
e:=0.00001;
x:=2;
F(x,e);
Readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
</code>

Ошибки логические.

<code>
program Project3;

{$APPTYPE CONSOLE}

uses
SysUtils;

var x,a,y,b,h,p:Real;
i,n:Integer;
function f1(x:Real):Real;
var yy:Real;
begin
yy:=(sqr(sqr(x)))+sqr(x)*x-10*sqr(x)-34*x-25;
f1:=yy;
end;
begin
a:=-2;
b:=0;
h:=0.1;
writeln ('a= ',a:4:0);
writeln ('b= ',b:4:0);
writeln ('h= ',h:4:1);
n:=Round((b-a)/h);
writeln ('n= ',n:4);
p:=1;
x:=a;
y:=f1(x);
writeln ('x= ',x:4:0);
writeln ('y= ',y:4:0);
writeln ('proizvedenie y>0 ravno',p:5:2);
if y>0
then p:=p*y;
for i:=1 to n do
begin
x:=x+h;
y:=f1(x);
writeln ('x= ',x:4:2);
writeln ('y= ',y:4:2);
Readln;
if y>0
then p:=p*y;
writeln ('proizvedenie y>0 ravno ',p:5:2);
end;
writeln ('proizvedenie y>0 ravno ',p:5:2);
readln;
end.
</code>
 
Так. Весело.
Вера, но ведь это программы от абсолютно других заданий! Я прошу совсем немногого: задание (можно картинкой) и набросок программы К НЕМУ (обязательно текстом). Или мои просьбы чрезмерны а потому невыполнимы?
 
Ничего веселого не вижу. Это и есть те задания, которые я сделала в программе.
 
И задания к ним были выше.
 
А хотя да, одно не то.
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;

var x,a,y,c,d:Real;
function max2
(x1,x2:Real):Real;
var max:Real;
begin
max:=x1;
if max>x2
then max:=x2;
max2:=max;
end;
function min3
(x1,x2,x3:Real):Real;
var min:Real;
begin
min:=x1;
if min<x2
then min:=x2;
if min<x3
then min:=x3;
min3:=min;
end;
begin
Writeln ('vvod x,y,c,d');
Readln (x,y,c,d);
if(x*y>3)
then a:=((x*x*x)+ln(exp((c*d)*ln(x*y)))/ln(10))
else
if ((x*y>2)and (x*y<3))
then a:=min3(x,y,max2(c*x,d*y))
else
a:=((exp((c*d)*ln(2)))- x);
Writeln ('a=', a:3:2);
Readln;
end.
 
Выше были скинуты задания. Текста к ним не было. И мои наброски к ним тоже.
 
var x,e,n,x2,A:real;
begin
e:=0.001;
x:=0.4;
X2:=x*x;
A:=x;
N:=2;
Readln (A);
While (A>e) do
begin
A:=A*x2/(N*(N+1));
N:=N+2;
writeln('(a)=', a:0:5);
Readln (A);
end;
end.

Когда записано много вариантов и ты сидишь до утра, то не удивительно вставить другое. Так что не вижу ничего веселого.
 
Ничего веселого не вижу. Это и есть те задания, которые я сделала в программе.
Извините. Вероятно, у меня что-то со зрением. В первой программе я вижу решение уравнения
y = 1.5y-0.5xy³
методом простой итерации. Покажите пожалуйста, где что-либо подобное требуется в Ваших заданиях, показанных в первом посту темы?
Что касается второй программы, то её смысла я вообще постичь не могу. Извините.

Вера, всё, о чём я Вас просил, это выложить ТЕ ЖЕ ЛИСТИНГИ, которые Вы выложили в посте #1, только не в виде картинок, а ТЕКСТОМ. И всё. А Вы даёте какие-то совсем другие программы по неизвестно каким заданиям. Пожалуйста, если надо - разберемся и с ними, только тогда покажите сами задания.
 
Я кинула, перед вашим сообщением. то что кидала
 
Перед вашим сообщением то. что было кинуто в начале. А предыдущие да, из других задач.
 
Ага, ну вот это уже дело другое.
Что же, разберем Вашу программу.
1. Величины e и x лучше задать в виде констант. По крайней мере, е.
2. Если Вы в программе задаёте в явном виде х=0.4, то зачем же вы ставите экранное чтение? Абсолютно ни к чему.
3. Вводить отдельный идентификатор для х² не нужно. Можно написать х*х или Sqr(x) - как больше нравится.
4. Формула для вычисления знаменателей членов последовательности неверна.
С учетом всего вышесказанного, рабочий вариант программы можно организовать, например, так:
Код:
const
 e=0.001;
 x=0.4;
var
 n,A:real;
begin
 A:=x;
 N:=1;
 writeln('(a)= ', A:0:5);
 While (A>e) do
  begin
   N:=N+2;
   A:=A*x*x/(N*(N-1));
   writeln('(a)= ', A:0:5);
  end;
 Readln
end.
 
Большое спасибо. А с min, max что не так?
 
Большое спасибо. А с min, max что не так?
Теперь по второй программе.
В принципе как таковых ошибок там нет, есть лишь... как бы это сказать... неряшливости и нелепости.
1. Функция Max2 несколько усложнена, можно проще.
2. Расставляя скобки, не следует руководствоваться принципом "чем больше, тем лучше" - просто сами запутаетесь. Ставьте их там, где они необходимы, и лишь иногда - для повышения читабельности текста программы.
3. Выражение Ln(exp(Q)) - бессмысленно, ибо это всегда просто тождественное Q.
4. Поскольку у Вас в программе фигурирует Ln(xy), то хорошим стилем будет поставить защиту от отрицательных и нулевых значений ху при вводе. Напомню, что логарифм бывает ТОЛЬКО от строго положительных величин.
5. Тут не Ваша вина, а скорее некорректность формулировки задания: "выпали" значения ху=2 и ху=3 (точно). Поэтому среднее неравенство я сделал нестрогим.

Итого:
Код:
var
 x,a,y,c,d:Real;

function max2(x1,x2:Real):Real;
begin
 if x1>x2 then max2:=x1 else max2:=x2;
end;

function min3(x1,x2,x3:Real):Real;
var min:Real;
begin
 min:=x1;
 if min<x2 then min:=x2;
 if min<x3 then min:=x3;
 min3:=min;
end;

begin
 Writeln ('vvod x,y,c,d');
 Readln (x,y,c,d);
 if(x*y>3) then
  a:=x*x*x+(c*d)*ln(x*y)/ln(10)
 else
 if (x*y>=2) and (x*y<=3) then
  a:=min3(x,y,max2(c*x,d*y))*3
 else
  a:=exp((c*d)*ln(2))-x;
 Writeln ('a= ', a:0:5);
 Readln;
end.
 
Так, стоп! Во втором ветвлении множитель 3 забыли!!! И Вы, и я. Исправил.
 
Мне вот не понятно еще по-первому, почему в A:=A*x*x/(N*(N-1)) стоит N-1, а не плюс. И в ответе выводится такое число как 0.00009.
 
Мне вот не понятно еще по-первому, почему в A:=A*x*x/(N*(N-1)) стоит N-1, а не плюс. И в ответе выводится такое число как 0.00009.
А, ну это моя вина. Нет, всё правильно, просто я переменил зачем-то порядок действий (сначала - увеличение N на 2). Как-то так представилось и написалось. Но у Вас тоже правильно, можно и так. Правда, у Вас первый член последовательности выпал, что нехорошо.
А ответ - правильный: x^5/5!=0.00008533333. После округления оно и получается. И в Вашей программе оно выводится. Или Вы о том, что оно "лишнее"? Можно и убрать. Например, так
Код:
const
 e=0.001;
 x=0.4;
var
 n,A:real;
begin
 A:=x;
 N:=1;
 writeln('(a)= ', A:0:5);
 While (A>e) do
  begin
   N:=N+2;
   A:=A*x*x/(N*(N-1));
   if A>e then writeln('(a)= ', A:0:5);
  end;
 Readln
end.
 
Ясно. Спасибо за помощь.
 
Назад
Сверху