Перейти к содержанию

Задачи на Pascal/Delphi (РЕШЕНИЕ)


Рекомендуемые сообщения

  • 2 недели спустя...
  • 1 месяц спустя...

Этот хрестоматийный алгоритм существут в тысячах реализаций по всему интернету (есть даже наглядный пример работы), достаточно только погуглить ;)

Алгоритм вкратце:

Цель: найти минимальное оставное дерево (MCT - Minimal Cost Tree) в заданном графе.

Описание: Найти ребро минимального веса, не включенного в дерево. Если оно не образует с ребрами дерева циклов, то включаем; если образует - берем следующее. Всё это в цикле до N-1, где N - количество вершин в графе (догадайтесь почему?). В оригинале для определения циклов вершинам назначались веса.

И тут непочатый край для оптимизаций и улучшений, в зависимости от способа задания графа и конечной цели.

P.S. Есть реализация, правда на C++

Ссылка на комментарий

{средним геометрическим n - чисел называют,
корень - n-степени от произведения всех этих чисел(числа >0)}
uses
crt;
const
max=255;
var
a:array[0..max] of real; {массив ска}
rez,multi:real; {rez - среднее геометрическое,multi - произведения чисел}
i,dim:byte; {i - счетчик,dim - размерность}
begin
{ввод }
write('Enter dimension: ');
readln(dim);
write('Enter ',dim,' elements: ');
for i:=0 to dim-1 do
read(a[i]);
{Вычисление произведения}
multi:=1;
for i:=0 to dim-1 do
multi:=multi*a[i];
{Вычиление корня n - степени
x^y := exp(ln(x)*y);}
rez := exp(ln(multi)*(1 / dim));
writeln('Rez = ',rez:7:3);
readkey;
end.

ВотЪ... B вообще юзайте wikipedia + мозг + TP7 =))

Ссылка на комментарий
  • 3 недели спустя...

ПОмогите пажаоуйста!!репки дам)

Даны положительные действительные числа x, y, z. Проверить,

существует ли треугольник с длинами сторон x, y, z и в случае

положительного ответа определить, является ли он остроуголь-

ным.

Ссылка на комментарий

логически выглядеть будит так:

1. сравниваешь 3 числа x, y, z (то бишь стороны треугольника) между собой.

2. далее проверяешь условие что треугольник существует, т.е. условие:

сумма двух меньших сторон > третьей стороны.

3. если да, то проверяешь условие остроугольности:

сумма квадратов меньших сторон > квадрата большей стороны (помойму так).

если да треугольник - остроугольный

Ссылка на комментарий

1. Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Числа в файле идут в следующем порядке: десять положительных, десять отрицательных, десять положительных, десять отрицательных и т. д. Переписать компоненты файла F в файл G так, чтобы в файле G числа шли в следующем порядке: двадцать положительных, двадцать отрицательных, двадцать положительных, двадцать отрицательных и т. д. (предполагается, что число компонент файла F делится на 40).

2. В файле содержатся рациональные числа, причем рациональное число изображается в виде записи с двумя полями: числитель и знаменатель целого типа. Вычислить наибольшее из данных рациональных чисел. Если их несколько, то выдать номера компонентов всех таких чисел.

3. Дан текстовый файл F. Записать в перевернутом виде строки файла F в файл G. Порядок строк в файле G должен быть обратным по отношению к порядку строк исходного файла.

Ссылка на комментарий
3. Дан текстовый файл F. Записать в перевернутом виде строки файла F в файл G. Порядок строк в файле G должен быть обратным по отношению к порядку строк исходного файла.

Как-то типо того.

uses crt;

var f,g: text;

stt:string;

i:integer;

procedure perew;

var flag:integer;

begin

repeat

if flag=2 then

readln(f,stt);

for i:=length(stt) downto 1 do

begin

write(g,stt);

end;

writeln(g);

flag:=2;

until eof(f)=true;

end;

begin clrscr;

assign(f,'f.txt');

assign(g,'g.txt');

reset(f);

readln(f,stt);

rewrite(g);

perew;

close(g);

readkey;

end.

Если что-то не сходиться напиши, доделаю(топропился мож чё упустил ;) ).

Ссылка на комментарий
логически выглядеть будит так:

1. сравниваешь 3 числа x, y, z (то бишь стороны треугольника) между собой.

2. далее проверяешь условие что треугольник существует, т.е. условие:

сумма двух меньших сторон > третьей стороны.

3. если да, то проверяешь условие остроугольности:

сумма квадратов меньших сторон > квадрата большей стороны (помойму так).

если да треугольник - остроугольный

А КАК БУДЕТ ВЫГЛЯДЕТЬ САМ ТЕКСТ ПРОГРАММЫ???ПЛЗ!!!

Ссылка на комментарий

to тихон

будет выглядеть где-то так

uses crt;

var

x,y,z,a1,a2,a3: real;

Begin

write('x=');

readln(x);

write('y=');

readln(y);

write('z=');

readln(z);

{1}

{a1-men'shaya, a2-srednya, a3-samaya bol'shaya}

if (x>y) then begin

if (x>z) then begin

a3:=x;

if (y>z) then begin

a1:=z; a2:=y; end

else

a1:=y; a2:=z; end

else

a1:=y; a2:=x; a3:=z; end

else

if (y>z) then begin

a3:=y;

if (x>z) then begin

a1:=z;a2:=x; end

else

a1:=x;a2:=z; end

else

a1:=x; a2:=y; a3:=z;

{2}

if (a1+a2)>a3 then

{3}

if (sqr(a1)+sqr(a2)) > sqr(a3) then

writeln('treeugolnik ostrougolnii')

else

writeln('treeugolnik ne ostrougolnii')

else

writeln('treeugolnik ne suschestvuet');

readkey;

End.

З.Ы. не помню прямоугольный треуг-к. - остроугольный или нет(посчитал что нет)

Ссылка на комментарий

Будте добры, помогите пожалуйста вот это сделать

3. Дан текстовый файл F. Удалить один из наиболее часто встречающихся символов текста, результат занести в файл G.

Ссылка на комментарий

Решите плиз задачу методом Оптимизационной информационной модели: *23

При получении школой нового компьютерного класса необходимо оптимально спланировать перевозку 15 компьютеров. Каждый пк упакован в 2 коробки и существует 3 варианта погрузки коробок в автомобиль. 1 Вариант: 3 монитора и 1 сист. блок. 2 Вариант: 2 монитора и 2 сист. блока. 3 Вариант: 1 монитор и 4 сист.блока. Найти количество рейсов в 1-ом, 2-ом и 3-ем варианте.

PS:Дам 2 репы за решение!

PSS: Язык Turbo Pascal

Ссылка на комментарий

то Gastly

условие:

m - монитор

s - системник

a - кол-во 1 рейсов

b - кол-во 2 рейсов

c - кол-во 3 рейсов

a+b+c->min

(3a+2b+c)m=15m

(a+2b+4c)s=15s

a>=0

b>=0

c>=0

также можно задать еще и на максимальное значение для a, b, с :

a<=5

b<=7

c<=3

решу способом перебора(если можно)...

вот:

uses crt;

var

a,b,c:integer;

d,min:integer;

Begin

clrscr;

min:=15;

for a:=0 to 5 do begin

for b:=0 to 7 do begin

for c:= 0 to 3 do begin

if (3*a+2*b+c=15)and(a+2*b+4*c=15) then begin

d:=a+b+c;

if d

min:=d;

writeln('min= ',d,' : a=',a,', b=',b,', c=',c);

end;

end;

end;

end;

readkey;

End.

PS: жду репки :D

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...