Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 28.10.2011, 23:36   #1 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача по циклам

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

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

Вот моя прога.
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.
Сова вне форума   Ответить с цитированием

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

Проблема встречалась и ранее, вот, что нашлось

Задача по С + +
Задача по С++

Старый 29.10.2011, 09:33   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Наворотили вы тут действительно что-то непонятное, трудноосмысляемое и неудобоваримое.
Код:
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, лишнее

З.Ы. Диапазон значений не проверял, но вроде как верный
AlexZir вне форума   Ответить с цитированием
Старый 29.10.2011, 09:33   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Сова Посмотреть сообщение
Пользователь вводит целое положительное число k. Найти наибольшее значение суммы 1^k + 2^k + 3^k + ... + n^k , Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа longint.
Я бы Вам с удовольствием помог, если бы уяснил условие задачи. Итак, есть граница диапазона, равная 2^31-1. Вводим k. Отсюда с помощью цикла определяем n. Всё предельно однозначно, а потому я напрочь не понимаю, о каких "наибольших" и "всех" значениях суммы идет речь? Повторяю, я вижу абсолютно однозначное по k, n и, соответственно, s решение. Поясните.
Vladimir_S вне форума   Ответить с цитированием
Старый 29.10.2011, 09:57   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Владимир, думаю, что требуется вывести цепочки сумм степеней чисел для различных показателей степени. Эти цепочки при разных значениях k будут различаться по длине и количеству чисел. Тут нужно будет еще ввести ограничение на значение k, так как при числах более 10 выдается ошибка превышения диапазона
Но это мое сугубое imho
AlexZir вне форума   Ответить с цитированием
Старый 29.10.2011, 22:57   #5 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Алексей, очень вас благодарю.
Владимир, предоставляю вам простое объяснение. Я студент, мне дали вот эту задачу. Я тоже сутки думал, что за смысл этой задачи. В итоге, пришел к выводу, что это банальная сумма. Меня все равно смущает наличие переменной n. Я сам не понимаю толком.
И Алексей, выйдете в аську, пожалуйста.
Сова вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.10.2011, 03:58   #6 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

И все же, как быть со второй частью вопроса?)
Сова вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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