Результаты исследования в проекте Математические здачи в Delphi: различия между версиями

Материал из Wiki Mininuniver
Перейти к навигацииПерейти к поиску
(Результаты проведённого исследования)
(Авторы и участники проекта)
 
(не показано 17 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
==Авторы и участники проекта==
 
==Авторы и участники проекта==
[[Участник:Александр Гусев]]
+
[[Участник:Торопов Максим]]
 +
 
 +
[[Участник:Сурмин Артём]]
 +
 
 +
[[Участник:Icemist|Участник:Воронов Алексей]]
  
 
==Тема исследования группы==
 
==Тема исследования группы==
Строка 6: Строка 10:
  
 
== Проблемный вопрос (вопрос для исследования)==
 
== Проблемный вопрос (вопрос для исследования)==
Как составить математическую модель задачи?
+
Как на Delphi составить математическую модель задачи?
  
 
== Гипотеза исследования ==
 
== Гипотеза исследования ==
 +
Изучение языка программирования DELPHI поможет более эффективно решать математические задачи.
  
 
==Цели исследования==
 
==Цели исследования==
#Подобрать примеры задач с литературными текстами
+
#Подобрать примеры математических задач
 
#Составить алгоритмы решения задач
 
#Составить алгоритмы решения задач
 
#Составить программу на языке Delphi
 
#Составить программу на языке Delphi
Строка 17: Строка 22:
  
 
==Результаты проведённого исследования==
 
==Результаты проведённого исследования==
Рассмотрим использование языка Delphi для решения математических задач на примере:
 
Постановка задачи
 
В Нижнем Новгороде достаточно разветвленная трамвайная сеть. По некоторым улицам ходят трамваи более чем десяти маршрутов. Понятно, что от такой нагрузки рельсы быстро изнашиваются. Около остановок пути вообще иногда имеют волнообразный вид.
 
Если трамвай разгоняется до большой скорости, скажем, до 80 км/ч, а потом резко тормозит перед остановкой, то он проезжает некоторый участок юзом. Это приводит не только к порче рельсов, но и к стиранию колес в месте их соприкасания с рельсами. На колесах появляются плоские участки — так называемые ползуны. Их наличие приводит к стуку колес, дребезжанию вагона и еще большей порче рельсов.
 
Руководство трамвайного депо решило улучшить ситуацию и провести техобслуживание всех трамваев с ползунами на колесах. Для того чтобы ликвидировать ползуны, колесные пары обтачивают на специальном станке. Колеса одной пары при этом уменьшаются до одного размера, но разные пары могут уменьшиться по-разному. Чтобы оснастить колесами один вагон, ремонтники должны выбрать четыре колесные пары (именно столько их у вагона) с одинаковым диаметром.
 
Ремонтники закончили обточку всех колес. Некоторые из них уменьшились настолько, что стали непригодны для использования. Такие колеса идут на металлолом. Вместо них можно воспользоваться запасом колесных пар, оставшихся от списанных вагонов. Ремонтники измерили все колесные пары, которые можно устанавливать на вагоны, и теперь хотят понять, на сколько вагонов их хватит.
 
  
 +
Решаем уравнение с помощью Delphi. Рассмотрим на примере:
  
== Исходные данные ==
+
procedure TForm1.Button1Click(Sender: TObject);
  
 +
var
  
В первой строке записано целое число n — количество имеющихся колесных пар (1 ≤ n ≤ 150). В следующих n строках записаны диаметры колес в миллиметрах (целые числа от 600 до 700).
+
    a,b,c:real;                                                // коэффициенты уравнения
 +
    d:real;                                                    // дискриминант
 +
    x1,x2:real;                                                // корни уравнения
 +
    code:integer;                                              // для преобразования текста в число
 +
    st1,st2:string[10];
  
 +
begin // ввод исходных данных из полей редактирования
  
== Результат ==
+
    val(Edit1.text,a,code);                                    // преобразование текста в число
 +
    val(Edit2.text,b,code);
 +
    val(Edit3.text,c,code);
 +
    if a=0
 +
    then Label1.caption:='Коэффициенты при второй степени'+chr(13)+'неизвестного равен нулю!'
 +
    else
 +
    begin                                            // решение уравнения
 +
    d:=b*b-4*a*c;
 +
    if d<0
 +
    then Label1.caption:='Дискриминант < 0' +chr(13)+'Уравнение не имеет корней'
 +
    else
 +
    begin
 +
    x1:=(-b+sqrt(d))/(2*a);
 +
    x2:=(-b-sqrt(d))/(2*a);
 +
    str(x1:10:5,st1);          // в переменные str1, str2 помещаются
 +
    str(x2:10:5,st2);          // строковые изображения корней
 +
    Label1.Caption:='Корни уравнения:'+ chr(13)+'x1='+st1+ chr(13)+'x2='+st2;
 +
    end;
 +
    end;
  
 +
end; end.
  
Выведите количество вагонов, которое удастся оснастить колесными парами из имеющегося набора.
+
[[Изображение:Безымянный568.bmp]]
  
Решение
+
==Вывод==
 
 
program Sample2;
 
 
 
{$APPTYPE CONSOLE}
 
 
 
uses
 
  SysUtils;
 
 
 
var
 
  i, n, count, p: integer;
 
  a: array[0..153] of integer;
 
 
 
function check: boolean;
 
begin
 
  if (a[p]=a[p+1]) and (a[p+1]=a[p+2]) and (a[p+2]=a[p+3]) then
 
    Result:=true else Result:=false;
 
end;
 
 
 
procedure delit;
 
var
 
  j:integer;
 
  t:integer;
 
begin
 
  j:=1;
 
  t:=a[p];
 
  while (j<=4) and (a[p]=t) do
 
  begin
 
    inc(j);
 
    inc(p);
 
  end;
 
end;
 
 
 
procedure Sort(N: Integer);
 
var
 
  h: Variant;
 
  c: Boolean;
 
  g: Integer;
 
  i: Integer;
 
  j: Integer;
 
  tmp: Integer;
 
begin
 
  h:=1;
 
  g:=0;
 
  repeat
 
    h:=3*h+1
 
  until (h>=n);
 
  
  if (h>n) then
+
1)Проанализированы методы решения задач в Delphi и привён пример решения задачи.
  begin
 
    h:= h/3;
 
    g:=h;
 
  end;
 
  
  n:=n-1;
