М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
bondarsofia
bondarsofia
05.04.2020 03:57 •  Информатика

Переписать программу с java на pascal, , 50 import java.util.*; import java.io.*; public class sol_ik { private final int unit = 1000; private final int discount_per_unit = 500; private final double max_discount = 0.2; private double gettotalcost(long firstcost, long secondcost, long fullunits) { long couponsum = fullunits * discount_per_unit; double secondcostwithdiscount = secondcost - math.min(max_discount * secondcost, couponsum); return firstcost + secondcostwithdiscount; } long[] solveknapsack(long[] weights, long totalweight) { int maxunits = (int) (totalweight / unit + 1); long[] old = new long[maxunits + 1]; arrays.fill(old, totalweight); old[0] = 0; long[] cur = new long[maxunits + 1]; int n = weights.length; for (int pos = 0; pos < n; pos++) { arrays.fill(cur, totalweight); for (int units = 0; units < = maxunits; units++) { cur[units] = math.min(cur[units], old[units]); int add = (int) weights[pos] / unit; if (units - add > = 0) { cur[units] = math.min(cur[units], old[units - add] + weights[pos]); } } system.arraycopy(cur, 0, old, 0, cur.length); } return old; } public double getsolution(long[] costs) { int n = costs.length; long totalcost = 0; for (int i = 0; i < n; i++) { totalcost += costs[i]; } long[] minforunits = solveknapsack(costs, totalcost); double res = totalcost; long maxunits = totalcost / unit + 1; for (int units = 0; units < = maxunits; units++) { double cur = minforunits[units]; res = math.min(res, gettotalcost(minforunits[units], totalcost - minforunits[units], units)); } return res; } public void solve(scanner in, printwriter out) { int n = in.nextint(); long[] costs = new long[n]; for (int i = 0; i < n; i++) { costs[i] = in.nextint(); } out.printf("%.2f%n", getsolution(costs)); } public static void main(string[] args) { scanner in = new scanner(system.in); printwriter out = new printwriter(system.out); new (in, out); out.flush(); } }

👇
Ответ:
Red4521
Red4521
05.04.2020
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программа не работает, обновите версию!

const
  cunit=1000;
  DISCOUNT_PER_UNIT=500;
  MAX_DISCOUNT=0.2;

function getTotalCost(firstCost,secondCost,fullUnits:real):real;
begin
  var couponSum:=fullUnits*DISCOUNT_PER_UNIT;
    var secondCostWithDiscount:=
        secondCost-Min(MAX_DISCOUNT*secondCost,couponSum);
    Result:=firstCost+secondCostWithDiscount
end;

function solveKnapsack(weights:array of integer; totalWeight:integer):
    array of integer;
begin
    var maxUnits:=Trunc(totalWeight/cunit+1);
    var old:=ArrFill(maxUnits+1,totalWeight);
    old[0]:=0;
    var cur:=new integer[maxUnits+1];
    var n:=weights.Length;
    for var pos:=0 to n-1 do begin
        cur.Fill(t->totalWeight);
        for var units:=0 to maxUnits do begin
            cur[units]:=Min(cur[units],old[units]);
            var add:=Trunc(weights[pos]/cunit);
            if units-add >= 0 then
                cur[units]:=Min(cur[units],old[units-add]+weights[pos])
            end;
            cur.CopyTo(old,0);
        end;
    Result:=old;    
end;

function getSolution(costs:array of integer):real;
begin
  var n:=costs.Length;
    var totalCost:=0;
    for var i:=0 to n-1 do totalCost+=costs[i];
    var minForUnits:=solveKnapsack(costs,totalCost);
    Result:=totalCost;
    var maxUnits:=Trunc(totalCost/cunit+1);
    for var units:=0 to maxUnits do begin
      var cur:real:=minForUnits[units];
        Result:=Min(Result,getTotalCost(minForUnits[units],totalCost-cur,units))
      end
end;

begin
  Writeln(getSolution(ReadArrInteger(ReadInteger)):0:2)
end.

Пример
15
1131 2764 1249 3885 4971 2526 1506 1919 520 3094 2183 2503 277 2293 4477
30415.40
4,5(94 оценок)
Ответ:
Ilay64
Ilay64
05.04.2020
Скачай нужный файл.Потом перекинь на папку.
Переписать программу с java на pascal, , 50 import java.util.*; import java.io.*; public class sol_i
4,4(34 оценок)
Открыть все ответы
Ответ:

/*Решение с обобщения формула Брахмагупты для произвольного четырехугольника. Функция perimeter(double x[], double y[]) возвращает значение периметра, функция area(double x[], double y[]) возвращает значение площади, пример использования и реализация приведены ниже. */

#include <iostream>

#include <math.h>

double perimeter(double x[], double y[]);

double area(double x[], double y[]);

int main()

{

   double x[4], y[4];

   std::cout << "Quadrangle ABCD\n";

   for (auto i = 0; i < 4; i++)

   {

       std::cout << "Input coordinates of point " << char(i + 'A') << ": ";

       std::cin >> x[i] >> y[i];

   }

   std::cout << perimeter(x, y) << " " << area(x, y);

   

   return 0;

}

double perimeter(double x[], double y[])

{

   double a[4], p = 0;

   for (auto i = 0; i < 4; i++)

   {

       a[i] = sqrt((x[i]-x[(i + 1) % 4]) * (x[i]-x[(i + 1) % 4]) + (y[i]-y[(i + 1) % 4]) * (y[i]-y[(i + 1) % 4]));

       p += a[i];

   }

   return p;

}

double area(double x[], double y[])

{

   double a[4], p = 0, s = 1, d[2];

   for (auto i = 0; i < 4; i++)

   {

       a[i] = sqrt((x[i]-x[(i + 1) % 4]) * (x[i]-x[(i + 1) % 4]) + (y[i]-y[(i + 1) % 4]) * (y[i]-y[(i + 1) % 4]));

       p += a[i];

   }

   for (auto i = 0; i < 4; i++)

   {

       s *= (p / 2- a[i]);

   }

   for (auto i = 0; i < 2; i++)

   {

       d[i] = sqrt((x[i]-x[i + 2]) * (x[i]-x[i + 2]) + (y[i]-y[i + 2]) * (y[i]-y[i + 2]));

   }

   s -= (a[0] * a[2] + a[1] * a[3] + d[0] * d[1]) * (a[0] * a[2] + a[1] * a[3] - d[0] * d[1]) / 4;

   s = sqrt(s);

   return s;

}

4,4(73 оценок)
Ответ:
alenasen12345
alenasen12345
05.04.2020
Var A,B: array [1..10,1..10] of integer; 
i, j, n: integer;
begin
Randomize;writeln('Введите размерность n');readln(n);writeln('Матрица А');
for i:=1 to n do begin
for j:=1 to n do  begin
A[i,j]:= random(10)+1;write(A[i,j]:3);end;writeln;end;
writeln('Матрица B');
for i:=1 to n do begin
for j:=1 to n do  begin
B[i,j]:= random(10)+2;write(B[i,j]:3);end;writeln;end;
writeln('ответ: матрица AB');
for i:=1 to n do
for j:=1 to n do  begin C[i,j]:=(A[i,j]*B[i,j]);end;writeln;
for i:=1 to n do  begin
for j:=1 to n do  begin
write(C[i,j]:3);end; writeln;end;
writeln('ответ :матрица ВА');
for i:=1 to n do
for j:=1 to n do begin D[i,j]:=(B[i,j]*A[i,j]);end; 
for i:=1 to n do begin
for j:=1 to n do begin
write(D[i,j]:3);end; writeln;end;
end.
4,4(44 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