Szerző Téma: Átlagszámítás  (Megtekintve 3039 alkalommal)

Nem elérhető Zharko

  • 1955
  • Future House <3
    • Profil megtekintése
Átlagszámítás
« Dátum: 2013. Július 29. - 21:54:20 »
+5
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 :D
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.
« Utoljára szerkesztve: 2013. Július 29. - 22:18:02 írta Zharko »

Átlagszámítás
« Válasz #1 Dátum: 2013. Július 29. - 22:05:29 »
+8
Jó kód lett, de itt egy egyszerûbb és \"végtelen\" számmal mûködik, én írtam, 1 perces munka. Kód:
 

Float:average(...){
    new args = numargs(), Float:numbers;
    for(new i = 0; i < args; i++){
        numbers = numbers + getarg(i);
    }
    return numbers / args;
}
« Utoljára szerkesztve: 2013. Július 29. - 22:14:12 írta lackos888 »

Nem elérhető Zharko

  • 1955
  • Future House <3
    • Profil megtekintése
Átlagszámítás
« Válasz #2 Dátum: 2013. Július 29. - 22:07:27 »
0
Megköszönném picinyem :D


Idézetet írta: lackos888 date=1375128329\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"40609\" data-ipsquote-contentclass=\"forums_Topic
Jó kód lett, de itt egy egyszerûbb és \"végtelen\" számmal mûködik, én írtam, 1 perces munka. Kód:
 

Float:average(...){
    new args = numargs(), Float:numbers;
    for(new i = 0; i < args; i++){
        numbers = numbers + getarg(i);
    }
    return numbers / args;
}

 

Menõ, nem tudtam hogy lehet ilyet csinálni pawnban.
Már egykétszer lebasztak hogy mindent túlbonyolítok  :doubt:
Megint kisegítettél ;)
« Utoljára szerkesztve: 2013. Július 29. - 22:16:38 írta Zharko »

Nem elérhető zeteni

  • 1970
  • Ex-Scripter
    • Profil megtekintése
Átlagszámítás
« Válasz #3 Dátum: 2013. Július 31. - 21:20:27 »
+1
Jó lett mind a kettõ! Grat! :)

Nem elérhető Beckham

  • 1693
  • Noresz
  • Discord: Noresz#4265
    • Profil megtekintése
    • OctansV Alt:v szervere
Átlagszámítás
« Válasz #4 Dátum: 2013. Augusztus 01. - 10:13:25 »
+1
Grat tesó :)

Nem elérhető Suspect

  • 64
  • ♥•M4•♥
    • Profil megtekintése
Átlagszámítás
« Válasz #5 Dátum: 2013. Augusztus 05. - 12:52:41 »
0
G        R        T

Átlagszámítás
« Válasz #6 Dátum: 2013. December 31. - 02:02:07 »
0

Jó kód lett, de itt egy egyszerûbb és \"végtelen\" számmal mûködik, én írtam, 1 perces munka. Kód:
 

Float:average(...){
   new args = numargs(), Float:numbers;
   for(new i = 0; i < args; i++){
       numbers = numbers + getarg(i);
   }
   return numbers / args;
}

 

[/quote]
Régebben (amikor még aktivan foglalkoztam a SA:MP-pal) nem tudtam, hogyan lehet pl. a format parancsot megvalósitani, és most tudom meg... :-\\



Nem tudom, mennyire számit off-témának, de ez mûködik C-ben is? A három pont.
[mod]Ennyit elnézek, a fórum nem börtön.. Csak ne offoljátok tele, mert azért harapok. :nono: (Cappsy)[/mod]
« Utoljára szerkesztve: 2014. Január 08. - 23:18:32 írta cappsy »

Nem elérhető Zharko

  • 1955
  • Future House <3
    • Profil megtekintése
Átlagszámítás
« Válasz #7 Dátum: 2014. Január 06. - 21:49:52 »
+2
Ha jól tudom igen.
C kód:
 
double average ( int num, ... )
{
   va_list arguments;                    
   double sum = 0;
   /* Initializing arguments to store all values after num */
   va_start ( arguments, num );          
   /* Sum all the inputs; we still rely on the function caller to tell us how
    * many there are */
   for ( int x = 0; x < num; x++ )        
   {
       sum += va_arg ( arguments, double );
   }
   va_end ( arguments );                  // Cleans up the list
   return sum / num;                      
}

 
forrás: http://www.cprogramming.com/tutorial/c/lesson17.html

Átlagszámítás
« Válasz #8 Dátum: 2014. Január 10. - 20:06:43 »
+2

Ha jól tudom igen.
C kód:
forrás: http://www.cprogramming.com/tutorial/c/lesson17.html
 
[/quote]
Köszönöm. ;D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal