Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

vangodp

Membros Plenos
  • Total de itens

    3.387
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

461

8 Seguidores

Sobre vangodp

Informações gerais

  • Cidade e Estado
    Málaga/Espanã
  • Sexo
    Masculino
  1. Provavelmente o que deve lhe estar surpreendendo é que ao pulsar as teclas das flechas o valor de retorno sempre seja 224. Correto? Saiba que getch é uma "funçãozinha" meia especial, ela não retorna um só valor, se não que retorna 2. Aqui esta a prova: #include <stdio.h> #include <conio.h> int main () { int ch; ch = _getch(); printf("%d", ch); if (ch == 224) printf (", %d", _getch ()); return (0); } Ao ler uma das 4 flechas o primeiro valor retornado é 224, com isso você deveria saber que é preciso fazer uma nova leitura pois é na segunda leitura que ele retorna um dos valores que você indica(72, 75, 77, 80). Por que acontece isso? Isso é assim para poder diferenciar se se trata das flechas normais ou das flechas do teclado numérico, já .que se tratar das flechas do teclado numérico o programa retorna 0 primeiro e depois(72, 75, 77, 80). Pode ser comprovado isso? Sim claro! De uma olhada neste programa: #include <stdio.h> #include <conio.h> int main () { int ch; while ((ch = _getch()) != 27) /* 27 = Esc key */ { printf("%d", ch); if (ch == 0 || ch == 224) printf (", %d", _getch ()); printf("\n"); } printf("ESC %d\n", ch); return (0); } Este programa vai lhe dar todos os códigos das teclas que forem pulsadas. Recorde que algumas são uma combinação de 2 valores, se getche por exemplo retornar primeiro um 224, você precisa fazer uma nova chamada a getche, pois o seguinte valor retornado se trata do código da tecla, e igual acontece se getche retornar 0, deverá ser invocado novamente para saber de qual tecla se trata, por isso esse programa é muito útil. Espero que com isso tenha ficado claro.
  2. De todas as formas o programa vai lhe retornar os possíveis erros que o impedem ser compilados no console. adicionado 0 minutos depois Se o programa reconhecer o projeto siga adiante. adicionado 1 minuto depois O primeiro passo é abrir o projeto.
  3. normalmente seria voltar a compilar ele com um compilador de 64bits, não teria mais mistérios, isso sim... assumindo que ele tenha sido feito seguindo as normas do padrão de C++, caso contrario pode que tenha que ser modificado em algumas partes.
  4. você precisa se atualizar >_<. Já ta na versão 17
  5. Essa parte está errada. Todo array estático deve ser declarado com um variável constante. Como você recebe num através do scanf, dá erro. @Miguel Nischor Depende que compilador usar. No padrão C99 isso é perfeitamente legal: float read_and_process(int n) { float vals[n]; for (int i = 0; i < n; i++) vals[i] = read_val(); return process(n, vals); } Isso se chama Variable-length array(arrays de tamanho variável). De uma olhada aqui: https://en.wikipedia.org/wiki/Variable-length_array
  6. para nada não... isso não tem utilidade. É para o código ficar bem alinhado. Para mim um código bem alinhado me ajuda na compreensão do testo. Para você ter uma ideia: char email[100]; }agenda={0}; //Prototipos funções básicas int menu(int opc); void tomarDadosContato ( Agenda& contato ); int lerDadosArquivo ( FILE* arquivo, Agenda& contato ); void imprimirContato ( Agenda& contato ); void guardarDadosArquivo ( FILE* arquivo, Agenda* contato ); void pausa(); void limparTela(); void copiar( Agenda* A, Agenda* B ); //Prototipos funções do menú void incluir(); void listar (); void ordenar(); void excluir(); int main (){ //ajusta o console a 70 letras e 50 linhas system("MODE CON cols=70 lines=50"); //Permite letras como ç, ã, á etc setlocale(LC_ALL, "Portuguese"); bool sair = false; int opc = 0; while( !sair ){ switch ( menu(opc) ) { case 1: incluir(); break; case 2: listar (); break; case 3: ordenar(); break; case 4: excluir(); break; case 0: sair = true; break; default: printf( "Não existe essa opcao\n" ); pausa(); break; }//FIN SWITCH }//FIN WHILE Acho melhor que isso: void ordenar(); void excluir(); int main () { //ajusta o console a 70 letras e 50 linhas system("MODE CON cols=70 lines=50"); //Permite letras como ç, ã, á etc setlocale(LC_ALL, "Portuguese"); bool sair = false; int opc = 0; while( !sair ) { switch ( menu(opc) ) { case 1: incluir(); break; case 2: listar (); break; case 3: ordenar(); break; case 4: excluir(); break; case 0: sair = true; break; default: printf( "Não existe essa opcao\n" ); pausa(); break; }//FIN SWITCH Mas isso é gosto de cada um. Com o tem você terá suas preferências também. Eu gosto que o testo ocupe o mínimo de linhas possível, para evitar usar muito a roda do mouse, e que também fique alinhado onde existe muitas repetições, pois me ajuda na hora de ler o código. Sorte
  7. quando se refere a formatar, se refere ao modo em que aparecerá impresso na tela, isso se faz usando os especificadores de formato. Seria mais ou menos isso: printf("123 123 123\n"); printf("%3d ", 9); printf("%3d ", 99); printf("%3d", 999);// <-O ultimo não tem espaço ao final!!! Note que todos os valores tem um tamanho de 3, e estão separados por um espaço, menos no ultimo numero. E note que também estão alinhados ao lado direito(" 9"). Seria possível alinha-los ao lado esquerdo usando valores negativos: printf("123 123 123\n"); printf("%-3d ", 9); printf("%-3d ", 99); printf("%-3d", 999);// <-O ultimo não tem espaço ao final!!! Pratique com os especificadores de formato, suas saídas melhorarão bastante, existem muitos tutoriais por internet sobre isso.
  8. Esse é o programa consertado: #include<iostream> #include <iomanip> /* Dados dia, mês e ano de uma data gregoriana, escreva uma função que converta essa data para data juliana correspondente. Use a seguinte fórmula: Data juliana = (1461*(ano + 4800 +(mes - 14)/12) )/4 + (367 * (mes - 2 - 12 * (( mes - 14)/12)))/ 12 - (3*((ano+4900+(mes-14)/12)/100))/4+dia-32075. Escreva uma função que receba dia, mês e ano e calcule o dia da semana em que caiu essa data. Para isso, basta transformar a data gregoriana em juliana e calcular o resto da divisão da data juliana por 7. A função deverá retornar um número entre 0 e 6 indicando os seguintes resultados: 0 - Segunda-feira 1 - Terça-feira 2 - Quarta-feira 3 - Quinta-feira 4 - Sexta-feira 5 - Sábado 6 - Domingo Faça um calendario anual */ using namespace std; static int ano; int juliana(int dia, int mes, int ano); int diadasemana(int numero); string meses(int m); int dia_mes(int a); bool bissexto(int n); void calendario(int num, int d); int main() { setlocale(LC_ALL, "Portuguese"); //int conv=0; int diames=0; cout<<"Ano: "; cin>>ano; cin.sync(); cout<<endl; for(int mes=1; mes<=12; mes++) { cout << meses(mes); cout<<"\nSeg Ter Qua Qui Sex Sab Dom\n"; diames = dia_mes(mes); //Salta os dias da semana que precisar para coincidir com o ultimo dia da semana do mes anterior. int j = juliana(1, mes, ano)%7; for(int i = 0; i < j; i++){ cout << " "; } for(int dia=1; dia<=diames; dia++) { //conv = diadasemana(juliana(dia, mes, ano)); //sobra essa função aqui-> calendario(conv, dia); //ambas podem ser substituidas pela linha de abaixo printf("%3d ", dia); j++; if( (j % 7) == 0) { cout<<endl; } } cout<<endl<<endl; } return 0; } void calendario(int num, int d) { switch(num) { case 0: printf("%3d ", d); break; case 1: printf("%3d ", d); break; case 2: printf("%3d ", d); break; case 3: printf("%3d ", d); break; case 4: printf("%3d ", d); break; case 5: printf("%3d ", d); break; case 6: printf("%3d ", d); break; } } int juliana(int dia, int mes, int ano) { return (1461*(ano + 4800 +(mes - 14)/12) )/4 + (367 * (mes - 2 - 12 * (( mes - 14)/12)))/ 12 - (3*((ano+4900+(mes-14)/12)/100))/4+dia-32075; } int diadasemana(int numero) { return numero % 7; } //retorna uma literal de string equivalente ao mês recebido por parâmetro string meses(int m) { switch(m){ case 1: return "Janeiro"; case 2: return "\nFevereiro"; case 3: return "\nMarço"; case 4: return "\nAbril"; case 5: return "\nMaio"; case 6: return "\nJunho"; case 7: return "\nJulho"; case 8: return "\nAgosto"; case 9: return "\nSetembro"; case 10: return "\nOutubro"; case 11: return "\nNovembro"; default: return "\nDezembro"; } } //Retorna o número dias que contêm o mês recebido por parâmetro int dia_mes(int a) { if(a == 1 || a == 3 || a == 5 || a == 7 || a == 8 || a == 10 || a == 12) { return 31; } else if(a == 2) { if(bissexto(ano) == true) { return 29; } else { return 28; } } else { return 30; } } bool bissexto(int n) { if((n % 4 == 0) && (n % 100 != 0)) { return true; } else if(n % 400 == 0) { return true; } else { return false; } } Poderia disponibilizar a fonte do tal vídeo no qual usou para realizar o tal exercício? A solução para seu problema é baseada neste video de aqui(Em español) que praticamente é a mesma coisa, porém usa a Congruência de Zeller em vez de Data Juliana, porém o funcionamento é o mesmo, um pouco mais fácil com a Congruência de Zeller acredito.
  9. Seu enunciado ta algo confuso. você tem que informar o numero de vendedores? Precisa informar todos os salários e numero de aparelhos, e depois o programa faria os cálculos, porque se for assim você precisa de um ou dois vetores. Ou bastaria informar o numero de vendedores seria chamado n vezes essa função? Existem varias formas de se fazer isso, precisaria de mais dados.
  10. Se quiser dar uma olhada neste exemplo que fiz uma vez para sfml o deixo aqui: bin.rar você verá algo muito básico como isso: logo preste atenção ao lado direito, há uma barra preta com outra cinza em cima, use as teclas W e S para deslizar o fundo para cima e para baixo. Função de arrastar com o mouse não foi implementada, seria mais natural mas não foi feita, provavelmente não seria muito difícil implementa-la. O interessante deste exemplo é que a maior seja o fundo, mais encolhe a barra cinza, pois a porção a deslocar é maior(conteudo), isso deve ser mudado no código, mas é em sfml, se quiser eu disponibilizo ele para você. Falta muita coisa nesse programa, é somente para ver o nível de dificuldade que teria, e realmente não é muito elevado, é o desconhecimento que o faz parecer difícil. Claro que isso não é exatamente o que você quer, mas já é um começo, te vai dar idéias. Encontrar material que lhe sirva como uma luva justa a perfeição é impossível, você precisa encontrar tutoriais que lhe arrojem uma luz, e lhe de uma direção a seguir. Como falei, talvez muitos poucos programadores tenham feito algo parecido, mesmo porque, quando você precisar de uma textbox com barra de rolagem, como por exemplo em visual studio, Qt, wxwidgets, etc, você vai encontrar tudo mastigado, é só arrastar e soltar, mas nessas bibliotecas 2d não há nada predefinido, foram criadas para isso, para ser levianas, é você quem tem que fazer tudo, então bote a mão na massa e não tenha medo de errar, e fazer experimentos. Sorte.
  11. possível sim é, mas você terá de escrever por completo o programa, a barra deslizante(slide bar), a caixa de testo(test box), etc. Se você estivesse usando SFML seria possivel usar algo já pronto, como isso: Talvez tenha algo pronto igualmente em Allegro, é questão de pesquisar por internet. adicionado 53 minutos depois Para recriar uma textbox esse seria um bom material de estudo: http://csdgn.org/article/scrollbar porém ele é muito genérico, você teria de adapta-lo para que funcione com sua biblioteca.
  12. Eu sei!!! Eu sei!!! Qual sua duvida?
  13. O único modo de fazer isso é declarar ele nas variáveis de ambiente do sistema ou colar ele em uma pasta já declarada, como no caso do notepad.exe, busque no google como fazer isso. Também pode ser feito mediante código, editando o registro do windows, mas isso é algo que requer algo de estudo no google não lhe irei oferecer a tal solução.
  14. No C você não pode dar valor na hora de declarar. E em c++ como diz o aviso, a variável precisa ser estatica, ou usar o c++11 que sim permite. adicionado 2 minutos depois Declarar uma estrutura você realmente não está reservando memória, por isso não há lógica em atribuir um valor a algo que ainda não está em memória, é justo depois de criar declarar a variável do tipo struct que você deve dar valor.
  15. Mas é C ou c++ em que você está fazendo o jogo?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×