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 число не красивое получается. Еще раз всем спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти