Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2013, 17:39   #1
Ксюшка2
Новичок
Джуниор
 
Регистрация: 29.01.2013
Сообщений: 2
По умолчанию Паскаль(множество значений и цикл)

ребята,всем привет!помогите пожалуйста.учусь на заочном,паскаль вообще не знаю.дали решить на зачет 5 задач,3 решила по методичке,две не могу.
скидываю задание и то что смогла написать(неправильно).помогите чем можете.задания как говорит преподаватель очень простые.

1.Вычислить множество значений функции для всех значений х от -15 до 15 с шагом 3, при b=3

2.Задавая x и n (число членов суммы), найти сумму S с точностью E.
S=1+x/1!+x^2/2!+x^3/3!+...

для первого задания:

Код:
program zadacha4;
var x,y,b:integer;
begin
x:=-15;b:=3;
repeat
begin
x:=x+3;
if x<=15 then y:=3*x*x-b else writeln('dostignut predel!');
end;
until x>15;
writeln('mnozhestvo znachenii=',y);
readln;
end.
для второго задания:

Код:
program zadacha5;
var i,n,s,x:real;
begin
writeln('vvedite n');
readln(n);
writeln('vvedite x');
read(x);
s:=0;
for i:=1 to n do
s:=s+n*(n-i)


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 29.01.2013 в 21:05.
Ксюшка2 вне форума Ответить с цитированием
Старый 29.01.2013, 19:02   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

1. Код оформляется кнопкой # (не та, что на клаве, а над полем ввода

2. Код №1 - где сама функция из задания?

Код:
program zadacha4;
var x,b:integer;  //переменная y не нужна - смотрите ниже
begin
  x:=-18;  //так как x внутри цикла Вы увеливаете на 3 до вычисления функции, нужно начальное значение уменьшить еще на 3, чтоб начало в цикле считать с -15
  b:=3;
  repeat  //repeat..until не нуждаются еще и в begin..end. Они сами - beginend Для цикла
    x:=x+3;
    WriteLn(3*x*x-b) //Выводим значение функции сразу, без всяких y 
//Сравнение убрал, так как оно абсолютно не нужно - цикл просто не позволит рассчитать значения x>15
  until x>=15; //Добавил = - так как верхний предел =15
//   writeln('mnozhestvo znachenii=',y); Это убрал, так как Вы получаете только последнее значение y
  readln;
end.
3. Код №2 - для простоты добавим парочку функций:

Код:
program zadacha5;


const e=0.01; //Точность вычислений, про которую Вы забыли, кажется ;)
var s,x,a:real;
    n,i: integer; //Количество членов - НЕ реальное число, а целое; i - счетчик

function Pow(x,y: integer): real;  //Функция вычисляет x в степени y
var j: integer;
    p: real;
begin
  p:=1;
  for j:=1 to y do p:=p*x;
  Pow:=p;
end;

function Factorial(x: integer): integer;  //Функция вычисления факториала
var j: integer;
    p: integer;
begin
  p:=1;
  if x>1 then 
    for j:=2 to x do p:=p*j;
  Factorial:=p;
end;

begin
 writeln('vvedite n');  //Ну тут все верно, молодец!
 readln(n);
 writeln('vvedite x');
 read(x);
 a:=1;       //Первый член последовательности
 s:=0;       //начальное значение суммы
 i:=1;        //счетчик кол-ва членов на момент начала цикла
 Repeat     //А вот цикл for для таких вычислений неприемлем, тут нужен тот же Repeat.. Until
   s:=s+a;  //Вычисляем текущую сумму
   inc(i);    //увеливаем i на 1
   a:=pow(x,i)/factorial(i);  //Вычисляем следующий член последовательности
 Until (Abs(a)>=e) or (i=n); //Цикл завершается, когда достигнута заданная точность или когда сложено заданное количество членов (n);
 WriteLn(s);
 ReadLn;   //Вывод суммы
end.
Только учтите, что факториал - функция быстрорастущая, и задават n>7 нежелательно, так как тогда значение функции выйдет за пределы, допустимые в типе integer
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 29.01.2013, 21:35   #3
Ксюшка2
Новичок
Джуниор
 
Регистрация: 29.01.2013
Сообщений: 2
По умолчанию

Большое спасибо!первая задача работает отлично,но у второй что то не то.почему то ответ все время единица.
Ксюшка2 вне форума Ответить с цитированием
Старый 29.01.2013, 21:38   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
Until (Abs(a)<=e) ...
а так?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 09:06   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

в 1 задаче условие все таки должно быть строгим имхо
Код:
until x>15;
а во 2 задаче функция должна быть реккурентной)
Код:
s:=0;
sl:=1; i:=1;
while (abs(sl)>e) and (i<=n) do
begin
s:=s+sl;
sl:=sl*x/i;
inc(i);
end;
что позволяет избежать кучу лишнего кода
и
Цитата:
n (число членов суммы)
vs
Цитата:
с точностью E
выберите что то одно

Цитата:
А вот цикл for для таких вычислений неприемлем
почему же с break-ом можно)
Код:
s:=0;sl:=1;
for i:=1 to n do
begin
s:=s+sl;
sl:=sl*x/i;
if abs(sl)<e then break;
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 30.01.2013 в 09:11.
Mad_Cat вне форума Ответить с цитированием
Старый 30.01.2013, 09:58   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Согласен со всем сказанным - так тоже можно. С меня плюс Mad_Cat'у.

UPDATE. Не то чтобы "тоже можно", а даже лучше
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, множество DiMkO_17 Помощь студентам 7 02.10.2012 21:33
Задача на множество (паскаль абс) nepogosty Помощь студентам 0 07.06.2012 22:20
Дано множество А, напечатать четные элементы, входящие в другое множество (Паскаль) Марийка92 Помощь студентам 4 03.04.2011 17:38
паскаль,множество Dean Помощь студентам 1 13.03.2011 18:20
Паскаль,функция и множество pavlentus Помощь студентам 4 20.04.2009 20:39