+
2)В них реализованы такие методы,как:
  
  repeat
+
-решение задач при помощи программ;
    i:=g;
 
    repeat
 
      j:=i-g;
 
      c:=True;
 
      repeat
 
        if a[j]<=a[j+g] then
 
          c:=False
 
        else
 
        begin
 
          Tmp:=a[j];
 
          a[j]:=a[j+g];
 
          a[j+g]:=Tmp;
 
        end;
 
        j:=j-1
 
      until not((j>=0)and(C));
 
      i:=i+1
 
    until not(i<=n);
 
    h:=g;
 
    h:=h/3;
 
    g:=h;
 
  until not(g>0);
 
end;
 
  
begin
+
-ввод функций;
  assign(input, 'input.txt');
 
  reset(input);
 
  assign(output, 'output.txt');
 
  rewrite(output);
 
  
  Readln(n);
+
-вывод результатов на экран.
  
  for i:=1 to n do
+
3)Использование языка Delphi является оправданным в решении математической модели, потому что модель представляется наглядно.
    Readln(a[i]);
 
  Sort(n);
 
  count:=0;
 
  p:=1;
 
  while n-p>0 do
 
  begin
 
    if check then inc(count);
 
    delit;
 
  end;
 
 
 
  writeln(count);
 
 
 
  close(input);
 
  close(output);
 
end.
 
 
 
==Вывод==
 
  
 
==Полезные ресурсы==
 
==Полезные ресурсы==

Текущая версия на 16:31, 29 октября 2013

Авторы и участники проекта

Участник:Торопов Максим

Участник:Сурмин Артём

Участник:Воронов Алексей

Тема исследования группы

Учебный проект Математические задачи в Delphi

Проблемный вопрос (вопрос для исследования)

Как на Delphi составить математическую модель задачи?

Гипотеза исследования

Изучение языка программирования DELPHI поможет более эффективно решать математические задачи.

Цели исследования

  1. Подобрать примеры математических задач
  2. Составить алгоритмы решения задач
  3. Составить программу на языке Delphi
  4. Выполнить анализ результата

Результаты проведённого исследования

Решаем уравнение с помощью Delphi. Рассмотрим на примере:

procedure TForm1.Button1Click(Sender: TObject);

var
   a,b,c:real;                                                // коэффициенты уравнения
   d:real;                                                    // дискриминант
   x1,x2:real;                                                // корни уравнения
   code:integer;                                              // для преобразования текста в число
   st1,st2:string[10];

begin // ввод исходных данных из полей редактирования

   val(Edit1.text,a,code);                                    // преобразование текста в число
   val(Edit2.text,b,code);
   val(Edit3.text,c,code);
   if a=0
   then Label1.caption:='Коэффициенты при второй степени'+chr(13)+'неизвестного равен нулю!'
   else
   begin                                            // решение уравнения
   d:=b*b-4*a*c;
   if d<0
   then Label1.caption:='Дискриминант < 0' +chr(13)+'Уравнение не имеет корней'
   else
   begin
   x1:=(-b+sqrt(d))/(2*a);
   x2:=(-b-sqrt(d))/(2*a);
   str(x1:10:5,st1);           // в переменные str1, str2 помещаются
   str(x2:10:5,st2);           // строковые изображения корней
   Label1.Caption:='Корни уравнения:'+ chr(13)+'x1='+st1+ chr(13)+'x2='+st2;
   end;
   end;

end; end.

Ошибка создания миниатюры: Данный тип изображения не поддерживается

Вывод

1)Проанализированы методы решения задач в Delphi и привён пример решения задачи.

2)В них реализованы такие методы,как:

-решение задач при помощи программ;

-ввод функций;

-вывод результатов на экран.

3)Использование языка Delphi является оправданным в решении математической модели, потому что модель представляется наглядно.

Полезные ресурсы

Другие документы