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


Ответ
 
Опции темы Опции просмотра
Старый 12.12.2012, 17:26   #11 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

в прочем до этого что то понимал а сейчас это для меня магия((
vitjok вне форума   Ответить с цитированием

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

В темах которые наши участники создавали ранее можно найти полезные советы

Задачка с функциями файловой системы ввода-вывода
Написать программу в Pascal с процедурами и функциями
Помогите пожалуйста!
Пожалуйста помогите

Старый 12.12.2012, 17:33   #12 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
в прочем до этого что то понимал а сейчас это для меня магия((
Магия - это прекрасно. Даже обворожительно!
Vladimir_S вне форума   Ответить с цитированием
Старый 12.12.2012, 17:43   #13 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ну так то да))на эту специальность пошел под предолгом работы с железом а не кодить))приходится учить то что не знаю)самое непонятное в этом задание для меня "среднее арифметическое значение элементов вектора vectorn, находящихся между вторыми по значению максимальным и минимальным его элементами" в этом и вся суть этой программы))
vitjok вне форума   Ответить с цитированием
Старый 12.12.2012, 20:11   #14 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
ну так то да))на эту специальность пошел под предолгом работы с железом а не кодить))приходится учить то что не знаю)самое непонятное в этом задание для меня "среднее арифметическое значение элементов вектора vectorn, находящихся между вторыми по значению максимальным и минимальным его элементами" в этом и вся суть этой программы))
Ладно, вот Вам Ваша программа. Но еще раз настоятельно советую установить на компьютер какой-никакой Паскаль транслятор и отлаживать программу в нём. Иначе точно толку не будет. Потому что в Вашей программе не просто есть ошибки, а там их море. Идентификаторы перепутаны, то vec, то vector, то Vmin, то V_min, знаки неравенств расставлены кое-как с потолка и вообще. Нет, еще и еще раз: Так. Дело. Не. Пойдёт.

Код:
const
 n=10;
Type
 Tvect=array [1..n] of integer;
var
 V_max,V_min,i:integer;
 vector:Tvect;
 b:boolean;
 arifmet:real;

Procedure Arif(nn:integer; AA:Tvect;var arifm:real; var ar_b:boolean);
var
 i,min1,min2,max1,n,max2:integer;
 Sum:real;
begin
 max1:=AA[1];
 for i:=2 to nn do
  if (AA[i]>max1) then max1:=AA[i];
 Writeln('Max1 = ', max1);
 min1:=AA[1];
 for i:=2 to nn do
  if (AA[i]<min1) then min1:=AA[i];
 Writeln('Min1 = ', min1);
 max2:=min1;
 for i:=1 to nn do
  if (AA[i]>max2) and (AA[i]<max1) then max2:=AA[i];
 Writeln('Max2 = ', max2);
 min2:=max1;
 for i:=1 to nn do
  if (AA[i]<min2) and (AA[i]>min1) then min2:=AA[i];
 Writeln('Min2 = ', min2);
 Writeln;
 n:=0;
 Sum:=0;
 for i:=1 to nn do
  if (AA[i]>min2) and (AA[i]<max2) then
   begin
    Inc(n);
    Sum:=Sum+AA[i];
   end;
 if n=0 then
  begin
   arifm:=0;
   ar_b:=false;
  end
 else
  begin
   arifm:=Sum/n;
   ar_b:=true;
  end;
end;

Begin
 Randomize;
 Writeln('Diapazon slych chisel:');
 Write('V_min= ');
 readln(V_min);
 Write('V_max= ');
 readln(V_max);
 For i:=1 to n do
  begin
   vector[i]:=Random(V_max-V_min + 1) + V_min;
   write(vector[i],' ');
  end;
 Writeln;
 Writeln;
 Arif(n,vector,arifmet,b);
 If b then
  Writeln('Sred. arifm. = ',arifmet:0:3)
 else
  Writeln('Takih elementov net!');
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 12.12.2012, 20:14   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
приходится учить то что не знаю
Увы - такова судьба любого студента. И школьника. Ничего не поделаешь...
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.12.2012, 03:30   #16 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Код:
                         Program vitjok;
uses crt;
const n=10;
Type Tvect=array [1..n] of integer;
var arifmet,Vmax,Vmin,i:integer;
    vec:Tvect;
