Помощь - Поиск - Пользователи - Календарь
Полная версия: Расчет мощности и усилия подачи при сверлении древесины
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
PL8Priest
Рассчитать таблицы зависимостей силы резания, мощности и усилия подачи по оси центрового сверла при сверлении дуба, березы, сосны, пользуясь следующими зависимостями:

c=(1000*V)/(z*n)

где c - подача на оборот, мм;
z - число режущих кромок;
V - скорость подачи, м/мин;
n - скорость вращения сверла, об/мин;

P=(K*d*c)/2

где P - сила резания при сверлении, кГ;
D - диаметр сверла, мм;
K - удельная работа резания при сверлении, кГ/мм2.

Величина K вычисляется по выражениям, приведенным в табл. 2.

Vmax=(PI*D*n)/(60*(10*10*10))

где Vmax - максимальная скорость резания, м/с.

N=P*(Vmax/102)

где N - мощность резания, кВт.

Q=(0.25+0.07*D)*P

где Q - усилие подачи на оси сверла, кГ.

Таблица 2
Нажмите для просмотра прикрепленного файла

Найти зависимости силы резания, мощности и усилия подачи по оси сверла от независимых величин D, n и V.

Исходные данные
Нажмите для просмотра прикрепленного файла
IUnknown
Что здесь непонятного? Все формулы же есть, осталось просто запрограммировать.

Не знаешь, как сделать таблицу 2? Я бы делал вот так:
type
trees = (t_s, t_b, t_d); { сосна, береза и дуб }
pair = record f, s : real end;

const
table_2 : array[1 .. 5, trees] of pair =
(
((f:15.6; s:6.24), (f:27.00; s:10.5), (f:37.5; s:15.00)), { 5mm }
((f: 4.2; s:1.68), (f: 7.10; s:2.85), (f:10.5; s: 4.00)), { 10mm }
((f: 2.0; s:0.80), (f: 3.40; s:1.28), (f: 4.8; s: 1.72)), { 15mm }
((f: 1.4; s:0.56), (f: 2.33; s:0.95), (f: 3.4; s: 1.30)), { 20mm }
((f: 1.0; s:0.40), (f: 1.70; s:0.68), (f: 2.4; s: 0.96)) { 25mm }
);

function K (Diam : integer; T : trees; C : real) : real;
begin
with table_2[Diam div 5, T] do
K := f + s / C;
end;
, теперь останется только вызвать функцию K, передав ей диаметр, материал и величину С, получишь соответствующее значение из таблицы. В общем, что именно не получается - говори.
PL8Priest
Сделал так


program test;
uses crt;
var i:integer;
k,d,n,v,p,c,Vmax,q,Nk:array [1..3] of real;
z:array [1..3] of integer;
rez:TEXT;
begin;
z[1]:=2;
write ('Введите число режущих кромок для березы ');
readln (z[2]);
write ('Введите число режущих кромок для дуба ');
readln (z[3]);
d[1]:=15;
d[2]:=20;
d[3]:=25;
n[1]:=2900;
n[2]:=3000;
n[3]:=3500;
v[1]:=0.5;
v[2]:=0.8;
v[3]:=1;
for i:=1 to 3 do
begin
c[i]:=(1000*v[i])/(z[i]*n[i]);
end;
k[1]:=2+(0.8/c[1]);
k[2]:=2.33+(0.95/c[2]);
k[3]:=2.4+(0.96/c[3]);
assign (rez, 'rezult.txt');
rewrite (rez);
for i:=1 to 3 do
begin
p[i]:=(k[i]*d[i]*c[i])/2;
Vmax[i]:=(pi*d[i]*n[i])/(60*10*10*10);
Nk[i]:=p[i]*(Vmax[i]/102);
q[i]:=(0.25+0.07*d[i])*p[i];
writeln (rez, '| ',p[i]1.gif3, ' | ', Nk[i]1.gif3,' | ',q[i]3.gif1);
end;
close (rez);
writeln ('Результаты сохранены в файл rezylt.txt');
readkey;
end.


Вот теперь думаю какбы исходный данные из программы убрать, и чтоб из файла они брались...

