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


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

1. Сформировать двумерный целочисленный массив W(3*13) используя генератор случайных чисел на интервале (-7,10).
2. Преобразовать массив W в одномерный массив T. Полученный массив вывести на экран.
3. Вычислить среднегеометрическое значение нечетных по номеру элементов первой трети массива T.
4. Определить значение, по модулю самое близкое к заданному числу С среди отрицательных элементов второй трети массива T.
5. Упорядочить положительные элементы массива T по убыванию противоположных значений.
Viktoar1997 вне форума   Ответить с цитированием

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

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

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

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

Динамическое в простое переделайте сами.
Код:
uses  Crt;
const n=3; m=13;
type  Tmass=array[1..40] of integer;
      Pmass=^Tmass;
      Pmatr=array[1..40] of Pmass;
var   W:Pmatr;
      T:Pmass;
      i,j,k,pr,c:integer;
begin
      ClrScr;
       for i:=1 to n do
        GetMem(W[i],m*SizeOf(integer));
         GetMem(T,(n*m)*SizeOf(integer));
          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;
       for i:=1 to n do
        FreeMem(W[i],m*SizeOf(integer));
       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]);
      FreeMem(T,(n*m)*SizeOf(integer));
     ReadKey;
end.
Евгений вне форума   Ответить с цитированием
Старый 07.05.2016, 21:47   #3 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Как -то не понятно, как Вы нашли среднегеометрическое.
и 5 нет

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

5. Не совсем понятно, что значит "по убыванию противоположных значений".

Среднее геометрическое:
Миниатюры
741.jpg  
Евгений вне форума   Ответить с цитированием
Старый 07.05.2016, 22:03   #5 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

должно получится так же?

exp(1/n*ln(xn)) или как ?
Viktoar1997 вне форума   Ответить с цитированием
Ads

Яндекс

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

У меня 1,2,4 получилось, а 3 и 5 не получается
Viktoar1997 вне форума   Ответить с цитированием
Старый 07.05.2016, 22:07   #7 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

exp(1/n*ln(xn))=exp(ln(xn)/n)
Евгений вне форума   Ответить с цитированием
Старый 07.05.2016, 22:09   #8 (permalink)
Viktoar1997
Member
 
Регистрация: 07.05.2016
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

За формулу спасибо)
не подскажите как n и xn написать?
Viktoar1997 вне форума   Ответить с цитированием
Старый 07.05.2016, 22:52   #10 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

С сортировкой получилось так:
Код:
uses  Crt;
const n=3; m=13;
type  Tmass=array[1..40] of integer;
      Pmass=^Tmass;
      Pmatr=array[1..40] of Pmass;
var   W:Pmatr;
      T:Pmass;
      i,j,k,pr,c:integer;
begin
      ClrScr;
       for i:=1 to n do
        GetMem(W[i],m*SizeOf(integer));
         GetMem(T,(n*m)*SizeOf(integer));
          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;
       for i:=1 to n do
        FreeMem(W[i],m*SizeOf(integer));
       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:=2;
       repeat
         if T^[i]<0
          then
           begin
             pr:=T^[i];
             for j:=i downto 2 do
              begin
                T^[j]:=T^[j-1];
                T^[1]:=pr;
              end
           end
         else
          Inc(i);
       until i>k;
      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;
      FreeMem(T,(n*m)*SizeOf(integer));
     ReadKey;
end.
Евгений вне форума   Ответить с цитированием
Ads

Яндекс

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

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

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

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




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

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