Fernandinha Postado Dezembro 9, 2009 Denunciar Share Postado Dezembro 9, 2009 (editado) Olá pessoal,Coloquei o código abaixo em um protótipo em C#, porém o form design desaparece assim que eu insiro esse código.Gostaria de saber se há alguma coisa de errado com o código.Segue o mesmo abaixo:double InterpolFlatFwdVol(vector<double> vol_days, vector<double> vols,double day, int Number_of_days) { //output is vol for day int BiS_low_days; double days_high; double days_low; double DF_high; double DF_low; double VAR_low; double VAR_high; double rate_low; double rate_high; double interpol_flat_fwd_vol; int cont; Number_of_days=Number_of_days-1; BiS_low_days = BiSearch(vol_days, day, Number_of_days); if (BiSearch(vol_days, day, Number_of_days) == -1) { interpol_flat_fwd_vol = vols[0]; return interpol_flat_fwd_vol; } if (BiSearch(vol_days, day, Number_of_days) != -1) { if (BiSearch(vol_days, day, Number_of_days) == -2) { VAR_low = vols[Number_of_days - 1] * vols[Number_of_days - 1]; VAR_high = vols[Number_of_days] * vols[Number_of_days]; days_low = vol_days[Number_of_days - 1]; days_high = vol_days[Number_of_days]; interpol_flat_fwd_vol = sqrt((VAR_high * days_high - VAR_low * days_low) / (days_high - days_low)); return interpol_flat_fwd_vol; } if (BiSearch(vol_days, day, Number_of_days) != -2) { days_low = vol_days[BiS_low_days]; VAR_low = vols[BiS_low_days] * vols[BiS_low_days]; days_high = vol_days[BiS_low_days + 1]; VAR_high = vols[BiS_low_days + 1] * vols[BiS_low_days + 1]; } } interpol_flat_fwd_vol = sqrt((VAR_low * days_low + (VAR_high * days_high - VAR_low * days_low) * (day - days_low) / (days_high - days_low)) / day); return interpol_flat_fwd_vol; } int BiSearch(vector <double> inArray,double inValue,int sizeArray) { int i; int low; int high; int BiSearch; if(inValue<inArray[0]){return -1;} if(inValue==inArray[0]){return -1;} if(inValue>inArray[sizeArray]){return -2;} if(inValue==inArray[sizeArray]){return sizeArray;} low=0; high=sizeArray; while((high-low)>1) { i=(int)(high+low)/2; if (inValue==inArray[i]){BiSearch=i;} if (inValue>=inArray[i]) low=i; else high=i; } BiSearch=low; return BiSearch; }No aguardo de uma ajuda.Obrigada,Fernanda Giannetti Editado Dezembro 9, 2009 por quintelab Adicionado BBCode Code Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fernandinha Postado Dezembro 9, 2009 Autor Denunciar Share Postado Dezembro 9, 2009 Descobri que esse código está em C++, alguém por favor poderia me ajudar a converte-lo para C#?Obrigada,Fernanda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 OSJunior Postado Dezembro 9, 2009 Denunciar Share Postado Dezembro 9, 2009 Oi, Fernandinha.Você pode substituir o seu código pelo de baixo. Contudo, é necessário que você verifique eventuais erros. Apenas converti. ;)public class Nome_da_sua_classe { public double InterpolFlatFwdVol(List<double> vol_days, List<double> vols, double day, int Number_of_days) { //output is vol for day int BiS_low_days; double days_high; double days_low; double DF_high; double DF_low; double VAR_low; double VAR_high; double rate_low; double rate_high; double interpol_flat_fwd_vol; int cont; Number_of_days = Number_of_days - 1; BiS_low_days = BiSearch(vol_days, day, Number_of_days); if (BiSearch(vol_days, day, Number_of_days) == -1) { interpol_flat_fwd_vol = vols[0]; return interpol_flat_fwd_vol; } if (BiSearch(vol_days, day, Number_of_days) != -1) { if (BiSearch(vol_days, day, Number_of_days) == -2) { VAR_low = vols[Number_of_days - 1] * vols[Number_of_days - 1]; VAR_high = vols[Number_of_days] * vols[Number_of_days]; days_low = vol_days[Number_of_days - 1]; days_high = vol_days[Number_of_days]; interpol_flat_fwd_vol = Math.Sqrt((VAR_high * days_high - VAR_low * days_low) / (days_high - days_low)); return interpol_flat_fwd_vol; } if (BiSearch(vol_days, day, Number_of_days) != -2) { days_low = vol_days[BiS_low_days]; VAR_low = vols[BiS_low_days] * vols[BiS_low_days]; days_high = vol_days[BiS_low_days + 1]; VAR_high = vols[BiS_low_days + 1] * vols[BiS_low_days + 1]; } } interpol_flat_fwd_vol = Math.Sqrt((VAR_low * days_low + (VAR_high * days_high - VAR_low * days_low) * (day - days_low) / (days_high - days_low)) / day); return interpol_flat_fwd_vol; } public int BiSearch(List<double> inArray, double inValue, int sizeArray) { int i; int low; int high; int BiSearch; if (inValue < inArray[0]) { return -1; } if (inValue == inArray[0]) { return -1; } if (inValue > inArray[sizeArray]) { return -2; } if (inValue == inArray[sizeArray]) { return sizeArray; } low = 0; high = sizeArray; while ((high - low) > 1) { i = (int)(high + low) / 2; if (inValue == inArray[i]) { BiSearch = i; } if (inValue >= inArray[i]) low = i; else high = i; } BiSearch = low; return BiSearch; } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Fernandinha
Olá pessoal,
Coloquei o código abaixo em um protótipo em C#, porém o form design desaparece assim que eu insiro esse código.
Gostaria de saber se há alguma coisa de errado com o código.
Segue o mesmo abaixo:
No aguardo de uma ajuda.
Obrigada,
Fernanda Giannetti
Editado por quintelabAdicionado BBCode Code
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.