[Off] Desafio - Faзa sua prуpria funзгo (parte 2)
#1

E aew galera =)

Hoje conversando com DartakousLien, ele me mostrou este tуpico, do arakuta, que achei muito legal =)

Vi tambйm que todos os desafios dele foram resolvidos e ninguйm deu continuidade ao assunto, tive vontade de reviver o tуpico, mas jб faz + de 1 mкs =\

Bom, entгo resolvi criar um outro tуpico como continuaзгo para aqueles que conseguiram resolver aquele =)

Agora й um desafio um pouco menos simples, se conseguirem resolver eu edito e coloco outro, й uma boa forma de treinar o cйrebro e o raciocнnio lуgico =)

Vamos lб, jб vou passar 2 logo de cara, quero ver quem consegue rsrs



primeiro: Criar a funзгo Float:Potencia(Float:numero, Float:expoente) que deve retornar o valor do numero elevado ao expoente (obviamente)
Lembrando que o expoente й FLOAT
Exemplo:
PHP код:
printf("2 elevado a 3,14 й: %f"Potencia(2.03.14)); 
deve retornar
Quote:

2 elevado a 3,14 й: 8.81524092

(ps.: obviamente nгo vale usar floatpower....)

Segundo: Apesar de ser segundo, esse й mais fбcil que o primeiro, porйm й mais difнcil de entender e explicar (vou me esforзar aqui rsrs...).
Criar 1 funзгo que calcula a бrea do grбfico entre uma outra funзгo e o eixo X em um intervalo dado.
Exemplo:
PHP код:
stock Float:OutraFuncao(Float:x)
{
return 
x;

(pra quem nгo percebeu, essa й a funзгo y = x;

a funзгo que deve ser criada й a funзгo
PHP код:
stock CalculaArea(Float:minFloat:max)
{
// funзгo aqui
}
printf("A бrea do grбfico entre 1.0 e 5.0 й %f"CalculaArea(1.05.0)); 
No caso desse exemplo fica fбcil porque a OutraFuncao й a simples reta Y = X... Mas a CalculaArea() deve ser feita para qualquer valor da OutraFuncao(), e sim, pode ser uma aproximaзгo.



Por enquanto sу, quem tiver alguma sugestгo de desafio passa que tambйm quero saber!!
(obs.: desafios rбpidos, menos de 100 linhas, por favor nй...)
vlw
Reply
#2

pawn Код:
public Teste(playerid)
{
return Kick(playerid);
}
Sou noob sу sei fazer isso :3
Reply
#3

Cara vocк sу pode estar me tirando nйh? Eu nгo sei nem 25% e ainda quer que eu tente este desafio... Tф fora.
Porque nгo passa isto:

pawn Код:
if(strcmp(cmdtext, "/nada", true) == 0) {
SendClientMessage(playerid, Vermelho, "[ERRO] Vocк nгo sabe nada, estude mais."):
return 1;
}
Reply
#4

Quote:
Originally Posted by dPlaYer_
Посмотреть сообщение
pawn Код:
public Teste(playerid)
{
return Kick(playerid);
}
Sou noob sу sei fazer isso :3
aushuashsa
poxa, й assim que comeзa =D

Sу nгo pode fazer
PHP код:
public OnGameModeInit()
{
OnGameModeExit();
}
public 
OnGameModeExit()
{
OnGameModeInit();

=D
Reply
#5

pawn Код:
Float:Potencia(Float:numero, Float:expoente)
{
    new result;

    for (new i; i < expoente; ++i)
    {
        numero *= numero;
    }

    return result;
}
Nгo testei! E acho que nгo funcionara com decimais, mas jб й um comeзo.
Reply
#6

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
pawn Код:
Float:Potencia(Float:numero, Float:expoente)
{
    new result;

    for (new i; i < expoente; ++i)
    {
        numero *= numero;
    }

    return result;
}
Nгo testei! E acho que nгo funcionara com decimais, mas jб й um comeзo.
rsrsrs
й um comeзo!
porйm de fato, nгo funciona com float +(
ah, e cuidado.. usa floatmul()
eu nгo sei pq, mas jб vi muito bug loco em usar a soma, subtraзгo, multiplicaзгo e divisгo convencionais com float, й raro, nгo sei explicar, mas jб vi os nъmeros assumindo valores bem esquisitos, e sу corrigia quando eu usava a funзгo de operaзгo com float

@Edit
ah e cuidado tb q vc declaro a funзгo Potencia como float, porйm o retorno dela й um inteiro convencional, que no caso nгo recebe nenhum valor, vai sempre retornar zero, mas isso acho que foi erro de digitaзгo rsrs


@Edit2

Caso alguйm se interesse, fiz uma soluзгo para o primeiro...
A aproximaзгo fico relativamente boa (erra na quinta casa decimal), porйm a otimizaзгo fico horrнvel !!
Fiz atй um benchmark simples, resultado lamentбvel rsrs

PHP код:
#include <a_samp>
#define PRECISAO    15
#define EULER        2.718281828459045
stock Fatorial(n)
{
    if(
0)
        return 
n*Fatorial(n-1);
    else
        return 
1;
}
stock Float:PotenciaInteira(Float:xy)
{
    if(
0)
        return 
x*PotenciaInteira(x,y-1);
    else
        return 
1.0;
}
stock Float:Exponencial(Float:x)
{
    new 
Float:total;
    for(new 
iPRECISAOi++)
        
total floatadd(total,floatdiv(PotenciaInteira(x,i),float(Fatorial(i))));
    
    return 
total;
}
stock Float:Potencia(Float:xFloat:y)
{
    return 
Exponencial(floatmul(y,floatlog(xEULER)));
}
main() 
{
    
printf("Metodo 01: 2 elevado a 3,14 eh: %f"floatpower(23.14));
    
printf("Metodo 02: 2 elevado a 3,14 eh: %f"Potencia(23.14));
    
    
printf("Iniciando Benchmark... 1.000.000 iteracoes");
    
    new 
agora GetTickCount();
    for(new 
i1000000i++)
        
floatpower(23.14);
    
printf("Funcao Nativa - tempo = %d"GetTickCount()-agora);
    
    
agora GetTickCount();
    for(new 
i1000000i++)
        
Potencia(23.14);
    
printf("Funcao Criada - tempo = %d"GetTickCount()-agora);

Resultado do lamentбvel benchmark:
Quote:

[22/12/13 02:40:03] Funcao Nativa - tempo = 100
[22/12/13 02:40:22] Funcao Criada - tempo = 19248

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)