Hali!
Egyik szkriptembe kellett ez a kód.
Biztos van ennél egy mérföldekkel egyszerûbb megoldás, de ezt gyorsan meg tudtam írni, kb 4 perc alatt
9 óra kemény munka után erre futja pawnoban.
Átlagot számol, max 10 és minimum 2 számból.
Float:average(num1,num2,num3=0,num4=0,num5=0,num6=0,num7=0,num8=0,num9=0,num10=0)
{
new sum, idx, Float:sum2;
if( num10 != 0 ) {
sum = (num1+num2+num3+num4+num5+num6+num7+num8+num9+num10); idx = 10; }
else if( num9 != 0 && !num10) {
sum = (num1+num2+num3+num4+num5+num6+num7+num8+num9); idx = 9; }
else if( num8 != 0 && !num9 && !num10 ) {
sum = (num1+num2+num3+num4+num5+num6+num7+num8); idx = 8; }
else if( num7 != 0 && !num8 && !num9 && !num10 ) {
sum = (num1+num2+num3+num4+num5+num6+num7); idx = 7; }
else if( num6 != 0 && !num7 && !num8 && !num9 && !num10 ) {
sum = (num1+num2+num3+num4+num5+num6); idx = 6; }
else if( num5 != 0 && !num6 && !num7 && !num8 && !num9 && !num10 ) {
sum = (num1+num2+num3+num4+num5); idx = 5; }
else if( num4 != 0 && !num5 && !num6 && !num7 && !num8 && !num9 && !num10 ) {
sum = (num1+num2+num3+num4); idx = 4; }
else if( num3 != 0 && !num4 && !num5 && !num6 && !num7 && !num8 && !num9 && !num10 ) {
sum = (num1+num2+num3); idx = 3; }
else if( num2 != 0 && !num3 && !num4 && !num5 && !num6 && !num7 && !num8 && !num9 && !num10 ) {
sum = (num1+num2); idx = 2; }
else { return -1; }
// printf(\"return: %d/%d\", sum, idx);
sum2 = ( sum / idx );
return sum2;
}
by lackos888
Float:average(...){
new args = numargs(), Float:numbers;
for(new i = 0; i < args; i++){
numbers = numbers + getarg(i);
}
return numbers / args;
}
Tesztkód és használati példa:
printf(\"ÁTLAG: %f\", average(1,2,3,4,5)); // Eredmény: 3
printf(\"ÁTLAG: %f\", average(5,5,5,5)); // eredmény: 5
Tesztelve, mûködik.