Jump to content
Fivewin Brasil

Desafio - para testar os conhecimentos


sambomb

Recommended Posts

Crie uma função que some duas strings como se fossem números.

Exemplo:


cNum1 := "6586242500000000000000000000" //-- Peso da terra em gramas

cNum2 := "1234567890123456789012345678" //-- Número qualquer

Result = "7820810390123456789012345678"

id=code>id=code>

Para a entrada dos dados:


nDigitos := nRandom(499)+1

cNum1 := ""

For i := 1 to nDigitos

cNum1 += AllTrim(Str(nRandom(9))

end

SysRefresh()

nDigitos := nRandom(499)+1

cNum2 := ""

For i := 1 to nDigitos

cNum2 += AllTrim(Str(nRandom(9))

end

id=code>id=code>

Após fazer a de soma faça a de multiplicação e subtração. Tendo conseguido e caso queira testar seus conhecimentos em POGramação e matemática tente implentar exponenciação, divisão e o uso de sentenças ex.: Calcula("123456+654321")//"777777".

Obs.: Em compiladores 16 bits existe uma limitação para variaveis numéricas, portanto

val(cNum1) + val(cNum2) e similares estão descartados.

Obs2.: Em 32 bits com xHarbour o limite para número é 308 digitos(não testei com decimais)

Para Testar basta usar nNum := Val(Replicate("9",309)) ; nNum += 1

sambomb.jpg

RCA Sistemas - Itaocara - RJ

Editado por - sambomb on 25/08/2011 15:04:48

Editado por - sambomb on 25/08/2011 15:31:05

Link to comment
Share on other sites

Crie uma função que some duas strings como se fossem números.

Exemplo:


cNum1 := "6586242500000000000000000000" //-- Peso da terra em gramas

cNum2 := "1234567890123456789012345678" //-- Número qualquer

Result = "7820810390123456789012345678"

id=code>id=code>

Para a entrada dos dados:


nDigitos := nRandom(499)+1

cNum1 := ""

For i := 1 to nDigitos

cNum1 += AllTrim(Str(nRandom(9))

end

SysRefresh()

nDigitos := nRandom(499)+1

cNum2 := ""

For i := 1 to nDigitos

cNum2 += AllTrim(Str(nRandom(9))

end

id=code>id=code>

Após fazer a de soma faça a de multiplicação e subtração. Tendo conseguido e caso queira testar seus conhecimentos em POGramação e matemática tente implentar exponenciação, divisão e o uso de sentenças ex.: Calcula("123456+654321")//"777777".

Obs.: Em compiladores 16 bits existe uma limitação para variaveis numéricas, portanto

val(cNum1) + val(cNum2) e similares estão descartados.

Obs2.: Em 32 bits com xHarbour o limite para número é 308 digitos(não testei com decimais)

Para Testar basta usar nNum := Val(Replicate("9",309)) ; nNum += 1

sambomb.jpg

RCA Sistemas - Itaocara - RJ

Editado por - sambomb on 25/08/2011 15:04:48

Editado por - sambomb on 25/08/2011 15:31:05

Link to comment
Share on other sites

Olá,

Para soma é simples, contanto que tenham a mesma quantidade de caracteres, se não tiverem teria que acrescentar "0" antes da menor icon_smile_wink.gif, mas +- isso :


cVlr3 := ""

nSoma := 0

For nX := Len(cNum1) To 1 step -1

cVlr1 := SubStr(cNum1,nX,1)

cVlr2 := SubStr(cNum2,nX,1)

nVlr1 := Val(cVlr1)+Val(cVlr2)+nSoma

If nVlr1 > 10

nSoma := 10

nVlr1 -= 10

Else

nSoma := 0

Endif

cVlr3 += Str(nVlr1,1)

Next

Até aqui inverteu o valor, basta agora arrumar icon_smile_big.gif

cVlr4 := ""

For nX := Len(cVlr3) To 1 Step -1

cVlr4 += SubStr(cVlr3,nX,1)

Next

id=code>id=code>

Creio que seja isso, não testei, montei aqui mesmo icon_smile_big.gif

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

Facil:

Function Main()

cNum1 := "6586242500000000000000000000" //-- Peso da terra em gramas

cNum2 := "1234567890123456789012345678" //-- Número qualquer

? "SOMA"

cFormula := Calc(cNum1 + "+" + cNum2)

? cFormula

? "DIVISAO"

cFormula := Calc(cNum1 + "/" + cNum2)

? cFormula

? "MULTIPLICACAO"

cFormula := Calc(cNum1 + "*" + cNum2)

? cFormula

? "EXPONENCIACAO"

cFormula := Calc(cNum1 + "^" + cNum2)

? cFormula

Return

Static Function Calc(cForm)

cFormula := &cForm

cFormula := LTrim(Str(cFormula,Len(cForm)))

Return cFormula

citação:

Crie uma função que some duas strings como se fossem números.

Exemplo:


cNum1 := "6586242500000000000000000000" //-- Peso da terra em gramas

cNum2 := "1234567890123456789012345678" //-- Número qualquer

Result = "7820810390123456789012345678"

id=code>id=code>

Para a entrada dos dados:


nDigitos := nRandom(499)+1

cNum1 := ""

For i := 1 to nDigitos

cNum1 += AllTrim(Str(nRandom(9))

end

SysRefresh()

nDigitos := nRandom(499)+1

cNum2 := ""

For i := 1 to nDigitos

cNum2 += AllTrim(Str(nRandom(9))

end

id=code>id=code>

Após fazer a de soma faça a de multiplicação e subtração. Tendo conseguido e caso queira testar seus conhecimentos em POGramação e matemática tente implentar exponenciação, divisão e o uso de sentenças ex.: Calcula("123456+654321")//"777777".

Obs.: Em compiladores 16 bits existe uma limitação para variaveis numéricas, portanto

val(cNum1) + val(cNum2) e similares estão descartados.

Obs2.: Em 32 bits com xHarbour o limite para número é 308 digitos(não testei com decimais)

Para Testar basta usar nNum := Val(Replicate("9",309)) ; nNum += 1

sambomb.jpg

RCA Sistemas - Itaocara - RJ

Editado por - sambomb on 25/08/2011 15:04:48

Editado por - sambomb on 25/08/2011 15:31:05


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 - xHARBOUR 1.2.1

OQAAAIbQwrIaziWsYICxdLP-FORTE4j3rZzLrh12Gk4PsF8ukY039KXH6ugGw0cVBaWkVWj33cZYWS9728oi-B2eNgkAm1T1UOKN-GLBfXH_QrnoAUoflQHeKkGY.jpg

Editado por - emotta on 25/08/2011 17:23:27

Editado por - emotta on 25/08/2011 17:32:19

Link to comment
Share on other sites

citação:

Obs.: Em compiladores 16 bits existe uma limitação para variaveis numéricas, portanto

val(cNum1) + val(cNum2) e similares estão descartados.

Obs2.: Em 32 bits com xHarbour o limite para número é 308 digitos(não testei com decimais)

Para Testar basta usar nNum := Val(Replicate("9",309)) ; nNum += 1


id=quote>id=quote>

sambomb.jpg

RCA Sistemas - Itaocara - RJ

Link to comment
Share on other sites

Bom, nas "regras" nao tinha impedimento quanto a MACROS.... rs... Mas eu fiz mais pra ser "chato" mesmo, eu entendi o que é pra ser feito...

Abraço,

citação:

citação:

Obs.: Em compiladores 16 bits existe uma limitação para variaveis numéricas, portanto

val(cNum1) + val(cNum2) e similares estão descartados.

Obs2.: Em 32 bits com xHarbour o limite para número é 308 digitos(não testei com decimais)

Para Testar basta usar nNum := Val(Replicate("9",309)) ; nNum += 1


id=quote>id=quote>

sambomb.jpg

RCA Sistemas - Itaocara - RJ


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 - xHARBOUR 1.2.1

OQAAAIbQwrIaziWsYICxdLP-FORTE4j3rZzLrh12Gk4PsF8ukY039KXH6ugGw0cVBaWkVWj33cZYWS9728oi-B2eNgkAm1T1UOKN-GLBfXH_QrnoAUoflQHeKkGY.jpg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...