Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите срочно написать на завтра программу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NESC
Даны действительные числа a1, a2 ... a16 . Найти максимальную сумму из (a1+a16; a2+a15; a8+a9) и минимальное произведение из (a1*a9; a2*a10; a3*a9; ... a8*a16) Smax и Pmin Вывести на память.

Очень прошу!помогите!!не успею до завтра,а это всё таки лаба((( norespect.gif
Айра
Для начала отредактируй название темы..
Покажи, что делал? Что именно непонятно?

Цитата
Вывести на память.

Может на печать?
NESC
скорее всего,просто ошиблась когда распечатывала,так,я кажется стал вникать в задачу,сори что беспокоил give_rose.gif
NESC
Uses CRT;

Const n=16;

Var

a:array[1..n] of Integer;
b:array[1..n] of Integer;
i, j,s1,s2,s3,p:Integer;

Begin
Clrscr;
Randomize;
Writeln('Vvedem possledovatelnost chisel');

For i:=1 to n do
Begin
a[i]:= random(50);
Writeln(a[i]);
Writeln;
End;
s1:=a[1]+a[16];
s2:=a[2]+a[15];
s3:=a[8]+a[9];
if s1>s2 then
if s1>s3 then writeln('max summa=',s1)
else writeln('max summa=',s3)
else if s2>s3 then writeln('max summa=',s2);
i:=0;
j:=9;
repeat
i:=i+1;
if i mod 2 = 0 then j:=j+1;
begin
b[i]:=a[i]*a[j];
end;
until (i>=n);
i:=1;

p:=b[1];
for j:= 2 to 50 do
if b[j]<p then begin
p:=b[j];
i:=j
end;
writeln('min proizvedenie=',p);
Readln;
End.


скажите плз,где ошибка,он мне всегда выводит одно и тоже число при выводе минимального произведения,выдаёт всегда -10319 blink.gif
Michael_Rybak
М
1. Заголовок темы должен быть информативным. Переименуй, пожалуйста.
2. Используем тег CODE.



По программе.

Во-первых, у тебя в цикле repeat-until последнее значение j равно 17, а массив заполняется только до 16.

Во-вторых, последний цикл у тебя от 2 до 50, а нужно от 2 до n.
Айра
А сумма точно трех пар нужна, не последовательности?

А как тебе такой вариант нахождения произведения:

pmin:=10000;
for i:=1 to (n div 2) do
begin
t:=a[i]*a[(n div 2)+i];
if t<pmin then pmin:=t;
end;
Michael_Rybak
Цитата
for i:=1 to ((n div 2) + (n mod 2)) do

верхняя граница разве не n?
Айра
Так, что-то я похоже не то сделала:
(a1*a9; a2*a10; a3*a9; ... a8*a16)
Это как тогда выглядит последовательность? или здесь не 9, а 11?

Если 11, тогда верхняя граница (n div 2), ((n mod 2) тогда даже не нужен)..
Michael_Rybak
по-моему так: 1*9, 2*10, 3*10, 4*11, 5*11, 6*12 ...
Айра
...у автора по-другому: 1*9,2*10,3*9...8*16
..буду ждать его разъяснения..
NESC
Итак,там только 3 суммы,задание я написал идентично с оригиналом,а в последовательности с умножением,там будет так:при нечётном первом а(а1 а3 а5...) 2 множитель всегда а9,а когда 1 множитель чётный то в номере будет шаг 2(а10 а12 а14 а16) лаба была сегодня,и на ней я сделал этот вариант,всё вышло,проблема лишь возникла в блок схеме для этой программы,и поэтому препод даже не посмотрела программу.Спасибо огромное нашему модератору,он вовремя подсказал,там осталось чуток подправить и она заработала good.gif
Вот код:

Код
Uses CRT;

Const n=16;

Var

a:array[1..n] of Integer;
b:array[1..n] of Integer;
i, j,s1,s2,s3,p,x,x1:Integer;



Begin
  Clrscr;
  Randomize;
  Writeln('Vvedem possledovatelnost chisel');

  For i:=1 to n do
   Begin
    a[i]:= random(20);
    Writeln(a[i]);
    Writeln;
   End;
   s1:=a[1]+a[16];
   s2:=a[2]+a[15];
   s3:=a[8]+a[9];
   if s1>s2 then
    if  s1>s3 then writeln('max summa=',s1)
    else writeln('max summa=',s3)
   else if s2>s3 then writeln('max summa=',s2)
   else writeln('max summa=',s3);
   i:=0;
   j:=9;
  { repeat


{for j:=9 to 16 do begin   }

  { i:=i+1;
   if i mod 2 = 0 then j:=j+1;
   begin
   b[i]:=a[i]*a[j];
   end;

   until (i>=n);}
   x1:=999;
   for j:=0 to 7 do begin
   j:=j+1;
   for i:=9 to n do begin
   i:=i+1;
   x:=a[j]*a[i];
      write(' ',x);
   if x1>x then x1:=x
   else
   end;end;

   writeln(' min proizvedenie=',x1);
  {
   i:=1;

   p:=b[1];
   for j:= 2 to n do
   if b[j]<p then begin
   p:=b[j];
   i:=j
   end;
   writeln('min proizvedenie=',p);}
  Readln;
End.





klem4
модер тебе еще замечание сделал, которое ты проигнорировал, если в течении 10 минут не переименуешь тему, она будет закрыта.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.