gvozd Опубликовано 24 января, 2005 Жалоба Поделиться Опубликовано 24 января, 2005 Короче, задали мне по информатике такую фигню на Паскале забацать, типа есть ряд: s = x + x^2 +x^3 + ... + x^N. Я вот написал, но оно что-то не пашет : program summa_stepenej;uses crt;vars: integer;x: integer;n: integer;i: integer;begin clrscr; WriteLN('Введите число: '); Read(x); WriteLN('Введите степень: '); Read(n); s:=x; for i:=1 to n do beginx:=x*x;s:=s+x; end; WriteLN('Сумма равна: ', s); ReadKey;end. Вот так вот. Даже не знаю что делать. Помогите найти ошибку. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Kuzmich Опубликовано 24 января, 2005 Жалоба Поделиться Опубликовано 24 января, 2005 В цикле у тебя считается неправильно... for i:=1 to n do begin x:=x*x; s:=s+x; end; Перед циклом сделай x1:=x, а вместо x:=x*x напиши x:=x*x1... А можно сделать другое возведение в степень: x^n=exp(n*ln(x))... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Old men Опубликовано 24 января, 2005 Жалоба Поделиться Опубликовано 24 января, 2005 Если я еще помню что-то из программирования, то у тебя должен быть постоянный сдвиг в сторону увеличения суммы на x^2. В цикле надо указывать i:=2 Но могу и ошибаться, давно это было Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 24 января, 2005 Жалоба Поделиться Опубликовано 24 января, 2005 gvozd У тебя x становится равным x, x^2, x^4, x^8... Да и при n, равном 1, выдается сразу уже x+x^2 и так далее - на 1 член ряда больше, чем нужно. Сделай дополнительно переменную y:integer; для того, чтобы держать в ней текущий член ряда. Вместо s:=x; напиши y:=1; s:=0; В цикле вместо того, что у тебя, будет y:=x*y; s:=s+y; Кстати, ты убежден, что ряд должен быть только для целых чисел? Я бы сделал x, y, s типа Real. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 24 января, 2005 Жалоба Поделиться Опубликовано 24 января, 2005 Я бы сделал x, y, s типа Real. К тому же это избавит от переполнения в том случае, если х и N станут больше пяти. Так что, если не хочешь делать их числами с плавающей точкой, то по крайней мере возьми целочисленный тип с большим рамером, longint например. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 24 января, 2005 Автор Жалоба Поделиться Опубликовано 24 января, 2005 Всем спасибо, все сработало, как же я сам недопер, что x становится равным x, x^2, x^4, x^8? Не, ну зачем в школе изучать этот паскаль, гораздо лучше было бы VB учить.Тролль Да не, точно целый, да и с Real число не красивое получается. Еще раз всем спасибо! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.