Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.03.2011, 20:14   #1 (permalink)
FPS
Member
 
Регистрация: 11.11.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Lightbulb Помогите соединить две задачи на Паскале

Всем доброго времени суток, очень нужна помощь с контрольной по программированию, завтра сдавать.. Уже есть 2 программы, их нужно както соединить в одну и ещё подредактировать первую, там почемуто после ввода чисел пишет ошибку =(

Вот как звучит задание:
10169868.jpg

Вот код первой программы:
Цитата:
program z21;
Uses crt;
var x1,x2,x,dx,l:integer;
y1,y2,z:real;
begin
clrscr;
L:=0;
Writeln('vvedite x1, x2 and dx');
Readln(x1,x2,dx);
for x:=x1 to x2 do
begin
l:=l+1;
If (l=dx) then
begin
if (x<2) then
y1:=(3*x*x+2*x+5)/2*exp(-x)
else
if (x>=2)and(x<6) then
y1:=x+cos(x)
else
begin
Writeln(' Error input x ');
exit;
end;
y2:=2*y1+x*x;
z:=2*sqr(y1)+y2;
Writeln('output: z=',z:5:2);
l:=0;
end;
end;
readln;
end.
Вот вторая:
Цитата:
program z22;
uses crt;
var i,n:integer;
A:array[1..100] of real;
b:array[1..100] of real ;
begin
clrscr;
Writeln('vvedite dlinu massiva');
readln(n);
if (n<=0) then
begin
Writeln ('Error');
exit;
end;
Writeln('vvodite');
for i:=1 to n do
Readln(a[i]);
Writeln('outpet');
For i:=1 to n do
if a[i]<0 then
b[i]:=abs(a[i])
else
b[i]:=a[i];
For i:=1 to n do
Writeln(b[i]);
readln;
end.
FPS вне форума   Ответить с цитированием

Старый 09.03.2011, 20:14
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можете узнать больше информации о этой проблеме, почитав похожие темы

Помогите решить четыре задачи в Паскале
Задачи на Паскале
Помогите решить две задачи в турбо паскале
Задачи на паскале.
Помогите решить задачи на Паскале
Не знаю как решить задачи на паскале, помогите пожалуйста!

Старый 09.03.2011, 21:37   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Нет, первый код - категорически никуда не годится! Кто Вам сказал, что переменная х может принимать только целочисленные значения? Потому что так проще цикл программировать? Не пойдет. В задании дана вещественная функция вещественного аргумента, и нечего тут упрощать. Решить задачку можно, например, так:
Код:
VAR
 Xmin,Xmax,Dx,x:Real;
 i,N:Integer;

Function Y1(x1:Real):Real;
begin
 if x1<2 then Y1:=(x1*x1*3+x1*2+5)/2/Exp(-x1)
 else Y1:=x1+Cos(x1);
end;

Function Y2(x2:Real):Real;
 begin
  Y2:=Y1(x2)*2+x2*x2;
 end;

Function Z(x3:Real):Real;
 begin
  Z:=Y1(x3)*2+SQR(x3);
 end;

BEGIN
 Write('Xmin = ');
 ReadLn(Xmin);
 Write('Xmax (<6) = ');
 ReadLn(Xmax);
 Write('Dx = ');
 ReadLn(Dx);
 N:=ROUND((Xmax-Xmin)/Dx);
 For i:=0 to N do
  begin
   x:=Xmin+Dx*i;
   WriteLn(x:5:2, Z(x):12:3);
  end;
 ReadLn;
END.
Что касается второй программы, то вроде явных ошибок там нет, но сделана она просто безобразно неряшливо и неудобно. Особенно с оператором exit - вообще ни в какие ворота не лезет. Потому предлагаю такой вариант:
Код:
program z22;
uses crt;
var
 i,n:integer;
 A:array[1..100] of real;
 b:array[1..100] of real ;
begin
 clrscr;
 Repeat
  Write('Vvedite dlinu massiva ');
  readln(n);
  if (n<=0) or (n>100) then
  Writeln ('Error!');
 Until (n>0) and (n<101);
 Writeln('Vvodite:');
 for i:=1 to n do
  begin
   Write('a[',i:2,']= ');
   Readln(a[i]);
  end;
 Writeln('Input:');
 for i:=1 to n do
  Write(a[i]:8:3);
 Writeln;
 Writeln('Output:');
 for i:=1 to n do
  b[i]:=abs(a[i]);
 for i:=1 to n do
  Write(b[i]:8:3);
 Writeln;
 readln;
end.
Что касается объединения программ - решительно не понимаю, зачем и кому это нужно: они ведь никак не связаны. Ну сделайте из них две процедуры без параметров и поставьте в начале запрос, какую из двух запускать, а потом ветвление. Можно, конечно...
Vladimir_S вне форума   Ответить с цитированием
Старый 09.03.2011, 22:14   #3 (permalink)
FPS
Member
 
Регистрация: 11.11.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо Вам большое С этой контрольной помогли, ещё и денег хотели содрать) А на счёт объединения, препод зачемто требует) буду пробовать =)
FPS вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:49.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.