[Ajuda] Criaзгo de nova Funзгo
#1

Galera tenho a seguinte duvida... Queria criar um Stock algo assim:

pawn Код:
stock Resultado(X, Y)
{
X + Y = 10
}
Ai por exemplo... quero chamar essa funзгo algum local de seguinte forma:

pawn Код:
new Numero = Resultado(2, Y)
Dessa forma eu defini o X... portanto o Y й o numero que serб definido pra mim, e й justamente ele qe vai resultar o "Numero"... 2 + Y = 10... Y = 8 = Numero

Outro exemplo:
pawn Код:
new Numero = Resultado(X, 6)
Ai o numero agora serб = X... X + 6 = 10... X = 4 = Numero

Bom obviamente vc nao poderia chamar a funcao Resultado(X, Y) pos teriam resultados infinitos... E muito menos chamar uma funcao do tipo Resultado(4, 6) pois ja teria ambos numeros definidos e nao teria um numero pra ele dar o resultado em Numero...

A pergunta й... Como organizar essa nova fnзгo certinho a ponto de funcionar? e por exemplo se eu definir os dois numeros ou nenhum deles dar erro na hora de compilar...
Reply
#2

n entendi porra niuma q vc quer kkkk :/
Reply
#3

pawn Код:
Result(iType, ...)
{
    new
        iArgs = numargs(),
        iResult = 1;

    while(iArgs--)
    {
        iResult = iType == '*' ? (iResult * getarg(iArg) : (iType == '/' ? (iResult / getarg(iArg)) : (iType == '+' ? iResult + getarg(iArg)) : (iType == '-' ? iResult - getarg(iArg))));
    }
    return iResult;
}
Reply
#4

Le com calma pharrel... xD AppleX nao entendi o que fazer com isso
Reply
#5

Vocк pode fazer as contas e sairб o resultado:

Result('*', 3, 4, 5);
Seria o mesmo que (3 * 4 * 5)

ou Result('/', 5, 2); Iria dividir 5 / 2

Tem suporte atй 128 parвmetros, mas acho que vocк nгo vai usar tudo isso xD
Reply
#6

Mas eu nao quero isso... eu quero qo que descrevi em cima...
cricao de uma nova public ou stock tanto faz pra definir aquilo... Й meio que isso aqui у:
pawn Код:
public Funcao(Argumento1, Argumento2, Argumento3)
{
Argumento1 + Argumento2 = Argumento3
}
A idйia й que o sv deve calcular o numero em que eu deixar o proprio Argumento ali...
Ai por exemplo se eu uso la em algum cуdigo meu:

pawn Код:
new Numero = Funcao(4,2,Argumento3);
Portanto ele calcularб que 4 + 2 = Argumento3, logo Argumento3 = 6 e esse 6 й o proprio Numero.

Outro exemplo:

pawn Код:
new Numero = Funcao(Argumento1,6,7);
Portanto ele calcularб que Argumento1 + 6 = 7, logo Argumento1 = 1 e esse 1 й o proprio Numero.

Desta forma conclui-se que eu nunca poderei deixar dois Argumentos para serem calculados, ou preencher com numeros os tres argumentos, pq nao teria o que calcular... Portanto ao compilar se tiver por exemplo:

pawn Код:
Funcao(Argumento1,Argumento2,7);
Funcao(5,3,8);
Terб de dar erro... E й a criaзгo dessa public ou stock que nao sei como fazer...
Reply
#7

Isto deve resolver o seu problema .



O cуdigo abaixo farб exatamente o que vocк quer :



Coloque no Topo do GameMode .


pawn Код:
#define X   (cellmax)
#define Y   (cellmin)
stock Resultado(oX = cellmax, oY = cellmin)
{
    if(oX != cellmax && oY == cellmin)  return (10 - oX);
    else if(oY != cellmin && oX == cellmax) return (10 - oY);
    return print("Erro !"), false;
}


Exemplo de uso:



pawn Код:
new Numero = Resultado(X, 6); //Resultarб em 4, pois se X + Y = 10 e Y = 6,  entгo X + 6 = 10 e X = 10 - 6 = 4
printf("%d", Numero); //Imprimirб o nъmero 4



Espero ter ajudado .
Reply
#8

Rjjj vc me entendeu! to feliz por isso '-'

Bom ai eu fui testar la em um FS novo e pus exatamente assim:

pawn Код:
#include <a_samp>

#define X   (cellmax)
#define Y   (cellmin)

stock Resultado(oX = cellmax, oY = cellmin)
{
    if(oX != cellmax && oY == cellmin)  return (10 - oX);
    else if(oY != cellmin && oX == cellmax) return (10 - oY);
    return print("Erro !"), false;
}

new Numero = Resultado(X, 6); //Resultarб em 4, pois se X + Y = 10 e Y = 6,  entгo X + 6 = 10 e X = 10 - 6 = 4

public OnFilterScriptInit()
{
    printf("%d", Numero); //Imprimirб o nъmero 4
    return 1;
}
Porem o pawn compiler crasha! "O Pawn Compiler library encontrou um problema e precisa ser fechado." O que serб que deu de errado?
Reply
#9

Quote:
Originally Posted by Mateuscm
Посмотреть сообщение
Mas eu nao quero isso... eu quero qo que descrevi em cima...
cricao de uma nova public ou stock tanto faz pra definir aquilo... Й meio que isso aqui у:
pawn Код:
public Funcao(Argumento1, Argumento2, Argumento3)
{
Argumento1 + Argumento2 = Argumento3
}
A idйia й que o sv deve calcular o numero em que eu deixar o proprio Argumento ali...
Ai por exemplo se eu uso la em algum cуdigo meu:

pawn Код:
new Numero = Funcao(4,2,Argumento3);
Portanto ele calcularб que 4 + 2 = Argumento3, logo Argumento3 = 6 e esse 6 й o proprio Numero.

Outro exemplo:

pawn Код:
new Numero = Funcao(Argumento1,6,7);
Portanto ele calcularб que Argumento1 + 6 = 7, logo Argumento1 = 1 e esse 1 й o proprio Numero.

Desta forma conclui-se que eu nunca poderei deixar dois Argumentos para serem calculados, ou preencher com numeros os tres argumentos, pq nao teria o que calcular... Portanto ao compilar se tiver por exemplo:

pawn Код:
Funcao(Argumento1,Argumento2,7);
Funcao(5,3,8);
Terб de dar erro... E й a criaзгo dessa public ou stock que nao sei como fazer...
Mano vc й muito engraзado.

1є Vc pede para fazer SOMA, entгo ai esta.

pawn Код:
stock Somar(n1,n2) return n1+n2;
2є Vocк nem necessita de colocar o Argumento 3, a nгo ser que queria somar mais outro. Mas se por para resultado, basta usar.

pawn Код:
printf("%d",Somar(2,4)
Testa e ve se nгo da 6.

3є Pense na logica e nгo nas FUNЗХES!

@EDIT

Quote:
Originally Posted by Mateuscm
Посмотреть сообщение
EDIT:
Ainda mais que o que eu quero e por exemplo na funзгo deixar a incуgnita que eu quero sem numero... da forma que vc falou, eu teria de preencher ambos argumentos: Somar(1, 2)... e nao й isso que eu quero
Quer deixar incуgnita, se prencher o Somar? Facil

pawn Код:
new numero = Somar(2,4);
Tem ai.

Ah e nгo esqueзa de agradecer quem o tentou ajudar, nгo saindo fora falando mal de tudo.
Reply
#10

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Mano vc й muito engraзado.


2є Vocк nem necessita de colocar o Argumento 3, a nгo ser que queria somar mais outro. Mas se por para
A questгo BlueX й que pra o que eu quero, eu preciso de todos os argumentos ali colocados, atй mesmo o que serб calculado... Pesa no GetPlayerHealth(playerid, ______) Atй mesmo o 2є argumento que serб buscado ta ali sem o cara por valor nenhum ali pra ele (й уbvio)...

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Tem ai.

Ah e nгo esqueзa de agradecer quem o tentou ajudar, nгo saindo fora falando mal de tudo.
De forma alguma eu deixaria de agradecer... Foi erro meu mesmo desculpe por isso... quem sou eu pra nao agradecer alguem que tem muito mais experiencia que eu e tentou me ajudar...

E Rjjj mais uma vez muito obrigado correspondeu exatamente o que eu queria! Brigadao! Sу nao dou rep pra vc porqe o forum nao deixa '-' totas ultimas que dei foram pra vc e por que mereceu
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)