Ir para conteúdo
Fórum Script Brasil
  • 0

logica para horario


brunolr

Pergunta

Bom dia,

Na verdade o que vou perguntar vale para qualquer linguagem, e se eu estiver no lugar errado desculpe

Seguinte eu tenho o seguinte problema, vamos supor que eu tenha que descobrir se o horário está entre(17:00 e 8:00)

Como vocês fariam?

No meu caso eu tenho uma tabela com os dados, e quando ele passa de 24 horas eu do + 1 no mês

mas, se eu não tivesse a tabela, ou seja, somente os valores (17:00 e 8:00) iria complicar.

alguém tem alguma dica elegante de fazer isso(sem gambiarra com monte de if ou for)?

Lembra que isso vale para qualquer lógica que tenha um valor máximo e ele volte

como por exemplo, caixas numeradas de 1 a 10, e o que to procurando pode estar entre 8 e 3.

a forma mais "bonita" que arrumei

Eu verifiquei se ele não estava entre os dois, vou usar o exemplo das caixas:

eu vejo se ele não esta entre 3 e 8, ficaria algo assim

if( !(valor_atual > tabela["fim"] && valor_atual < tabela["ini"] ) ){
bla bla bla
}

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

é assim

imagina 10 caixas enumerada de 1 a 10

ai teremos a caixa 1, depois a caixa 2 e assim por diante

e eu tenho configurado que televisão pode estar entre as caixas de número 8 e número 3, ou seja, a TV pode ser 8 ou 9 ou 10 ou 1 ou 2 ou 3(nessa ordem)

por exemplo

Editado por brunolr
Link para o comentário
Compartilhar em outros sites

  • 0

Brunolr,

Cara realmente quando eu li a primeira vez não entendi nada sua pergunta... mas agora acho que entendi um pouco...

Já que pode ser qualquer linguagem, vou fazer um exemplo aí em C++ para ver se te ajuda

int numStart;
int numEnd;

vector<int> box;

box.push_back(1); ... // aqui você coloca estático ou manda o usuário digitar os valores.. nesse exemplo deixei bem simples estático
box.push_back(2);
box.push_back(3);
box.push_back(4);
box.push_back(5);
box.push_back(6);
box.push_back(7);
box.push_back(8);
box.push_back(9);
box.push_back(10);

cout << "Digite o valor inicial ";
cin >> numStart;

cout << "Digite o valor final";
cin >> numEnd;

vector<int>::iterator iter;

if( numStart < numEnd )
{
   for( iter = box.begin(); iter != box.end(); iter++ )
   {
      if( (*iter >= numStart) && (*iter <= numEnd ) )
      {
          cout << *iter << endl;
      }   
   }
}

else
{
   for( iter = box.begin(); iter != box.end(); iter++ )
   {
      if( *iter >= numStart )
      {
         cout << *iter << endl;
      }
   }
   for( iter = box.begin(); iter != box.end(); iter++ )
   {
      if( *iter <= numEnd )
      {
         cout << *iter << endl;
      }
   }
}

Acho que não tem como fugir muito não dos for e dos ifs...

Se digitar 3 e 8 vai cai no primeiro caso, então vai imprimir 3, 4, 5, 6, 7 e 8

Se digitar 8 e 3 vai cai no segundo caso, então vai imprimir 8, 9, 10, 1, 2 e 3.

Mesmo não entendendo todo o seu problema, espero ter ajudado.

Att

WebPantoja

Link para o comentário
Compartilhar em outros sites

  • 0

Para ser mais direto

em lua eu tenho uma tabela com a data

e nessa tabela tem um carinha chamado wday, onde 1 é domingo, 2 é segunda e assim vai

e eu preciso verificar se o dia de hoje, por exemplo quarta

fica entra sabado e quinta

ai nesse wday do lua sabado é 7 e quinta é 5

como podemos perceber, quarta fica entre sabado e quinta

a solução que coloquei no primeiro post funciona, eu só queria ver se existe um jeito mais elegante de fazer aquilo.

if( !(valor_atual > tabela["fim"] && valor_atual < tabela["ini"] ) ){
bla bla bla
}

Editado por brunolr
Link para o comentário
Compartilhar em outros sites

  • 0

Jeito de facilitar o que já esta simples :blink:

isso é igual a uma lista circular quando você deseja encontrar um elemento

eu faria parecido:

if (tabela [ini] > tabela [fim] ) //o caso se eu passar quinta e sabado , nesta ordem 
{
    if(valor < tabela[ fim ] && valor > tabela[ ini ]) 
    {
    //corpo
    }
}
else // para tratar o caso que você mesmo citou sabado ate quinta
{
    if(valor > tabela[ ini ]) || valor < tabela [fim] )
    {
    //corpo
    }
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...