Calcular áreas (Java)

Boa tarde,

Estou com dificuldades em resolver um exercício, que é o seguinte:

Indicando a área máxima pretendida e o intervalo de valores inteiros para o raio (entre [FONT=Courier New,Courier New][FONT=Courier New,Courier New]minimo [/FONT][/FONT]e [FONT=Courier New,Courier New][FONT=Courier New,Courier New]maximo[/FONT][/FONT]),
devolve um [FONT=Courier New,Courier New][FONT=Courier New,Courier New]array [/FONT][/FONT]com todas as áreas possíveis no intervalo de raios indicado.

Obrigado desde já pela ajuda.:)
 
Fazes uma funçao que dado um raio devolve a área do circulo correspondente.
Depois chamas isso para o intervalo de valores que queres e constróis o array.
Isto de uma maneira muito geral. Tens alguma dúvida específica?
 
Não estou a conseguir fazer a função. Se fosse para calcular a área com um determinado raio (ou raios) seria fácil, o problema é que a função tem de calcular todas as áreas compreendidas no intervalo entre máximo e mínimo, e não pode exceder o valor de área máxima pretendido.
Obrigado desde já pela atenção.
 
Coloca aqui o que já desenvolveste, não te vamos dar código feito por motivos óbvios, mas podemos ajudar-te.

Ps: Isso parece-me um integral, assim por alto, ou no mínimo um somatório (integral discreto).
 
Como estamos a falar de círculos (acho eu) não precisamos de entrar (pelo menos directamente) no cálculo integral.
Basta o pi*r*r.
Não estou a perceber qual é o problema. Parece que já fizeste a função que calcula isto. Agora basta ter um ciclo discreto no intervalo [r1,r2] que vai adicionando valores a um array sem ultrapassar a área máxima definida.
Devo estar a perceber mal o problema, se calhar. É só um círculo ou funciona com discos?
 
Estás a perceber bem:) O meu problema é precisamente nesta parte:
Não estou a perceber qual é o problema. Parece que já fizeste a função que calcula isto. Agora basta ter um ciclo discreto no intervalo [r1,r2] que vai adicionando valores a um array sem ultrapassar a área máxima definida.
Consigo calcular as áreas para os valores máximos e mínimos do raio, mas não estou a ver como fazer para calcular os valores dos raios que se encontram no intervalo, e depois colocá-los no array.
 
Fazes um ciclo a começar no 1º inteiro dentro do intervalo e vais incrementando um a um.
Algo do tipo:
Código:
for(int x1; x1<=x2; x1++) {
     //chamada da tua função e inserção para um array criado anteriormente
     ...
}
 
Simples:
-uma função que dado um raio calcula a área do círculo correspondente.
Código:
float area(int raio) //o raio é inteiro, segundo o enunciado
{
   return 3.14*raio*raio; //a aproximação ao pi está muito grosseira mas podem  melhorar
}
-chamar esta função para um intervalo entre x1 e x2 e meter para um array:
Código:
ArrayList<Float> tmp = new ArrayList<Float>();

for(int x=x1;x<=x2;x++)
{
   float a = area(x);

   if(x>areaMaxima)
      break;
      
   tmp.add(a);
}

float[] array = float[tmp.size()];

for(int i=0; i<tmp.size; i++)
   array[i]=tmp.get(i);
Usei um ArrayList como intermediário visto não saber, à partida, qual o tamanho do array. O ArrayList tem alocação dinâmica (vai aumentando de tamanho consoante as necessidades).
Eu não testei para ver se tinha erros. Mas é algo deste estilo.
 
Última edição:
Back
Topo