Skocz do zawartości

Rekomendowane odpowiedzi

Powiem tak słabo znam trygonometrię (bo jestem w 3 klasie gim :) )

ale sknociłem coś takiego:

#include a_samp

public OnFilterScriptInit()
print("Podaj wartoć sinus kąta, aby poznać jego wartoć cosinus oraz miarę w stopniach");

public OnRconCommand(cmd[])
{
    new Float:sin = floatstr(cmd);

    if(sin > 1.0 || sin < -1.0)
        return print("Funkcja sinus musi być oparta na dziedzinie [-1; 1]"), 1;

    print("\n---------------");
    printf("sin(x) = %f", sin);
    printf("-> cos(x) = %f", floatcos(sin));
    printf("-> x = %.0f", asin(sin));
    return 1;
}

Wyniki nieznacznie się różnią możliwe że u ciebie zaokrąglałeś w ostatnim :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
printf("-> cos(x) = %f", floatcos(sin));

No tego nie mogę zaliczyć. Dla przykładu wpisz liczbę 1. Wyświetli się:

cos(x) = 0.540302

A gdy sinus jest równy 1, to miara kąta musi być wówczas równa 90st. Oblicz w kalkulatorze windowsowym, że cosinus z 90 stopni nie jest równy tej wartości, którą wyliczy Twój skrypt, a 0.

Nie chcę zapychać jednym zadaniem całego tematu, więc podpowiem, żeby spróbować z Twierdzeniem Pitagorasa to połączyć (dokładnie z jego postaci trygonometrycznej).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1. musiałeś to zaokrąglić :P

2. mówisz Pitagoras więc może tak:

#include a_samp

public OnFilterScriptInit()
print("Podaj wartoć sinus kąta, aby poznać jego wartoć cosinus oraz miarę w stopniach");

public OnRconCommand(cmd[])
{
    new Float:sin = floatstr(cmd);

    if(sin > 1.0 || sin < -1.0)
        return print("Funkcja sinus musi być oparta na dziedzinie [-1; 1]"), 1;

    print("\n---------------");
    printf("sin(x) = %f", sin);
    printf("-> cos(x) = %f", floatsqroot(1.0 - (floatpower(sin, 2))));
    printf("-> x = %d", floatround(asin(sin)));
    return 1;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaokrąglić mówisz? Tylko ostatnią wartość (miarę kąta w stopniach zaokrągliłem). Oczywiście teraz zaliczam. Chodziło o jedynkę trygonometryczną naturalnie :)

Mój kod wygląda tak:

public OnFilterScriptInit()
{
	print("Podaj wartość sinus kąta, aby poznać jego wartość cosinus oraz miarę w stopniach.");
}

public OnRconCommand(cmd[])
{
	print("________________________\n");
	new const Float:l = floatstr(cmd);
	if(l > 1 || l < -1) print("Funkcja sinus musi być oparta na dziedzinie [-1; 1]");
	else
	{
		printf("\32\32\32sin(x) = %f", l);
		printf("-> cos(x) = %f", floatsqroot( 1.0-(l*l) ));
		printf("-> x = %d", floatround(asin(l)));
	}
	return 1;
}

