AJUDA

AJUDA

por José Eduardo Trindade e Marques -
Número de respostas: 6
Pessoal

Fiz ate aqui do EP0:
.
.
.
for(cont = 0; cont < qtdtiros; cont++)
{
printf ( "Introduza o valor de x = ");
scanf ( "%f", &coord.x );
printf ( "Introduza o valor de y = ");
scanf ( "%f", &coord.y);
**
}
** Eu agora estou com um problema eu recebo os pontos quando eu recebo, eu tenho já que fazer o dist (p,c) e testar onde ele acerto? Pelo que eu ouvi existe um for dentro de outro for, e eu não estou intendendo se há isso de colocar um for dentro do outro, em qual momento eu coloco.

Outra coisa a função troca, não entendi muito bem o que ela fara no programa.

Obrigado desde já

Em resposta à José Eduardo Trindade e Marques

Re: AJUDA

por Geraldo Castro Zampoli -
Nesse for vc le os pontos e coloca em coord.x e coord.y, oq parece que ta acontecendo é que a cada passagem do for vc sobreescreve essas variaveis.
Se for fazer assim para não perder a informação vc ja precisa calcular a distancia e a quantidade de pontos.
O for dentro do outro, vc deve estar falando dos testes da maior distancia.
A função troca vc usa apos descobrir quais pontos tem maior distancia se aquelas condições explicitas no ep forem satisfeitas.

Acho que respondi tudo, entendeu?

abss
Em resposta à Geraldo Castro Zampoli

Re: AJUDA

por José Eduardo Trindade e Marques -
bom geraldo
seria assim

for(cont = 0; cont < qtdtiros; cont++)
{
printf ( "Introduza o valor de x = ");
scanf ( "%f", &coord.x );
printf ( "Introduza o valor de y = ");
scanf ( "%f", &coord.y);

distpc = dist (a,b);
if ( dist > distmax)
{
distmax = dist;
}
else
{
distmax = distmax;
}
}


então é assim eu tenho que criar um vetor para guardar os pontos, seria isso?? e ai eu teria que testar assim que o usuario colocar o ponto eu devo já calcular a distancia e tambem quantos pontos foram marcados, seria isso, a parte do for dentro do for não entendi ainda desculpe

e a função troca??
Em resposta à José Eduardo Trindade e Marques

Re: AJUDA

por Geraldo Castro Zampoli -
Quando vc tem todos os pontos, vc tem que testar a maior distancia, para isso vc percorre o vetor com um for e dentro desse for faz outro tbm percorrendo o vetor para comparar todos pontos com todos.
o for externo é mais lento incrementando uma vez pra cada vez que o interno percorre todo vetor assim vc garante que compara todos.
Saindo dessa função vc chama a troca que vai mudar a ordem do ponto se preciso.

abss
Em resposta à José Eduardo Trindade e Marques

Re: AJUDA

por Allan Felipe Pereira de Brito -
Na mesma linha de dúvida ... tentei implementar o Ponto como um vetor Ponto p[MAX] para ele armazenar os pontos já na hora em que está lendo um por um, mas um MAX maior do que aproximadamente 75 mil, começa a fazer com que dê erro na hora de gerar o executável aqui na minha máquina (problema de memória devido ao monte de comparação dos ifs ?). Há alguma solução que não aparente ser lusitana à la criar novas variáveis vetoriais só pra guardar o p.x, o p.y, ou é isso mesmo?
Em resposta à Allan Felipe Pereira de Brito

Re: AJUDA

por Allan Felipe Pereira de Brito -
Ahh, resolvi meu problema. Eu tinha mais alguns vetores inúteis aqui que iam até MAX também, ocupando espaço. Tirei eles e agora consigo ir até 100 mil. E vamo que vamo ..
Em resposta à José Eduardo Trindade e Marques

Re: AJUDA

por Alexandre Locci Martins -
Oi

Há sim um for dentro de outro for, veja aí um exemplo.

#include
#include

/*
*
*/
int main() {

int i = 0;
int j = 0;
int n = 10;
int arranjo[n];

for(i = 0; i < n; i++){
arranjo[i] = i + 1;
}
/*imprime n vezes o arranjo[0..n]*/
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
printf("%d ", arranjo[j]);
}
printf("\n");
}
return (0);

}

C pode fazer qq tipo de combinação com laços, desde que seja lógico fazer.
Falou.