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

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

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

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

Задача по циклам

Сова

Ученик
Регистрация
28 Окт 2011
Сообщения
10
Реакции
0
Баллы
0
Задача по циклам

Работа с циклическими конструкциями.
Пользователь вводит целое положительное число k. Найти наибольшее значение суммы
1^k + 2^k + 3^k + ... + n^k ,
Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа longint.

:tehnari_ru_281: Помогите, товарищи! Задачу надо решить через циклы. Я уже третьи сутки кукую, шляпа какая-то получается, ничего толкового. Сумма не выходит. :tehnari_ru_1019: В общем, помогите.

Вот моя прога.
Program Cikl;
uses crt;
const v=#179;
var s,k,i,z,x,c:longint;
begin
clrscr;
writeln ('---------------------------');
writeln (v,'Степень',v,' Значение суммы ',v);
writeln ('---------------------------');
for k:=1 to 16 do
begin
write (v,' ',k,' ',v,' ');
i:=1;
while s<exp(30*ln(2)) do
begin
s:=s+trunc(exp(k*ln(i)));
i:=i+1;
end;
writeln (s,' ',v);
writeln ('---------------------------');
end;
writeln;
write ('‚Введите положительное число k=');
readln (x);
if (x>=31) then writeln ('Наибольшая сумма равна s=1')
else
if (x>=20) and (x<31) then
z:=1+trunc(exp(x*ln(2)))
else begin
c:=1;
while z<exp(30*ln(2)) do
begin
z:=z+trunc(exp(x*ln(c)));
c:=c+1;
end;
writeln ('Наибольшая сумма равна s=',z);
end;
writeln ('Наибольшая сумма равна s=',z);
readln;
end.
 
Наворотили вы тут действительно что-то непонятное, трудноосмысляемое и неудобоваримое.
Код:
var
i,k:longint;
s:extended;
begin
write('K=');
readln(k);
i:=2;
s:=1;
 while s<exp(31*ln(2)) do
 begin
 s:=s+trunc(exp(k*ln(i)));
 writeln ('При i=',i,' текущая сумма s=',s);
 i:=i+1;
 end;
writeln ('Наибольшая сумма равна s=',s);
readln;
end.
остальное, кроме раздела переменных, imho, лишнее :)

З.Ы. Диапазон значений не проверял, но вроде как верный
 
Пользователь вводит целое положительное число k. Найти наибольшее значение суммы 1^k + 2^k + 3^k + ... + n^k , Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа longint.
Я бы Вам с удовольствием помог, если бы уяснил условие задачи. Итак, есть граница диапазона, равная 2^31-1. Вводим k. Отсюда с помощью цикла определяем n. Всё предельно однозначно, а потому я напрочь не понимаю, о каких "наибольших" и "всех" значениях суммы идет речь? Повторяю, я вижу абсолютно однозначное по k, n и, соответственно, s решение. Поясните.
 
Владимир, думаю, что требуется вывести цепочки сумм степеней чисел для различных показателей степени. Эти цепочки при разных значениях k будут различаться по длине и количеству чисел. Тут нужно будет еще ввести ограничение на значение k, так как при числах более 10 выдается ошибка превышения диапазона :)
Но это мое сугубое imho :)
 
Алексей, очень вас благодарю.
Владимир, предоставляю вам простое объяснение. Я студент, мне дали вот эту задачу. Я тоже сутки думал, что за смысл этой задачи. В итоге, пришел к выводу, что это банальная сумма. Меня все равно смущает наличие переменной n. Я сам не понимаю толком.
И Алексей, выйдете в аську, пожалуйста.
 
И все же, как быть со второй частью вопроса?)
 
Назад
Сверху