brunolr Postado Junho 30, 2010 Denunciar Share Postado Junho 30, 2010 (editado) Bom dia,Na verdade o que vou perguntar vale para qualquer linguagem, e se eu estiver no lugar errado desculpeSeguinte 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êsmas, 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 voltecomo por exemplo, caixas numeradas de 1 a 10, e o que to procurando pode estar entre 8 e 3.a forma mais "bonita" que arrumeiEu 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 assimif( !(valor_atual > tabela["fim"] && valor_atual < tabela["ini"] ) ){ bla bla bla } Editado Junho 30, 2010 por Jonathan Queiroz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Junho 30, 2010 Denunciar Share Postado Junho 30, 2010 No caso de tempo geralmente são armazenados o número de segundos passados desde 01/01/1970 e a partir disso são calculados anos, meses, dias, etc.Não entendi o exemplo das caixas numeradas. Pode explicar melhor? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 brunolr Postado Junho 30, 2010 Autor Denunciar Share Postado Junho 30, 2010 (editado) é assimimagina 10 caixas enumerada de 1 a 10ai teremos a caixa 1, depois a caixa 2 e assim por diantee 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 Junho 30, 2010 por brunolr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 webpantoja Postado Junho 30, 2010 Denunciar Share Postado Junho 30, 2010 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 ajudaint 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 8Se 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.AttWebPantoja Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 brunolr Postado Junho 30, 2010 Autor Denunciar Share Postado Junho 30, 2010 (editado) Para ser mais diretoem lua eu tenho uma tabela com a datae nessa tabela tem um carinha chamado wday, onde 1 é domingo, 2 é segunda e assim vaie eu preciso verificar se o dia de hoje, por exemplo quartafica entra sabado e quintaai nesse wday do lua sabado é 7 e quinta é 5como podemos perceber, quarta fica entre sabado e quintaa 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 Junho 30, 2010 por brunolr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mvrocha Postado Junho 30, 2010 Denunciar Share Postado Junho 30, 2010 Jeito de facilitar o que já esta simples :blink: isso é igual a uma lista circular quando você deseja encontrar um elementoeu 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 } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
brunolr
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
Editado por Jonathan QueirozLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.