Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
15 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 15 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
ListBox

23/5/2017, 10:37 por Rosangela Pires

Ola Amigos.

Para se movimentar na grid com as setas colocamos no Metodo AfterChange da grid …

Comentários: 0

TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Estatísticas
Temos 7080 usuários registrados
O último usuário registrado atende pelo nome de Edi_0306

Os nossos membros postaram um total de 49 mensagens em 26 assuntos

Desafio Pascal

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Astúcia Desafio de programação

Mensagem por Tales Ruan em 11/5/2009, 21:44

Vamos ver se os programadores daqui são bons:

O desafio consiste de fazer a subtração de dois valores quaisquer, A e B, sem utilizar o sinal de menos ( - ). Simples.

Faça um post neste tópico com a sua resposta. O primeiro que conseguir ganhará um picolé.

Depois de um certo tempo vou colocar a solução aqui, mas aí o premio não vai mais estar valendo. Boa sorte.
avatar
Tales Ruan
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Astúcia Re: Desafio Pascal

Mensagem por arimateia em 13/5/2009, 02:12

Bem, faz 6 anos que não programava em Pascal. Se entendi bem o programa tem que fazer subtrações sem utilizar o operador aritmético unário "-" .

Geralmente nos problemas encontrados em concursos de programação são fornecidos um lista com várias entradas e suas respectivas saídas para que possamos testar se realmente nossa solução satisfaz o problema.

Vou logo dizendo que esse programa não faz subtrações, mas sim calcula a diferença em módulo, ou seja, a distância, de dois números inteiros. O que num caso particular(a maior que b) é igual a diferença e caso contrário igual ao módulo da mesma.

Bem, desculpem pelo "rigor" matemático, mas meu professor de Matemática Discreta na UFRPE foi Wilson Rosa . Quem conhece a peça já entendeu...

Se não for isso aí, tô afim de saber a resposta. É usando alguma biblioteca padrão?

Ah, eu preferia um Coca... Razz



program subtrair;

function sub(a, b: integer) : integer;
var
i: integer;
maior: integer;
menor: integer;
aux: integer;
begin
//inialização das variáveis. chute de qual é o maior e o menor.
maior := a;
menor := b;

//se estiver errado, corrige o chute.
if a < b then
begin
maior := b;
menor := a;
end;

aux := menor;
i := 0;

//incrementa o menor valor até chegar no maior
while aux < maior do
begin
aux := aux + 1;
i := i + 1;//contador
end;

sub := i;

end;

Begin
WriteLn(sub(60,47)); //13
WriteLn(sub(-25,-5)); //20
End.

arimateia
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Astúcia Re: Desafio Pascal

Mensagem por Tales Ruan em 14/5/2009, 17:44

Hum... Concordo arimatéia, Acho que eu devia ter explicado melhor. A idéia era retornar a diferença, então, com A=4 e B=5 o programa retornaria -1.

Mas tudo bem, você pode se considerar o vencedor da primeira etapa. Smile Parabéns. Compre um picolé, me mande a nota fiscal, e depois eu faço um depósito do valor na sua conta bancária.


Bom, agora estou oficialmente reformulando o desafio porque antes estava muito fácil:

O desafio agora consiste de calcular a DIFERENÇA de dois valores REAIS quaisquer, A e B, sem utilizar o sinal de subtração.

Complicou um pouquinho, mas a solução é muito mais legal assim. Boa sorte para todos Smile
avatar
Tales Ruan
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Astúcia Desafio Pascal

Mensagem por zeroum em 25/2/2013, 15:17

Seguem as minhas soluções.

DESAFIO 1: Fazer a subtração de dois valores INTEIROS quaisquer, A e B, sem utilizar o sinal de menos ( - ).

No primeiro exercício coloquei para impressão sair com sinal (-) caso o segundo número informado fosse maior do que o primeiro, conforme informação posterior dada pelo autor. Mas é só a impressão. O algoritmo foi feito sem o sinal de subtração.

Testei os seguintes números e a princípio parece que está funcionando corretamente:

A=3; B=5; resultado= - 2
A=5; B=3; resultado= 2
A=3, B=3, resultado= 0

Código:

{Fazer a subtração de dois valores
INTEIROS quaisquer, A e B, sem utilizar o sinal de menos ( - ).}

program dimuir;

uses crt;

var
A,B,i,s,maior,menor:integer;

begin
clrscr;
writeln;writeln;

write('Digite o primeiro numero: ');
readln(A);
writeln;
write('Digite o segundo numero: ');
readln(B);

//descobrindo o maior e o menor número inteiro.
if A>B then
   begin
      maior:=A;
      menor:=B;
   end
else
   begin
   maior:=B;
   menor:=A;
   end;


//fazendo a contagem 1 a 1 do menor até o maior inteiro
s:=-1;
for i:=menor to maior do
   s:=s+1;

writeln;writeln;

//imprimindo o resultado
if A=B then
   begin
   textcolor(1);
      writeln('RESULTADO DA SUBTRAÇÃO:');
      writeln('A - B = ',s);
      textcolor(0);
   end