Function Arif(nn:integer; AA:Tvect):real;
   var i,i1,i2,min1,min2,max1,max2:integer;
   n:real;
 begin

   max1:=AA[1];
   min1:=AA[1];
   
   for i:=2 to nn do
   begin
    if (AA[i]<=max1)
     then
      max1:=AA[i];

    if (AA[i]>=min1)
     then
      min1:=AA[i];
      
      end;
      
       max2:=AA[1];
   min2:=AA[1];
   i1:=1;
   i2:=1;
   
      for i:=1 to nn do
   begin
    if (AA[i]<=max2) and (aa[i]<>max1)
     then
     begin
      max2:=AA[i];
      i1:=i;
      end;
    if (AA[i]>=min2) and (aa[i]<>min1)
     then
     begin
      min2:=AA[i];
      i2:=i;
      end;
      end;
      
      writeln(min2,' ',i2,'  ',max2,' ',i1);
      if i1>i2 then
      begin
      i:=i1;
      i1:=i2;
      i2:=i;
      end;
      if (i2-i1)>1
      then
      begin
      For i:=i1+1 to i2-1 do
      n:=n+AA[i];
      n:=n/(i2-i1-1);
      writeln(n);
      end
      else
      writeln('net chisel');

end;
begin
 Randomize;
 Writeln('Diapozon slych chisel');
 Write('Vmin=');
 readln(Vmin);
 Write('Vmax=');
 readln(Vmax);

 For i:=1 To n Do
    vec[i]:=Random(vmax-vmin + 1) + vmin;
Writeln;

 WriteLn;
  WriteLn('ishodn vectr:');
  For i:=1 To n Do
    Write(vec[i]:4);
  WriteLn;
  arif(n,vec);
  end.
вот мой код, в моей было просто все неправильно, тк у меня состояла проблема в том как вычеслить среднее арифметическое(

Последний раз редактировалось vitjok; 13.12.2012 в 03:36
vitjok вне форума   Ответить с цитированием
Старый 20.12.2012, 10:19   #17 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

здравствуйте Владимир, написал програму ко 2-му заданию, в разный версиях паскаль работает по разному, точнее в строке 60 и 123 выдает ошибку выход за границы диапазона((
Код:
program hj;
uses crt;
const
 n=10;
Type
 Tvect=array [1..n] of integer;
var
 V_max,V_min,i, j, n_min1, n_min2, temp :integer;
 vector:Tvect;
 b:boolean;
 arifmet:real;
 min1, min2, arifm, shift :real;

Procedure Arif(nn:integer; AA:Tvect; var arifm:real; var ar_b:boolean);
var
 i,min1,min2,max1,n,max2:integer;
 Sum:real;
begin
 n:=0;
 Sum:=0;
 for i:=1 to nn do
   begin
    Inc(n);
    Sum:=Sum+AA[i];
   end;
 if n=0 then
  begin
   arifm:=0;
   b:=false;
  end
 else
  begin
   arifm:=Sum/n;
   b:=true;
  end;
end;
begin
min1:=abs(vector[1] - arifmet);
 n_min1:=1;
 For i:=2 to n do
  begin
    shift:=abs(vector[i] - arifmet);
    if (shift < min1)
      then
        begin
          min2:=min1;
          n_min2:=n_min1;
          min1:=shift;
          n_min1:=i;
        end;
  end;
 For i:=1 to n do
   begin
     if ((vector[i] > min1) AND (vector[i] < min2))
       then
         min2:=vector[i];
   end;
              if (n_min1=(n_min2+1)) or (n_min1=(n_min2-1))
                then
                 writeln('there are no values between ', vector[n_min1] , ' AND', vector[n_min2] ,' to sort!' )
                else
                begin
                  begin
                    if n_min1>n_min2
                      then
                        begin
                        for i:=(n_min1-1) downto (n_min2+2) do
                          for j:=(n_min2+1) to (i-1) do
                            if vector[j]>vector[j+1]
                              then
                                begin
                                  temp:=vector[j];
                                  vector[j]:=vector[j+1];
                                  vector[j+1]:=temp;
                                end;
                        end;
                    if n_min1<n_min2
                      then
                        for i:=(n_min2-1) downto (n_min1+2) do
                          for j:=(n_min1+1) to (i-1) do
                            if vector[j]>vector[j+1]
                              then
                                begin
                                  temp:=vector[j];
                                  vector[j]:=vector[j+1];
                                  vector[j+1]:=temp;
                                end;
                  end;
                  end;


Begin
 Randomize;
 Writeln('Diapazon slych chisel:');
 Write('V_min= ');
 readln(V_min);
 Write('V_max= ');
 readln(V_max);
 writeln('______________________________');
 writeln;
 For i:=1 to n do
  begin
   vector[i]:=Random(V_max-V_min + 1) + V_min;
   write(vector[i],' ');
  end;
 writeln;
 writeln('______________________________');
 Writeln;
 Arif(n,vector,arifmet,b);
  writeln('Sred. arifm = ', arifmet);
 writeln('Sorting between: ',  vector[n_min1], ' AND ', vector[n_min2]);
 writeln;
 writeln('______________________________');
 writeln;
 For i:=1 to n do
  begin
   write(vector[i]:3);
  end;
 writeln;
 writeln('______________________________');
 end;
  end.
vitjok вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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