P.S.
чтото предпоследний writeln неправильно показывается, там writeln (rez, '| ',p[i]: 1 : 3, ' | ', Nk[i]: 1 : 3,' | ',q[i]: 1 : 3);
Гость

Program t2;
uses crt;
type
trees = (sosna, bereza, dyb); { sosna, ber, dyb }
pair=record f,s: real end;
const
table_2:array[1..5, trees] of pair =
(
((f:15.6; s:6.24), (f:27.00; s:10.5), (f:37.5; s:15.00)), { 5mm }
((f: 4.2; s:1.68), (f: 7.10; s:2.85), (f:10.5; s: 4.00)), { 10mm }
((f: 2.0; s:0.80), (f: 3.40; s:1.28), (f: 4.8; s: 1.72)), { 15mm }
((f: 1.4; s:0.56), (f: 2.33; s:0.95), (f: 3.4; s: 1.30)), { 20mm }
((f: 1.0; s:0.40), (f: 1.70; s:0.68), (f: 2.4; s: 0.96))); { 25mm }

var tip:array [1..3] of string;
d,z:array [1..3] of integer;
n,v,c,p,KK,q,Vmax,NN:array [1..3] of real;
i:integer;

function K (Diam:integer;T:trees;C:real):real;
begin
with table_2[Diam div 5, T] do
K:=f+s/C;
end;
Begin
clrscr;
tip[1]:='sosna';
tip[2]:='bereza';
tip[3]:='dyb';
for i:=1 to 3 do
begin
write ('vvedite z dlya ', tip[i]);
readln (z[i]);
write ('vvedite D dly ', tip[i]);
readln (d[i]);
write ('vvidite n dlya ', tip[i]);
readln (n[i]);
write ('vvedite V dlya ', tip[i]);
readln (v[i]);
c[i]:=(1000*v[i])/(z[i]*n[i]);
KK[i]:=K(d[i], tip[i], c[i]);
p[i]:=(KK[i]*d[i]*c[i])/2;
Vmax[i]:=(pi*d[i]*n[i])/(60*10*10*10);
NK[i]:=p[i]*(Vmax[i]/102);
q[i]:=(0.25+0.07*d[i])*p[i];
end;
for i:=1 to 3 do
begin
writeln (' |', tip[i], ' | ', p[i]1.gif3, ' | ', NK[i]1.gif3, ' | ', q[i]3.gif1, ' |');
end.
readkey;
end.



Выдаёт ошибку Error 26: Type mismatch когда пытаюсь функции К передать значение тип дерева
PL8Priest
уже сам разобрался, вроде так
Program t2;
uses crt;
type
trees = (sosna, bereza, dyb); { sosna, ber, dyb }
pair=record f,s: real end;

const
table_2:array[1..5, trees] of pair =
(
((f:15.6; s:6.24), (f:27.00; s:10.5), (f:37.5; s:15.00)), { 5mm }
((f: 4.2; s:1.68), (f: 7.10; s:2.85), (f:10.5; s: 4.00)), { 10mm }
((f: 2.0; s:0.80), (f: 3.40; s:1.28), (f: 4.8; s: 1.72)), { 15mm }
((f: 1.4; s:0.56), (f: 2.33; s:0.95), (f: 3.4; s: 1.30)), { 20mm }
((f: 1.0; s:0.40), (f: 1.70; s:0.68), (f: 2.4; s: 0.96))); { 25mm }

var tip:array [1..3] of string;
d,z:array [1..3] of integer;
n,v,c,p,KK,q,Vmax,NK:array [1..3] of real;
i:integer;
isx,rez:text;

function K (Diam:integer;T:Trees;C:real):real;
begin
with table_2[Diam div 5, T] do
K:=f+s/C;
end;

