<?php
$nums = array("5","100","3","1","55");
$min = 0;
for ($i=0; $i<count($nums); $i++) {
if ($i == 0) { $min = $nums[$i]; }
if (($nums[$i] > 0) && ($nums[$i] < $min)) { $min = $nums[$i]; }
}
echo $min
?>
Sim isso assim ate é uma boa ideia...não muito correcto mas funcionahumm, de facto tens razão, experimenta a meter o maior inteiro possível, ou mete um absurdamente grande
abraços, HecKel
Essa é capaz de ser a melhor soluçao fugindo um poko a ideia do HecKel em dar um valor exageradamente grande , vou tentar resolver apartir dessa ideia. TyVou fazer isto em PHP e em 5 minutos por isso nem sei se é o ideal, mais rápido, etc... mas foi o que surgiu
Código:<?php $nums = array("5","100","3","1","55"); $min = 0; for ($i=0; $i<count($nums); $i++) { if ($i == 0) { $min = $nums[$i]; } if (($nums[$i] > 0) && ($nums[$i] < $min)) { $min = $nums[$i]; } } echo $min ?>
eheh perfeito ag ja resulta , ty pela dika e ty tb ao QuickFire pelo códigoEm vez de por o min = 0, coloca-se o min igual ao primeiro elemento do array e começa-se a iteração com i=1
Vou fazer isto em PHP e em 5 minutos por isso nem sei se é o ideal, mais rápido, etc... mas foi o que surgiu
Código:<?php $nums = array("5","100","3","1","55"); $min = 0; for ($i=0; $i<count($nums); $i++) { if ($i == 0) { $min = $nums[$i]; } if (($nums[$i] > 0) && ($nums[$i] < $min)) { $min = $nums[$i]; } } echo $min ?>
Em vez de por o min = 0, coloca-se o min igual ao primeiro elemento do array e começa-se a iteração com i=1
Boas to com algumas duvidas de como ek se ve o menor numero positivo de uma sequencia de numero...E para aplicar num programa mais elaborado mas so preciso que me dêm +/- umas dikas de como verificar isso..ate msm um algoritmo serve pa ter uma ideia.
Thks
Porque não ?a macro INT_MIN definida no ficheiro 'limits.h' contém o menor valor inteiro possível.
-------------------------
o primeiro 'if' não devia estar dentro do ciclo. a condição só vai ser verdadeira uma vez, mas estás a testá-la em todas as iterações...
<?php
function positive($number)
{
return ($number >= 0 );
}
$numbers = array(-12, 5, 1, -13, 33, 23, 345, 1, 2, 4, -1232, 6);
sort($numbers);
echo current(array_filter($numbers, "positive"));
?>
int minimum (int numbers[], int size)
{
int i,j;
int index_smallest;
int smallest;
//Procurar o primeiro numero da lista maior que 0, guarda-mos tb o indice
//para nao ter que voltar a percorrer toda a lista novamente
for (i=1; i < size; i++)
{
if(numbers[i] >= 0)
{
index_smallest = i;
smallest = number[i];
break;
}
}
for (j=(index_smallest + 1); j < size; j++)
{
if(numbers[j] < smallest && numbers[j] >= 0)
{
smallest = numbers[j];
}
}
return smallest;
}
PHP:<?php function positive($number) { return ($number >= 0 ); } $numbers = array(-12, 5, 1, -13, 33, 23, 345, 1, 2, 4, -1232, 6); sort($numbers); echo current(array_filter($numbers, "positive")); ?>
Código:int minimum (int numbers[], int size) { int i,j; int index_smallest; int smallest; //Procurar o primeiro numero da lista maior que 0, guarda-mos tb o indice //para nao ter que voltar a percorrer toda a lista novamente for (i=1; i < size; i++) { if(numbers[i] >= 0) { index_smallest = i; smallest = number[i]; break; } } for (j=(index_smallest + 1); j < size; j++) { if(numbers[j] < smallest && numbers[j] >= 0) { smallest = numbers[j]; } } return smallest; }
Nao testei o C.
Se lista[i] < auxiliar -> lista[i] é o menor
senao, incrementa o i e o auxiliar mantém-se intacto
Tanta confusão para encontrar o menor numero numa lista, é certo que esse programa devolve o indice, mas é pouco prático.
Basta como o SoundSurfer disse, iniciar uma variável auxiliar com o indice 0 do vector/lista/whatever, e comparar cada numero da lista com a variável auxiliar:
Código:Se lista[i] < auxiliar -> auxiliar é o menor senao, incrementa o i e o auxiliar mantém-se intacto
Penso que te enganaste aí MadOnion, será mais do tipo :
Se lista < auxiliar
auxiliar = lista ( dado que o que está na lista é o menor )
senao, incrementa o i e o auxiliar mantém-se intacto
Em C :
for(int i = 0; i < lista.lenght; i++) (mistura de c++, java, director, vbasic, tantas que já nem sei )
if (lista < menor)
menor = lista
O lista.lenght é o tamanho do teu array, agora só mesmo no compilador é que saberia fazer isso,
basicamente é isto
/**
* Devolve o índice do menor número numa array.
* Requer um apontador não nulo para uma array de inteiros não nula e o seu tamanho.
* Devolve o índice do menor número na array.
* /
int minIndex (int *array, int size) {
int smallestPos = 0;
int currentPos = 0;
for (currentPos; currentPos < size; currentPos++)
if (array[currentPos] < array[smallestPos])
smallestPos = currentPos;
return smallestPos;
}