@down: Odp. na PW

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
public OnRconCommand(cmd[])
{
	new a[20];
	new b[20];
	if(strfind(cmd, "+") != -1)
	{
	    strmid(a, cmd, 0, strfind(cmd, "+"));
		strmid(b, cmd, strfind(cmd, "+")+1, strlen(cmd));
		printf("%d+%d=%d", strval(a), strval(b), strval(a)+strval(b));
	}
	if(strfind(cmd, "-") != -1)
	{
	    strmid(a, cmd, 0, strfind(cmd, "-"));
		strmid(b, cmd, strfind(cmd, "-")+1, strlen(cmd));
		printf("%d-%d=%d", strval(a), strval(b), strval(a)-strval(b));
	}
	if(strfind(cmd, "*") != -1)
	{
	    strmid(a, cmd, 0, strfind(cmd, "*"));
		strmid(b, cmd, strfind(cmd, "*")+1, strlen(cmd));
		printf("%d*%d=%d", strval(a), strval(b), strval(a)*strval(b));
	}
	if(strfind(cmd, "/") != -1)
	{
	    strmid(a, cmd, 0, strfind(cmd, "/"));
		strmid(b, cmd, strfind(cmd, "/")+1, strlen(cmd));
		printf("%d/%d=%d", strval(a), strval(b), strval(a)/strval(b));
	}
	return 1;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaliczam i zamulam source=

#include <a_samp>

public OnFilterScriptInit()
	print("Pawn Game 8: Kalkulator");

public OnRconCommand(cmd[])
{
	new n1, n2;
	if(strfind(cmd, "+") != 1)
	{
		new pos = strfind(cmd, "+");
		cmd[pos] = 0;
		n1 = strval(cmd);
		n2 = strval(cmd);
		printf("%d+%d=%d", n1, n2, n1 + n2);
		return 1;
	}
	if(strfind(cmd, "-") != 1)
	{
		new pos = strfind(cmd, "-");
		cmd[pos] = 0;
		n1 = strval(cmd);
		n2 = strval(cmd);
		printf("%d-%d=%d", n1, n2, n1 - n2);
		return 1;
	}
	if(strfind(cmd, "*") != 1)
	{
		new pos = strfind(cmd, "*");
		cmd[pos] = 0;
		n1 = strval(cmd);
		n2 = strval(cmd);
		printf("%d*%d=%d", n1, n2, n1 * n2);
		return 1;
	}
	if(strfind(cmd, "/") != 1)
	{
		new pos = strfind(cmd, "/");
		cmd[pos] = 0;
		n1 = strval(cmd);
		n2 = strval(cmd);
		printf("%d/%d=%d", n1, n2, n1 / n2);
		return 1;
	}
	return 0;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Sorry, że tak późno ale nie miałem dostępu do kompa. Na razie nie mam pomysłu na zadanie, jak ktoś jakieś wymyślił to niech śmiało pisze. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#include <a_samp>
public OnFilterScriptInit()
	{
	for (;;)
	    {
	    if(random(2) == 0) printf("%d",random(cellmax));
		else printf("%d",random(cellmax) * -1);
	    }
	}

UP: cellmin cellmax to przedzial liczb.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No i pupa niemowlaka wyprzedziłeś mnie ... mam taki sam kod tylko że na pętli while

#include a_samp.inc

public OnFilterScriptInit()
{
    new pupa = 1;
    while(pupa)
        if random(2) *then
            printf("Wygenerowałem: %d", random(cellmax))
        else
            printf("Wygenerowałem: %d", random(cellmax) * -1);

    return 0;
}

Ciekawe kogo ziomal zaliczy :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No ludzie, chciałem, aby ktoś gorszy w PAWN zrobił to, a tu sami specjaliści. BAN.

#include <a_samp>

public OnFilterScriptInit()
{
	new BAN = 1;
	if(BAN == 1) //zapobiega warningowi ;)
		for(;;)
			printf("Wygenerowałem: %d", (random(2) == 0 ? (random(cellmax)) : (-random(cellmax))));
	return 1;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

PG #10

Zadanie jest proste przy starcie skrypt losuje (max = cellmax), potem musimy w nią trafić ;)

** oraz takie opcjonalne utrudnienie - podaj wiadomość jaką otrzymujesz po wygraniu w moim fs .amx

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To chyba jest jakieś zabugowane, wpisuję 9999999999999999999999999999999999999999999999999999999999999999999 i chce jeszcze więcej xD

EDIT:

Ale nie, to jest bug w PAWN, jeśli liczba jest większa, to jakiś błąd jest i staje się jakąś ujemną xD

#include <a_samp>

new liczba;

public OnFilterScriptInit()
{
	liczba = random(999);
	print("UWAGA: skrypt wygenerował liczbę z przedziału od 0 do 999. Jeśli ją odgadniesz, to dostaniesz SA:MP w wersji 0.5c.");
	return 1;
}

public OnRconCommand(cmd[])
{
	new odp = strval(cmd);

	if(odp < liczba)
		print("Więcej");
	else if(odp > liczba)
		print("Mniej");
	else
		print("Oto link do SA:MP 0.5c:\nhttp://urlffs.com/Mkl5Dl");
	return 1;
}

Taki duży przedział nie jest ciekawym pomysłem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak, wiadomość po zgadnięci u mnie to "Wesoły Kostek: Trafiony Nadziany" reszta to samo :) // sorki za "zamulenie"

Ziomal oto kod PG10: (był zabezpieczony przed DeAMX żeby nikt wiadomości nie "wyjął z kodu"

#include a_samp.inc

new rand_num;

public OnFilterScriptInit()
{
	new DeAMX[][] = {"d*pa", "jasia"};
	#pragma unused DeAMX

	rand_num = random(cellmax);
	return print("PG #10 zabawa z wesołym kostkiem, zakres CELLMAX\nWesoły kostek: \"Zgadnij kotku co mam w środku!\" (jaką liczbę?)");
}

public OnRconCommand(cmd[])
{
    new n = strval(cmd);

	if(n == rand_num)
		return print("Wesoły Kostek: Trafiony Nadziany");

	return n > rand_num ? print("Wesoły kostek: Mniej!") : print("Wesoły kostek: Więcej!");
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

DrunkeR, a KOD? I nie używaj Anty De AMX, jeśli zostanie udowodnione De AMX, to ban.

PG #11

Napisz skrypt, który generuje nazwę pliku składającą się z 10 losowych cyfr od 0 do 9, na końcu ma być rozszerzenie. Potem otwórz plik (jeśli istnieje, to ma być wyczyszczony) i dopisz do niego parzyste cyfry od 2 do 100, oddziel je enterem, po zapisaniu zamknij plik.

Nie wolno używać funkcji format oraz dzielenia modulo.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#include a_samp.inc

public OnFilterScriptInit()
{
    new nazwa[15], znaki[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

    for(new l; l != 10; l++)
        nazwa[l] = znaki[random(10)];

    strins(nazwa, ".txt", 10)

    new File:plik = fopen(nazwa, io_write);

    new p = 2, tmp[8];
    while(p != 100)
    {
        valstr(tmp, p);
        fwrite(plik, tmp);
        fwrite(plik, "\r\n");
        p += 2;
    }
    fclose(plik);
}

Ziomal dopisz do pierwszego posta że nie można używać żadnych DeAMX'ów i najlepiej zabezpieczać fs'a

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×