수고가 많으십니다
지난번 알려주신 수식은 메인 if 문 조건봉 (h>l*1.08...) 사이의 일수 차이를 구하고 가장 짧은 일수를 구하는 수식인거 같고
if 문 안에서 구한 hh[] 배열값 (현재만족봉과 직전봉사이의 최고가)을 가지고도 같은 작업을 하려면 아래와 같이 작성하면 될까요? (hmintt 변수에 저장하는걸로 작성)
메인조건 (h>l*1.08...) 과 hh[] 조건봉은 발생시점이 각각 달라서 따로 구하려고 합니다
질문2)
그리고
전에 알려주신 수식에서 mintt[50] 을 배열 선언하고
for 49 downto 1 문 (배열값 옮기기) 에서
if mintt == 0 or (tt[cnt]-tt[cnt+1] < mintt) Then
mintt = tt[cnt]-tt[cnt+1];
를 작성해주셨는데 (아래 for cnt = 0 to 20 에서도 총 두번 작성) 이유가 궁금합니다...혹시 오류인가해서 여쭤봅니다. mintt[] 배열 선언은 mintt 값을 배열에 넣으려고 작성해주신건가요?
감사합니다
var : mintt(0);
Array : mintt[50](0);
if Bdate != Bdate[1] Then
{
DD = DD+1;
}
if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) Then
{
d1 = dd;
var1=index;
var2=var1[1];
var3=h;
for cnt = 1 to (var1-var2)-1
{
if h[cnt] > var3 then
{
var3=h[cnt];
var4= dd;
}
}
for cnt = 49 downto 1
{
hh[cnt] = hh[cnt-1];
tt[cnt] = tt[cnt-1];
htt[cnt]= htt[cnt-1];
if mintt == 0 or (tt[cnt]-tt[cnt+1] < mintt) Then
mintt = tt[cnt]-tt[cnt+1];
}
hh[0] = var3;
tt[0] = d1;
htt[0]= dd;
mintt = 0;
for cnt = 0 to 20
{
if mintt == 0 or (tt[cnt]-tt[cnt+1] < mintt) Then
mintt = tt[cnt]-tt[cnt+1];
}
hmintt=0;
for cnt 0 to 20
{
if hmintt == 0 or (htt[cnt]-htt[cnt+1] < hmintt) Then
hmintt = htt[cnt]-htt[cnt+1];
}
답변 1
예스스탁
예스스탁 답변
2025-07-01 14:33:16
안녕하세요
예스스탁입니다.
1
if h[cnt] > var3 then
{
var3 = h[cnt];
var3에 위 조건으로 값이 저장되므로
dd값도 var3과 동일개념으로 저정해서 이용하시면 될 것 같습니다.
var : hmintt(0);
Array : hh[50](0),tt[50](0);
if Bdate != Bdate[1] Then
{
DD = DD+1;
}
if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) Then
{
d1 = dd;
var1=index;
var2=var1[1];
var3=h;
for cnt = 1 to (var1-var2)-1
{
if h[cnt] > var3 then
{
var3 = h[cnt];
var4 = dd[cnt];
}
}
for cnt = 49 downto 1
{
hh[cnt] = hh[cnt-1];
tt[cnt] = tt[cnt-1];
}
hh[0] = var3;
tt[0] = var4;
hmintt=0;
for cnt 0 to 20
{
if hmintt == 0 or (htt[cnt]-htt[cnt+1] < hmintt) Then
hmintt = htt[cnt]-htt[cnt+1];
}
}
2
상단은 삭제하시기 바랍니다.
hh[20] 차까지만 구한신다고 언급하셔서
하단에 새로 추가한 것 입니다.
총 50개 중 최저 구하시면 위에것을
20까지만 구하시면 아래내용을 사용하시면 됩니다.
Array : mintt[50](0);
은 값저장을 일반변수나 배열변수 중 선택하다 남겨진것 같습니다.
해당 내용도 삭제하시기 바랍니다.
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 질문 부탁드립니다
> 수고가 많으십니다
지난번 알려주신 수식은 메인 if 문 조건봉 (h>l*1.08...) 사이의 일수 차이를 구하고 가장 짧은 일수를 구하는 수식인거 같고
if 문 안에서 구한 hh[] 배열값 (현재만족봉과 직전봉사이의 최고가)을 가지고도 같은 작업을 하려면 아래와 같이 작성하면 될까요? (hmintt 변수에 저장하는걸로 작성)
메인조건 (h>l*1.08...) 과 hh[] 조건봉은 발생시점이 각각 달라서 따로 구하려고 합니다
질문2)
그리고
전에 알려주신 수식에서 mintt[50] 을 배열 선언하고
for 49 downto 1 문 (배열값 옮기기) 에서
if mintt == 0 or (tt[cnt]-tt[cnt+1] < mintt) Then
mintt = tt[cnt]-tt[cnt+1];
를 작성해주셨는데 (아래 for cnt = 0 to 20 에서도 총 두번 작성) 이유가 궁금합니다...혹시 오류인가해서 여쭤봅니다. mintt[] 배열 선언은 mintt 값을 배열에 넣으려고 작성해주신건가요?
감사합니다
var : mintt(0);
Array : mintt[50](0);
if Bdate != Bdate[1] Then
{
DD = DD+1;
}
if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) Then
{
d1 = dd;
var1=index;
var2=var1[1];
var3=h;
for cnt = 1 to (var1-var2)-1
{
if h[cnt] > var3 then
{
var3=h[cnt];
var4= dd;
}
}
for cnt = 49 downto 1
{
hh[cnt] = hh[cnt-1];
tt[cnt] = tt[cnt-1];
htt[cnt]= htt[cnt-1];
if mintt == 0 or (tt[cnt]-tt[cnt+1] < mintt) Then
mintt = tt[cnt]-tt[cnt+1];
}
hh[0] = var3;
tt[0] = d1;
htt[0]= dd;
mintt = 0;
for cnt = 0 to 20
{
if mintt == 0 or (tt[cnt]-tt[cnt+1] < mintt) Then
mintt = tt[cnt]-tt[cnt+1];
}
hmintt=0;
for cnt 0 to 20
{
if hmintt == 0 or (htt[cnt]-htt[cnt+1] < hmintt) Then
hmintt = htt[cnt]-htt[cnt+1];
}