Begin
clrscr;
tip[1]:='sosna';
tip[2]:='bereza';
tip[3]:='dyb';
for i:=1 to 3 do
begin
write ('vvedite z dlya ', tip[i], ' ');
readln (z[i]);
write ('vvedite D dly ', tip[i], ' ');
readln (d[i]);
write ('vvidite n dlya ', tip[i], ' ');
readln (n[i]);
write ('vvedite V dlya ', tip[i], ' ');
readln (v[i]);
c[i]:=(1000*v[i])/(z[i]*n[i]);
KK[i]:=K(d[i], trees(i), c[i]);
p[i]:=(KK[i]*d[i]*c[i])/2;
Vmax[i]:=(pi*d[i]*n[i])/(60*10*10*10);
NK[i]:=p[i]*(Vmax[i]/102);
q[i]:=(0.25+0.07*d[i])*p[i];
end;
writeln ('| Tip der | Sila rezaniya, Kg| Moshnost rezaniya, kBt| Ysilie pod rezaniya, kg ');
writeln ('-------------------------------------------------------------------------------');
for i:=1 to 3 do
begin
writeln ('| ', tip[i],' ':2, ' | ', p[i]1.gif3, ' | ', NK[i]1.gif3, ' | ', q[i]3.gif1, ' |');
end;
writeln ('-------------------------------------------------------------------------------');
readkey;
end.
PL8Priest
как бы сделать чтобы вначале, у пользователя спрашивали использовать текущий файл с исходными данными или создать новый?
PL8Priest
и ещё тут почему то при чтение данных из файла, ошибка

Program t2;
uses crt;
type
trees = (sosna, bereza, dyb); { sosna, ber, dyb }
pair=record f,s: real end;

const
table_2:array[1..5, trees] of pair =
(
((f:15.6; s:6.24), (f:27.00; s:10.5), (f:37.5; s:15.00)), { 5mm }
((f: 4.2; s:1.68), (f: 7.10; s:2.85), (f:10.5; s: 4.00)), { 10mm }
((f: 2.0; s:0.80), (f: 3.40; s:1.28), (f: 4.8; s: 1.72)), { 15mm }
((f: 1.4; s:0.56), (f: 2.33; s:0.95), (f: 3.4; s: 1.30)), { 20mm }
((f: 1.0; s:0.40), (f: 1.70; s:0.68), (f: 2.4; s: 0.96))); { 25mm }

var tip:array [1..3] of string;
d,z:array [1..3] of integer;
n,v,c,p,KK,q,Vmax,NK:array [1..3] of real;
i:integer;
isx,rez:text;

function K (Diam:integer;T:Trees;C:real):real;
begin
with table_2[Diam div 5, T] do
K:=f+s/C;
end;
Begin
clrscr;

TextBackGround (1);
ClrScr;
Window (20,6,60,16);
TextBackGround (7);
ClrScr;
Window (22,7,58,15);
textBackGround (1);
ClrScr;
TextColor (14);
GoToXY (1,3);
WriteLn (' Kyrsovaya po informatike ');
WriteLn (' Vipolnil 1234561231231 ');
WriteLn (' stydent 1-go kyrsa ');
WriteLn (' Informacionnie sistemi ');
WriteLn (' 2011 god ');
Writeln ('');
Writeln (' Press any key');
ReadKey;
window (1,1,80,25);
ClrScr;
Window (4,2,76,24);
TextBackGround (7);
ClrScr;
Window (6,3,74,23);
textBackGround (1);
ClrScr;
TextColor (14);
GoToXY (1,3);

assign (isx, 'DATA.TXT');
reset (isx);

for i:=1 to 3 do
begin
readln (isx, tip[i], z[i], d[i], n[i], v[i]);
c[i]:=(1000*v[i])/(z[i]*n[i]);
KK[i]:=K(d[i], trees(i), c[i]);
p[i]:=(KK[i]*d[i]*c[i])/2;
Vmax[i]:=(pi*d[i]*n[i])/(60*10*10*10);
NK[i]:=p[i]*(Vmax[i]/102);
q[i]:=(0.25+0.07*d[i])*p[i];
end;
writeln ('| Tip der | Sila rezaniya, Kg| Moshnost rezaniya, kBt| Ysilie pod rezaniya, kg ');
writeln ('-------------------------------------------------------------------------------');
for i:=1 to 3 do
begin
writeln ('| ', tip[i],' ':2, ' | ', p[i]1.gif3, ' | ', NK[i]1.gif3, ' | ', q[i]3.gif1, ' |');
end;
writeln ('-------------------------------------------------------------------------------');
readkey;
close (isx);
window (1,1,80,25);
TextBackGround (0);
TextColor (7);
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.