AJUDA

AJUDA

by José Eduardo Trindade e Marques -
Number of replies: 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á

In reply to José Eduardo Trindade e Marques

Re: AJUDA

by 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
In reply to Geraldo Castro Zampoli

Re: AJUDA

by 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??
In reply to José Eduardo Trindade e Marques

Re: AJUDA

by 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
In reply to José Eduardo Trindade e Marques

Re: AJUDA

by 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?
In reply to Allan Felipe Pereira de Brito

Re: AJUDA

by 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 ..
In reply to José Eduardo Trindade e Marques

Re: AJUDA

by 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.