Com base no algoritmo numero1, que tem como finalidade determinar o valor máximo de um vetor não vazio.
int numero1 (int n, int v[]
{
int j, x;
x=v[0];
for (j=1 ;j<n ;j+=1)
if (x<v[j])
x=v[j];
return x;
}
Soluções para a tarefa
Respondido por
0
O algoritmo está escrito em C e define uma função que recebe dois parametros, um número inteiro n que é a quantidade de elementos do vetor e um vetor v que será varrido. Eis o cabeçalho da função
int numero1( int n, int v[]) {
O primeiro passo desse algoritmo é assumir que o maior valor está no elemento 0 do vetor, o primeiro elemento. Esse valor do primeiro elemento é salvo na variável x
x=v[0];
Em seguida, um laço for é iniciado que fará o indice j variar desde o segundo elemento do vetor até o tamanho do vetor informado em n. Observe que em C o primeiro elemento do vetor é índice 0, portando, para obter o segundo elemento temos que usar índice 1.
Dentro do laço for tem um simples if que testa se o valor salvo em x é menor que o elemento corrente da varredura no vetor v. Se for menor, significa que o valor corrente da varredura em v é o maior valor ate então e é salvo em x. O laço continua até o fim do vetor.
Depois do laço, quando terminado, o algoritmo retornar o valor de x, o maior valor dentro do vetor v.
algums detalhes do algoritmo.
- Para cada valor n fornecido o for vai ser executado n-1 vezes. Isso acontece porque a variável de controle do for é inicializada com 1 e não com 0. O valor da variável de controle vai variar de 1 até n-1 ou seja (n-1) vezes. Isso acontece porque o for pula o primeiro elemento (o elemento 0) pois o considera o maior no primeiro passo e o compara com o segundo elemento em diante para verificar qual é o maior elemento.
- Em C não existe verificação de limite de indexador de um vetor. Isso significa que não tem como a função saber o tamanho físico do vetor passado como parâmetro. Para delimitar a busca ao tamanho do vetor, o parâmetro n é passado. Se o programador passar um n menor do que o tamanho real do vetor, a busca pode ser prejudicada pois o maior valor pode estar num elemento de posicao maior do que n. Por outro lado, se o valor n for maior do que o tamanho real do vetor, a função pode retornar como o maior valor um valor fora do vetor. Essa não verificaçào do índice em relaçào ao tamanho do vetor é uma das características mais criticadas da linguagem C em termos de confiabilidade de código. Afinal, acessar um elemento fora dos limites do tamanho do vetor é totalmente possível, acontece com facilidade, basta o programador nào se preocupar com isso. Cabe ao programador certificar-se que o indice não ultrapassará os limites. Ao mesmo tempo em que é criticada (essa ausencia de verificacao automática) tal característica torna C super rápida e por isso mesmo é elogiada em C. Quer ir rápido ? o programador que se garanta.
- A busca é sequencial e ignora completamente o fato dos elementos do vetor estarem em ordem ou não. Se o vetor estivesse ordenado crescente, o maior valor seria v[n] e dispensaria a busca.
int numero1( int n, int v[]) {
O primeiro passo desse algoritmo é assumir que o maior valor está no elemento 0 do vetor, o primeiro elemento. Esse valor do primeiro elemento é salvo na variável x
x=v[0];
Em seguida, um laço for é iniciado que fará o indice j variar desde o segundo elemento do vetor até o tamanho do vetor informado em n. Observe que em C o primeiro elemento do vetor é índice 0, portando, para obter o segundo elemento temos que usar índice 1.
Dentro do laço for tem um simples if que testa se o valor salvo em x é menor que o elemento corrente da varredura no vetor v. Se for menor, significa que o valor corrente da varredura em v é o maior valor ate então e é salvo em x. O laço continua até o fim do vetor.
Depois do laço, quando terminado, o algoritmo retornar o valor de x, o maior valor dentro do vetor v.
algums detalhes do algoritmo.
- Para cada valor n fornecido o for vai ser executado n-1 vezes. Isso acontece porque a variável de controle do for é inicializada com 1 e não com 0. O valor da variável de controle vai variar de 1 até n-1 ou seja (n-1) vezes. Isso acontece porque o for pula o primeiro elemento (o elemento 0) pois o considera o maior no primeiro passo e o compara com o segundo elemento em diante para verificar qual é o maior elemento.
- Em C não existe verificação de limite de indexador de um vetor. Isso significa que não tem como a função saber o tamanho físico do vetor passado como parâmetro. Para delimitar a busca ao tamanho do vetor, o parâmetro n é passado. Se o programador passar um n menor do que o tamanho real do vetor, a busca pode ser prejudicada pois o maior valor pode estar num elemento de posicao maior do que n. Por outro lado, se o valor n for maior do que o tamanho real do vetor, a função pode retornar como o maior valor um valor fora do vetor. Essa não verificaçào do índice em relaçào ao tamanho do vetor é uma das características mais criticadas da linguagem C em termos de confiabilidade de código. Afinal, acessar um elemento fora dos limites do tamanho do vetor é totalmente possível, acontece com facilidade, basta o programador nào se preocupar com isso. Cabe ao programador certificar-se que o indice não ultrapassará os limites. Ao mesmo tempo em que é criticada (essa ausencia de verificacao automática) tal característica torna C super rápida e por isso mesmo é elogiada em C. Quer ir rápido ? o programador que se garanta.
- A busca é sequencial e ignora completamente o fato dos elementos do vetor estarem em ordem ou não. Se o vetor estivesse ordenado crescente, o maior valor seria v[n] e dispensaria a busca.
Perguntas interessantes
Matemática,
9 meses atrás
Matemática,
9 meses atrás
Administração,
1 ano atrás
Matemática,
1 ano atrás
Português,
1 ano atrás