else
   if maior=B then
      begin
         textcolor(1);
         writeln('RESULTADO DA SUBTRAÇÃO:');
         writeln('A - B = ','-',s);
         textcolor(0);
      end
   else
      begin
         textcolor(1);
         writeln('RESULTADO DA SUBTRAÇÃO:');
         writeln('A - B = ',s);
         textcolor(0);
      end;

writeln;writeln;
writeln('/////////////////////////////////////////////////');
writeln('FIM DO PROGRAMA. DIGITE QUALQUER TECLA PARA SAIR.');
readkey;
end.


DESAFIO 2: Calcular a DIFERENÇA de dois valores REAIS quaisquer, A e B, sem utilizar o sinal de subtração.

Testei os seguintes números e, salve engano, parece que está funcionando direito:

A= 2,65; B=3,64; resultado= - 0,99
A=3,54; B= 1,65; resultado= 1,89
A=4,5; B=4,5; resultado= 0
A=1,25; B=3,654; resultado= - 2,404

Código:

{O desafio agora consiste em calcular a DIFERENÇA de dois
valores REAIS quaisquer, A e B, sem utilizar o sinal de subtração.}

program dimuir_numero_real;

uses crt;

var
A,B,maior,menor,total:real;
inteiro,y,x,q,z,soma,expmaior,expa,expb: real;

begin
clrscr;
writeln;writeln;

write('Digite o primeiro numero: ');
readln(A);
writeln;
write('Digite o segundo numero: ');
readln(B);
writeln;writeln;

//achando o multiplo de 10 que transforma A em inteiro.
expa:=1;
y:=frac(A);
x:=A;
soma:=0;
while y<>0 do
begin
   x:=x*10;
   y:=frac(x);
   soma:=soma+1;
   expa:=exp(soma*ln(10));
end;


//achando o multimplo de 10 que transforma B em inteiro.
q:=frac(B);
z:=B;
soma:=0;
while q<>0 do
begin
   z:=z*10;
   q:=frac(z);
   soma:=soma+1;
   expb:=exp(soma*ln(10));
end;


//descobrindo o maior multiplo de 10
if expa>expb then
      expmaior:=expa
else
   expmaior:=expb;



//transfomando A e B em numeros inteiros com o maior multiplo de 10
A:=A*expmaior;
B:=B*expmaior;


//descobrindo o maior e o menor número inteiro.
if A>B then
   begin
      maior:=A;
      menor:=B;
   end
else
   begin
   maior:=B;
   menor:=A;
   end;


//fazendo a contagem 1 a 1 do menor até o maior inteiro
inteiro:=0;
while menor<maior do
begin
   inteiro:=inteiro+1;
   menor:=menor+1;
end;


//subtração
total:=inteiro/expmaior;

//imprime o resultado em cor azul.
if A=B then
   begin
   textcolor(1);
      writeln('RESULTADO DA SUBTRAÇÃO:');
      writeln('A - B = ',total:10:7);
      textcolor(0);
   end
else
   if maior=B then
      begin
         textcolor(1);
         writeln('RESULTADO DA SUBTRAÇÃO:');
         writeln('A - B = ','-',total:10:7);
         textcolor(0);
      end
   else
      begin
         textcolor(1);
         writeln('RESULTADO DA SUBTRAÇÃO:');
         writeln('A - B = ',total:10:7);
         textcolor(0);
      end;

writeln;writeln;
writeln('/////////////////////////////////');
writeln('FIM DO PROGRAMA. DIGITE QUALQUER TECLA PARA SAIR.');
readkey;
end.


zeroum
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Astúcia Re: Desafio Pascal

Mensagem por zeroum em 25/2/2013, 15:45

DESAFIO 3: Elabore um algoritmo que seja capaz de ler números inteiros para uma matriz 3x3 e depois gire a matriz em 90° no sentido anti-horário, transformando linha em coluna (sentido anti-horário). O último elemento da linha será o primeiro da nova coluna.
A matriz original e o resultado devem ser impressos com cada linha contendo todos os seus elementos, como no exemplo ilustrativo abaixo:

1 2 3
4 5 6
7 8 9

Não imprima cada elemento em uma linha, por exemplo, como mostrado abaixo:
1
2
3
4
5
6
7
8
9


DESAFIO 4:
Com base no exercício anterior, elabore um algoritmo que seja capaz de ler números inteiros para uma matriz 3x3 e depois gire a matriz em 90° no sentido horário, transformando linha em coluna (sentido horário). O primeiro elemento da linha será o primeiro da nova coluna e o último elemento da linha será o último da coluna.
A matriz original e o resultado devem ser impressos com cada linha contendo todos os seus elementos, como neste exemplo ilustrativo:

1 2 3
4 5 6
7 8 9

Não imprima cada elemento em uma linha, por exemplo, como mostrado abaixo:
1
2
3
4
5
6
7
8
9

zeroum
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Astúcia Re: Desafio Pascal

Mensagem por Marcos Guedes em 25/2/2013, 17:10

Tales... como ficou esta solução?
Posta aí!
tongue

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
http://portal.programacaobrasil.com

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum