[Ajuda] Criaзгo de nova Funзгo -
Mattos - 12.11.2011
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...
Re: [Duvida] Criaзгo de nova Funзгo -
Pharrel - 12.11.2011
n entendi porra niuma q vc quer kkkk :/
Re: [Duvida] Criaзгo de nova Funзгo -
AppleX - 12.11.2011
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;
}
Re: [Duvida] Criaзгo de nova Funзгo -
Mattos - 12.11.2011
Le com calma pharrel... xD AppleX nao entendi o que fazer com isso
Re: [Duvida] Criaзгo de nova Funзгo -
AppleX - 12.11.2011
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
Re: [Duvida] Criaзгo de nova Funзгo -
Mattos - 12.11.2011
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...
Re: [Duvida] Criaзгo de nova Funзгo - rjjj - 13.11.2011
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
.
Re: [Ajuda] Criaзгo de nova Funзгo -
Mattos - 13.11.2011
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?
Re: [Duvida] Criaзгo de nova Funзгo -
RebeloX - 13.11.2011
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.
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
Tem ai.
Ah e nгo esqueзa de agradecer quem o tentou ajudar, nгo saindo fora falando mal de tudo.
Re: [Duvida] Criaзгo de nova Funзгo -
Mattos - 13.11.2011
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