Помощь - Поиск - Пользователи - Календарь
Полная версия: логические задачки на паскале
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
webgirl
вычислить следующую сумму и определить, при каком n произойдет переполнение строки
1^2+2^2+3^2+...+n^2

составить программу, кот. возводит число в куб, используя следующее свойство:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19 (эту я вроде с грехом пополам сделала, но такой бред получился)

сост программу для:
(((((1?2)?3)?4)?5)?6)=35

заранее очень вам благодарна rolleyes.gif
volvo
webgirl
Цитата
с грехом пополам сделала

А почему бы не показать, что уже сделано?

Кроме этого, может объясните, что значит вот эта фраза:
Цитата
при каком n произойдет переполнение строки

При чем здесь строка?
EXE
Всегда готов помочь если б задание было написано полностью (т.е. как дается изначально) :yessss:

Второе задание прогрессию n чисел. Ща подумаю как это на Паскале-то накодить.
volvo
EXE
Второе задание решается элементарно:
Код

const n = 5;
var i, start, s: integer;
begin
 start := sqr(n) - pred(n);
 s := 0;
 for i := 1 to n do
   begin
     inc(s, start); inc(start, 2)
   end;
 writeln('result = ', s)
end.

Вообще-то вопрос был, как webgirl это сделала...
EXE
Согласен ;)
webgirl
Цитата
При чем здесь строка?

вопрос по-другому (как я его понимаю): при каком н количество цифр в искомом значении (искомой сумме) превысит 255 символов. наверно так

вот как я решала вторую
Код


program kub;
uses crt;
var a,i,j,k,s:integer;
begin
clrscr;
writeln;
writeln('vvedite chislo');readln(a);
k:=0;
for i:=1 to a do
begin
k := k+(i-1);
end;
i:= 1;
for j := 1 to k do
i:= i+2;
for j:=a downto 1 do
begin
s := s + i;
i:=i+2;
end;
writeln(s);
readkey;
end.

но мой препод сказал, что можно решить намного проще и что это полный бред, хотя я мучалась с ней неделю. обидно, однако
volvo
webgirl
Насчет второй - вверху приведен текст, который, как видно, и хотел препод... Третью я решил ОЧЕНЬ нетривиально - боюсь, что она преподу тоже не понравится:

Код

type
 myFunc = function(a, b: integer):integer;

function myAdd(a, b: integer): integer; far;
 begin myAdd := a + b end;
function mySub(a, b: integer): integer; far;
 begin mySub := a - b end;
function myMult(a, b: integer): integer; far;
 begin myMult := a * b end;
function myDiv(a, b: integer): integer; far;
 begin myDiv := a div b end;

const
 nums: array[1 .. 6] of integer =
   (1, 2, 3, 4, 5, 6);
 result = 35;

type
 oper = (opPlus, opMinus, opMult, opDiv);
const
 fs: array[oper] of myFunc =
   (myAdd, mySub, myMult, myDiv);
 ch: array[oper] of char =
   ('+', '-', '*', '/');

function f(a1, a2, a3, a4, a5: oper): integer;
 begin
   f := fs[a5](fs[a4](fs[a3](fs[a2](fs[a1](nums[1], nums[2]), nums[3]), nums[4]), nums[5]), nums[6]);
 end;

var
 s1, s2, s3, s4, s5: oper;
 found: boolean;
begin
 for s1 := opPlus to opDiv do
   for s2 := opPlus to opDiv do
     for s3 := opPlus to opDiv do
       for s4 := opPlus to opDiv do
         for s5 := opPlus to opDiv do
           If f(s1, s2, s3, s4, s5) = result then
             begin
               found := true;
               writeln('was found:');
               writeln('1'+ch[s1]+'2'+ch[s2]+'3'+ch[s3]+'4'+ch[s4]+'5'+ch[s5]+'6');
             end;
 if not found then
   writeln('was not found:')
end.

blink.gif

А над второй подумаю...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.