Bem-vindo: Sáb, 23 de Novembro 2024, 19:43 Pesquisa avançada
#include <stdio.h>
#include <stdlib.h>
int main()
{
int L=0, W=0, C=0;
int *P;
int valida;
do
{
valida = 1;
printf("Insira os valores (2 <= L <= 50, 1 <= W <= 25, 1 <= C <= 25):\n");
scanf("%d %d %d", &L, &W, &C);
if((L<2 || L>50) || (W<1 || W>25) || (C<1 || C>25)) // Valida valores
{
printf("ERRO: Valor(es) fora do limite!\n");
valida = 0;
}
}while(!valida);
/*
* Depois de validado, cria o vector de profundidade que irá receber os valores
*/
P = (int *) calloc(L+1, sizeof(int));
P[0] = 0; // Margem esquerda
P[L] = 0; // Margem direita
do
{
valida = 1;
printf("Insira os valores de profundidade (são %d valores):\n", L-1);
static int i;
for(i=1; i<L; i++)
{
scanf("%d", &P[i]);
}
for(i=1; i<L; i++)
{
if(P[i] < 0) // Valida valores
{
printf("ERRO: Valor negativo!\n");
valida = 0;
}
}
}while(!valida); // Valida valores
return 0;
}
C+0.1 = P(i) + K * (P(i+1) - P(i))
K = ((C+0.1) - P(i)) / (P(i+1) - P(i))
(C+0.1) - P(i)
K = -----------------
(P(i+1) - P(i))
double K=0.0, X=-1.0;
int conta=0;
for(i=0; i<L; i++)
{
K = ((C+0.1) - P[i]) / (P[i+1] - P[i]);
printf("[%d]\t%f\n", conta, K);
if(K>=0 && K<=1)
{
if(X==-1.0)
{
X = i + K;
}
else if(conta < (X+W) && (X+conta) < L)
{
conta++;
}
else if(conta >= (X+W) && (X+conta) < L)
{
break;
}
else
{
X = -1.0;
conta = 0;
}
}
else
{
X = -1.0;
conta = 0;
}
}
printf("%.6f\n", X);
Rogergalvao (21-09-2013, 23:28) escreveu:Então Luis obrigado pelo feedback , mas não entendi muito bem a segunda parte.Qual é a idéia nela? Porque tipo o valor de k sempre vai estar entre 0 e 1 ou seja 0<=k<=1 pelo que foi dado no enunciado.
Rogergalvao (21-09-2013, 23:28) escreveu:Então Luis obrigado pelo feedback , mas não entendi muito bem a segunda parte.Qual é a idéia nela? Porque tipo o valor de k sempre vai estar entre 0 e 1 ou seja 0<=k<=1 pelo que foi dado no enunciado.
Usuários navegando neste fórum: Nenhum usuário registrado e 52 visitantes