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


Ответ
 
Опции темы Опции просмотра
Старый 10.05.2016, 22:57   #11 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я написал ,но у меня почему-то в 3 (ошибка с плавающей запятой),а в 5 упорядочил все и как убрать отрицательные не знаю.
Program ss;
uses Crt;
const n=3; m=13;
var
W:array[1..n,1..m] of integer;
T:array[1..n,1..m] of integer;
i,j,A,B,l,c,r,min,ind,x,q:integer; k,Sg:real;
begin
Clrscr;
randomize;
writeln('#1.');
for i:=1 to n do begin
for j:=1 to m do begin
W[i,j]:=-7+random(18);
write(W[i,j]:4);
end; writeln; end; writeln; writeln('#2');
A:=0;
for i:=1 to n do
for j:=1 to m do begin
A:=A+1;
T[A]:=W[i,j];
write(T[A]:4);
end; writeln ;writeln;
writeln('#3');
for i:=1 to (39 div 3) do
if T[i] mod <>0 then
if T[i]<>0 then begin
k:=k+1*T[i];
l:=l+1;
end;
else B:=1;
if B=0 then begin
Sg:=exp(ln(k)/l);
writeln(Sg:0:2);
end
else writeln ('Ошибка');
writeln;
writeln('#4');
readln(c); r:=A div 3 ;
min:=18;
ind:=2;
for i:=2*r to A do
if (T[i]<0)and(min>abs(c-T[i])) then begin
min:=abs(c-T[i]);
ind:=i;
end;
writeln('bliz chislo ');
writeln;writeln;
write('#5');
for i:=1 to n*m-1 do
for j:=1 to n*m-1 do
if (T[j]>T[j+1]) then begin
q:=T[j];
T[j]:=T[j+1];
T[j+1]:=q;
end;
for i:=1 to n*m do
write(T[i]:4);
readkey;
end.


Посмотрите,если не сложно)
Viktoar1997 вне форума   Ответить с цитированием

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

Участниками форума были созданы аналогичные обсуждения

Двумерный массив. Цветы. Паскаль
Паскаль. Двумерный массив
Паскаль, двумерный массив

Старый 10.05.2016, 23:17   #12 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

2. Преобразовать массив W в одномерный массив T. Полученный массив вывести на экран.
А у Вас и W и Т матрици
Я же Вам написал вариант. Там всё работает.
Евгений вне форума   Ответить с цитированием
Старый 10.05.2016, 23:56   #13 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А почему в 3 всегда целое число получается?
Viktoar1997 вне форума   Ответить с цитированием
Старый 10.05.2016, 23:56   #14 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В онлайн решениях проверяю всегда другое среднегеометрическое получается
Viktoar1997 вне форума   Ответить с цитированием
Старый 10.05.2016, 23:58   #15 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Что такое inc?
Viktoar1997 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.05.2016, 00:03   #16 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

Inc(x) это x:=x+1;
В 3 получается вещественное.

Код:
uses  Crt;
const n=3; m=13;
type  Tmass=array[1..(n*m)] of integer;
      Tmatr=array[1..n,1..m] of integer;
var   W:Tmatr;
      T:Tmass;
      i,j,k,pr,c:integer;
begin
      ClrScr;
       Writeln('Massiv:');
        Writeln;
         Randomize;
       k:=0;
        for i:=1 to n do
         for j:=1 to m do
          begin
            W[i,j]:=Random(18)-7;
            Inc(k);
            T[k]:=W[i,j];
            Write(T[k]:4);
          end;
         Writeln;
          Writeln;
       pr:=1; j:=0;
       for i:=1 to (k div 3) do
        if i mod 2<>0 then
         begin
           Inc(j);
           pr:=pr*Abs(T[i]);
         end;
       Writeln('Srednee geometriceskoe = ',(exp(ln(pr)/j)):3:2);
        Write('Cislo ot 0 do 10 = ');
         Readln(c);
          pr:=100; j:=0;
       for i:=(k div 3) to k do
        if T[i]<0
         then
          if Abs(T[i])=c
           then
            begin
              j:=i;
              Break
            end
           else
            begin
              if Abs(T[i])>c
               then
                if (Abs(T[i])-c)<pr
                 then
                  begin
                    pr:=(Abs(T[i])-c);
                    j:=i;
                  end;
              if Abs(T[i])<c
               then
                if (c-Abs(T[i]))<pr
                 then
                  begin
                    pr:=(c-Abs(T[i]));
                    j:=i;
                  end;
            end;
       Writeln('Blizhayshee = ',T[j]);
      i:=k-1;
       repeat
         if T[i]>0
          then
           begin
             pr:=T[i];
             for j:=i to k-1 do
              T[j]:=T[j+1];
             T[k]:=pr;
             Dec(i);
           end
         else
          Dec(i);
       until i=1;
      for i:=k-1 downto 1 do
       if T[i]>-1
        then
         begin
           pr:=T[i];
           for j:=i to k-1 do
            t[j]:=T[j+1];
           T[k]:=pr;
         end;
      i:=1;
      While T[i]<0 do Inc(i);
       for c:=i to k-1 do
        for j:=i to k-1 do
         if T[j]<T[j+1]
          then
           begin
             pr:=T[j];
             T[j]:=T[j+1];
             T[j+1]:=pr;
           end;
      Writeln;
       Writeln('Sortirovanniy:');
        Writeln;
      for i:=1 to k do
       Write(T[i]:4);
        Writeln;
     ReadKey;
end.
Евгений вне форума   Ответить с цитированием
Старый 11.05.2016, 00:13   #17 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

5 получается,а в 3б например: если должно быть 1.7 , там др число получается
Viktoar1997 вне форума   Ответить с цитированием
Старый 11.05.2016, 00:21   #18 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

У Вас задание:
"Вычислить среднегеометрическое значение нечетных по номеру элементов первой трети массива T."
Из этого следует, что из первой трети массива нужно взять элементы:
T[1], T[3], T[5], T[7], T[9], T[11], T[13], всего их будет 7.

Чтобы найти среднее геометрическое, нужно перемножить все числа и извлечь из них корень. Степень корня определяется количеством чисел.
Евгений вне форума   Ответить с цитированием
Старый 11.05.2016, 16:53   #19 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо, теперь понял )
Viktoar1997 вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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