Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

odczyt z pliku


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 stmn

    Pomocny

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 25.01.2009 17:22

Celem funkcji jest pobieranie z pliku z dwoma wartościami cyfr(drugiej wartości) i wyliczenie średniej.

public info(id)
{
    new readdata[128],txtlen
    new parsedsteamid[32]
    new suma=0
    new licznik=0
    new srednia=0

    new fsize = file_size(filename,1)
    for (new line=0;line<fsize;line++)
    {

        read_file(filename,line,readdata,127,txtlen)
        parse(readdata,parsedsteamid,31,parsedrate,2)

        suma=suma+parsedrate[0];
        licznik=line-1
        client_print(id,print_chat,"suma(s,f,d): %s %f %d, parsedrate(s,f,d): %s %f %d",suma,suma,suma,parsedrate,parsedrate,parsedrate)
        	
		
    }
    srednia=suma/licznik;
    client_print(id,print_chat,"Blablabla: %s",srednia)



   }

Po wywołaniu funkcji otrzymuje:
suma(s,f,d): 4STEAM_0:0:13420017 0.000000 52, parsedrate(s,f,d): 4 0.000000 52
suma(s,f,d): jSTEAM_0:0:13420018 0.000000 106, parsedrate(s,f,d): 6 0.000000 54
suma(s,f,d): STEAM_0:0:13420018 0.000000 160, parsedrate(s,f,d): 6 0.000000

Jak widać parsedrate wyświetla prawidłowo w postaci stringu, ale coś dziwnego dzieje się z
sumą. Wartości z pliku są poprawnie przypisane do dwóch zmiennych. Parsedrate z pliku jest stringiem, więc może przy obliczaniu się coś chrzani z powodu różnych typów zmiennych? Próbowałem zmieniać za pomocą funkcji typu str_to_float, ale jakiś błąd wyskakuje tag mismatch.
  • +
  • -
  • 0

#2 Miczu

    Godlike

  • Przyjaciel

Reputacja: 646
Wszechmogący

  • Postów:2862
Offline

Napisano 25.01.2009 17:27

new Float: liczba

liczba = string_to_float(tablica)
  • +
  • -
  • 0

#3 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 25.01.2009 17:40

new Float: liczba

liczba = string_to_float(tablica)



Warning: Tag mismatch on line 141
(...)
new Float:suma=0
(...)
        ocenka = str_to_float(parsedrate[0])
        suma=suma+ocenka; //linia 141
(...)
Spróbowałem również sumę zdeklarować jako float, ale ten sam błąd. Próbowałem również z funkcją floatstr - taki sam efekt. Problem musi być banalny. :X
  • +
  • -
  • 0

#4 Miczu

    Godlike

  • Przyjaciel

Reputacja: 646
Wszechmogący

  • Postów:2862
Offline

Napisano 25.01.2009 17:51

Kazda liczba ktora ma przechowywac zmienna typu float musi byc zdeklarowana jako
new Float:

Czyli nie tylko suma, ale tez i ocenka - kazda funkcja co zwraca float: str_to_float,float,enity_get_float,halflife_time,floatpower,get_cvar_float,random_float itp itd
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych