[FilterScript] Calculadora
#1

Calculadora

Й um sistema simples, porйm rбpido e com respostas corretas.
Nгo й algo muito avanзado, porйm iniciantes quebram a cabeзa ao criar algo como isso.
Nгo й possivel fazer uma conta nгo-exata(ex: 5:2).
Funзхes: subtrair,somar,dividir e multiplicar

Foi usado:
zcmd,sscanf,a_samp
Sem nenhum tipo de bug, erro.
Espero que gostem do code e favor, avaliem!!
Vou arcar com atualizaзхes, talves uma encrementada de dialog ai eim

Revoluзгo SA-MP: Enquanto vocк estiver jogando pode fazer um dever de Matйmatica.
Cуdigo abaixo, bem identado e organizado.
pawn Код:
#include a_samp
#include zcmd
#include sscanf

new
str[64],
numero1,
numero2,
resultado;

CMD:calculadora(playerid)
{
    SendClientMessage(playerid,-1,"/multiplicar [numero] [numero]");
    SendClientMessage(playerid,-1,"/dividir [numero] [numero]");
    SendClientMessage(playerid,-1,"/somar [numero] [numero]");
    SendClientMessage(playerid,-1,"/subtrair [numero] [numero]");
    return 1;
}

CMD:multiplicar(playerid,params[])
{
    if(sscanf(params, "dd",numero1,numero2)) return SendClientMessage(playerid,-1,"USE: /multiplicar [numero] [numero]");
    resultado = numero1 * numero2;
    format(str,sizeof(str), "%d . %d = %d",numero1,numero2,resultado);
    SendClientMessage(playerid,-1,str);
    return 1;
}

CMD:dividir(playerid,params[])
{
    if(sscanf(params, "dd",numero1,numero2)) return SendClientMessage(playerid,-1,"USE: /dividir [numero] [numero]");
    resultado = numero1 / numero2;
    format(str,sizeof(str), "%d / %d = %d",numero1,numero2,resultado);
    SendClientMessage(playerid,-1,str);
    return 1;
}

CMD:somar(playerid,params[])
{
    if(sscanf(params, "dd",numero1,numero2)) return SendClientMessage(playerid,-1,"USE: /somar [numero] [numero]");
    resultado = numero1 + numero2;
    format(str,sizeof(str), "%d + %d = %d",numero1,numero2,resultado);
    SendClientMessage(playerid,-1,str);
    return 1;
}

CMD:subtrair(playerid,params[])
{
    if(sscanf(params, "dd",numero1,numero2)) return SendClientMessage(playerid,-1,"USE: /subtrair [numero] [numero]");
    resultado = numero1 - numero2;
    format(str,sizeof(str), "%d - %d = %d",numero1,numero2,resultado);
    SendClientMessage(playerid,-1,str);
    return 1;
}
Prints -imgur.com
Reply
#2

nossa

to gostando de ver vocк eim, ta comeзando a postar FS's muito melhores .
Reply
#3

Legal, vocк estб de parabйns, apesar de simples, percebo que й de grande esforзo de sua parte, e isto merece atenзгo.

Nгo й necessбrio criar uma variбvel para armazenar o resultado, pode fazer desta maneira:
pawn Код:
format(str,sizeof(str), "Resultado: %d", numero1 * numero2);
E tambйm, nгo й necessбrio criar variбveis globais(no topo do script), pode cria-las localmente(no cуdigo), mas isso vai do pensar de cada programador.

Mas de qualquer forma, parabйns pelo esforзo, continue assim
Reply
#4

zika mlk
Reply
#5

seria legal assim ^^

pawn Код:
CMD:calcular(playerid,params[]){
    static numero1, numero2, oper[5];
    if(sscanf(params, "ds[5]d",numero1, oper, numero2)) return SendClientMessage(playerid,-1,"USE: /calcular [numero] [operaзгo +|-|x|/] [numero]");
    Operacao(playerid, numero1, oper, numero2);
    return 1;
}

stock Operacao(playerid, valor1, const op[], valor2)
{
    static str[50], resultado;
    if(!strcmp(op, "-", true)){
        resultado = (valor1 - valor2);
        format(str,sizeof(str), "Resultado: %d",resultado);
        SendClientMessage(playerid, -1, str);
    }
    else if(!strcmp(op, "+", true)){
        resultado = (valor2 + valor2);
        format(str,sizeof(str), "Resultado: %d", resultado);
        SendClientMessage(playerid, -1, str);
    }
    else if(!strcmp(op, "x", true)){
        resultado = (valor2 * valor2);
        format(str,sizeof(str), "Resultado: %d", resultado);
        SendClientMessage(playerid, -1, str);
    }
    else if(!strcmp(op, "/", true)){
        resultado = (valor2 /valor2);
        format(str,sizeof(str), "Resultado: %d", resultado);
        SendClientMessage(playerid, -1, str);
    }
    return true;
}
Reply
#6

Obg yNexus e Dolby, Dolby coloquei com a variavel para uma melhor organizaзгo e a variavel global para economizar linhas que consequentemente vбi diminuir o lag que talves as variaveis direto no comando causariam.
@edit
Obg tbm qSmoke
Sky, como vocк disse seria legal, mais seria mais dificil para um iniciante entender, como tambйm nгo sou muito experiente em PAWN(desejo ser kk) nгo entendi isso "ds[5]d". Poderia explicar?
Reply
#7

Quote:
Originally Posted by joaovictor098
Посмотреть сообщение
Sky, como vocк disse seria legal, mais seria mais dificil para um iniciante entender, como tambйm nгo sou muito experiente em PAWN(desejo ser kk) nгo entendi isso "ds[5]d". Poderia explicar?
o que eu disse que seria legal n foi uma critica por favor n interprete errado ...


pawn Код:
"ds[5]d"
sгo os parametros do sscanf

d = numero1
s[5] = oper[5] ou seja a string statica que vai abortar a operaзгo +-/x   - coloquei 5 porйm sу era necessario 2:P
d = numero2
espero que tenha intendido ... para melhores estudos
https://sampforum.blast.hk/showthread.php?tid=120356
Reply
#8

Quote:
Originally Posted by Sky_.
Посмотреть сообщение
o que eu disse que seria legal n foi uma critica por favor n interprete errado ...


pawn Код:
"ds[5]d"
sгo os parametros do sscanf

d = numero1
s[5] = oper[5] ou seja a string statica que vai abortar a operaзгo +-/x   - coloquei 5 porйm sу era necessario 2:P
d = numero2
espero que tenha intendido ... para melhores estudos
https://sampforum.blast.hk/showthread.php?tid=120356
Eu nгo interpretei errado nгo, sу disse que seria dificil para um iniciante entender seu code, vocк que interpretou :P
E obg pela ajuda nй kk
Reply
#9

otimo
Reply
#10

Quote:
Originally Posted by Krusheer
Посмотреть сообщение
otimo
obg.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)