Ir ao conteúdo
  • Cadastre-se

cpusam

Membros Plenos
  • Total de itens

    44
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Eu arrumei um emprego com alguns projetos que coloquei no bitbucket e github. Coloquei todos no currículo e na entrevista eu fui perguntado várias vezes sobre cada projeto. Inclusive, sobre meu nível de habilidade com C, C++ e Javascript. Sugiro que você faça jogos, como disse ali o amigo, eles demonstram melhor que você conhece a linguagem e algoritmos. No meu portfólio existem dois jogos, um de mais de 3K linhas e outro de 1200 linhas (um snake). E também o meu melhor projeto que é uma game engine feita em C++ com SDL2, tem mais de 10K linhas. Enfim, segue umas ideias: Você pode usar a lib sdl2 para fazer estes projetos, ela é multiplataforma. 1-fazer um jogo simples de plataforma estilo super mario bros com um boneco que anda e pula, jogo com menu simples clicável, passar fases, mapa de tiles, etc. 2-fazer um snake 3-fazer um jogo da velha com SDL2 4-fazer um jogo do labirinto, aqui você pode usar algum algoritmo de geração de labirintos, pesquise que você encontra na internet o algoritmos. Pra fazer o de plataforma, talvez você sofra muito porque não é nada fácil fazer um, mas o desafio vale muito a pena em questão de conhecimentos.
  2. Um switch menor e mais legível pode ser assim: //3 cases com mesmo código switch (letra) { case 'a': printf("%c", letra); break; case 'c': printf("%c", letra); break; case 'e': printf("%c", letra); break; } //como são o mesmo código no switch, basta fazer assim: switch (letra) { case 'a': case 'c': case 'e': printf("%c", letra); } //esse código acima é o mesmo que esse abaixo: if (letra == 'a' || letra == 'c' || letra == 'e') printf("%c", letra);
  3. Olá, alguém que conheça, poderia me indicar uma placa de som (para comprar) para um computador com ubuntu 18.04? É que eu acabei de ler que o áudio do micrfone do meu pc só funciona melhor em windows, e uma alternativa, segundo onde vi, era comprar uma placa de som externa. Alguém conhece algum modelo? Eu pesquisei no google mas não manjo dessa área e não sei qual a mais indicada. Prefiro uma placa que seja PCI-e, mas se uma de usb for boa também vale. Obrigado adicionado 28 minutos depois Well, eu vi aqui que é melhor escolher pelo chipset, e o CMI-8738 é mais funcional num pc com linux.
  4. cpusam

    C++ fmod() como uso nessa questão

    @Simon Viegas quanto a mediana, é exatamente isso mesmo, eu errei ali na definição. Obrigado pela correção.
  5. cpusam

    C++ fmod() como uso nessa questão

    Certo, agora ficou mais claro. Então, me permita explicar o que eu imagino: Oegando os exemplos: 1-Exemplo de entrada: 2,5,8,4,1. Resultado da media: 10. 2-Exemplo de entrada: 7,5,6,4,3. Resultado da media: 12.5. A média do exemplo 1 seria a soma das entradas divida por 5 (quantidade de números somados). Dividir a soma por 2, na verdade você está pegando a mediana, o valor do meio, da soma, e não exatamente a média. Eu digo isso pra porque é importante não confundir a média com mediana. E observe que estou falando média aqui como média aritmética simples. A média do exemplo 1 seria (2+5+8+4+1) / 5 = 20 / 5 = 4 A mediana do exemplo 1 seria: (2+5+8+4+1) / 2 = 20 / 2 = 10 O mesmo procedimento vale pro exemplo 2. Agora, quanto a fmod, ele tá fazendo o trabalho dele corretamente, o que está acontecendo é apenas que ele pega o número quebrado (float) e então retornar o resto da divisão desse número pelo 2.0. Por exemplo: pegue o çodigo: fmod(soma, 2.0), com soma = 25.1 internamente, o fmod faz uma divisão do valor de soma com o 2.0 e retorna somente o que sobrar. E como 25.1 (a soma) é um número quebrado, então o resto pode ser um número quebrado também. Agora, no primeiro teste que você fez. o n[5] foi colocado assim fmod(n[5], 2.0), e o n[5] era justamente 3. Se você pegar o 3 e dividir por 2 vai sobrar 1, porém, você declarou o n como tendo 5 posições. Nas linguagens de programação, em maior creio, é comum contar começando do 0 e indo até um número específico. Observe que no for, o i começa em 0 e vai até 4 (i < 5) no fmod(n[5], 2.0) você está divindo um valor qualquer *(algum pedaço de memória fora do array n) e então está retornando o módulo dele. Experiemnat fazer o seguinte: -ali onde tem o fmod, coloca n[0] -compila e roda o programa O resultado vai ser o resto do primeiro número por 2.0 Agora faz o seguinte: -coloca o n[5] de novo no fmod -compila o programa -roda o programa várias vezes com quaisquer valores. Você vai ver que mesmo que você repita os valores, ainda assim vai dar diferente. Por quê? Pelo simples fato que o valor de n[5] está uma posição a frente do tamanho do array n. Tipo, o n começa em n[0] //OK o n tem n[1]//OK o n tem n[2]//OK o n tem n[3]//OK o n tem n[4]//OK o n tem n[5]//oh shi?! aqui já mela tudo! Terceiro teste: Ali onde tem fmod, experimenta colocar o n[11] compile e rode o programa Por que deu diferente de novo? Pelo mesmo caso do n[5], esse n[11] está além do tamanho do array, o tamanho do array n começa sempre no 0 e vai até o 4 (por isso o for com i < 5, pois i seria válido até somente 4)
  6. cpusam

    C++ fmod() como uso nessa questão

    Esse while comentado só tá dizendo o seguinte: Enquanto o número na posição de n[5] for diferente de 0 e este mesmo número for par, então, repita o bloco de código. É algo bem esquisito visto que não sei se é esse mesmo o objetivo do programa, já que não vi nem um enunciado. Mas se quiser fazer igual, basta colocar fmod(n[5], 2.0) que vai retornar um número maior ou igual a zero e menor que 2.0. Basicamente éo resto da divisão de n[5] por 2.0. E logo em seguida, você escolhe um meio de verificar se o número é par. Como você está trabalhando com double, vai precisar pensar num modo diferente de avaliar se o número é par.
  7. Vou te dar um exemplo mas sem lhe dar resposta do problema. Exemplo: Vamos supor que você queira mostra a seguinte mensagem: "aqui jas 1 malandro" Pra imprimir essa mensagem basta fazer algo assim: printf("Aqui jas %d malandro\n", 1);//onde tiver o %d vai colocar o 1 e \n é pra pular pra outra linha Agora vamos supor outra coisa, suponha que agora você queira imprimir: "aqui jas 1, 2, 3, 4, 5 malandros" Pra fazer isso você precisa primeiro detectar o padrão recorrente na frase. Digo, o que se repete al? você poderia simplesmente imprimir com: printf("aqui jas %d, %d, %d, %d, %d malandros\n", 1, 2, 3, 4, 5); Observe que é uma quantidade fixa de números e você poderia usar um for: printf("Aqui jas ");//sem pular linha com \n for (int i = 1; i <= 5; i++) { printf("%d,", i);//imprime o valor de i } printf(" malandros\n");//agora coloca a string no final da saída e pula uma linha Mas, e se a quantidade de números for variável? Como fará pra imprimir? Bastaria apenas modificar o for com algum outro valor, tipo: int outroValor = 100; printf("Aqui jas "); for (int i = 1; i <= outroValor; i++){ printf("%d,", i);//imprime o valor de i } printf(" malandros\n");//agora coloca a string no final da saída e pula uma linha Observe que, para imprimir 1,2,3,4,5...100 foi preciso colocar um printf("%d,"i); dentro das chaves do for e assim o for repetiu o bloco de chaves 100 vezes nesse último exemplo.
  8. Não tá tão difícil fazer. Basta apenas ler caractere por caractere e ir ajeitando tudo numa std::string, digo, buffer auxiliar. Por exemplo, vou dizer apenas sobre a conversão de std::string pra binário: -supoondo que você chegou na segunda linha, que é logo após o primeiro '\n'. Como estamos numa linha que é provavelmente um múltiplo de 8, pois, cada byte tem 8 bits, então você deve fazer assim: -no inicio da segunda linha, crie um std::string auxiliar (std::string aux) -depois, leia os próximos 8 chars do arquivo e guarde todos em sequência no aux (exemplo: aux.push_back(charLido)) -agora, depois de ler os 8 próximos chars, você deve converter a string aux para um número binário. Mas pra isso, você deve considerar a ordem dos bits, tipo, eu suponho que seja da direita para esquerda (do último char de aux para o aux[0]) -use um loop indo do fim ao inicio de aux para converter os binários e use if para saber se o char de aux atual é um '1' ou um '0' (isso muda todo o valor final -daí você segue como converter lá o que fala no vídeo -depois você limpa o aux com aux.clear() (vai zerar todo o aux) -pronto, convertido o aux para decimal (ou char no seu caso), você deve ler os próximos 8 chars da segunda linha. E novamente você converte para decimal (ou char) e guarda ele em algum lugar. -repita esse processo até terminar de ler o arquivo. Eu sugiro que não leia todo o conteúdo do arquivo logo de cara, mas faça como um compilador faz: leia char por char (byte por byte). Use um while para ir lendo cara caractere do arquivo, isso é apenas processamento de texto simples, exatamente como faz um compilador. Até.
  9. Já tentou apenas pegar o context webgl e ver se tem as infos que precisa? Ver exemplo aqui com javascript: https://gist.github.com/cvan/042b2448fcecefafbb6a91469484cdf8
  10. Existir, existe sim, porém depende do que você quer. Se você deseja treinar com linguagem pra desktop, como C ou C++ ou outra, é preciso instalar um compilador e uma IDE pra editar os arquivos. Mas se por exemplo, você deseja estudar javascript, você pode fazer um html bem básico e ligar o source do javascript ao html e então ir testando ai mesmo no seu computador. Se em último caso, você não tem um computador, ou prefere o celular pra escrever programas, existem IDEs prontas pra uso, mas são em geral pagas. Vou deixar alguns links pra você dar uma olhada: https://pythonacademy.com.br/blog/desenvolva-aplicativos-para-android-ios-com-python-e-kivy Esse abaixo é ótimo mas é todo em inglês, pelo menos na última vez que vi era: https://www.codecademy.com/ Tem ainda esse aqui, também ótimo: (Aprenda javascript por aqui, todo em português e tem um ótimo fórum de ajuda) https://pt.khanacademy.org/computing/computer-programming
  11. Eu também sou desses ai, mas depois de tanta luta, to perto de ter algum lucro fazendo jogos. Vou indicar as ferramentas que eu mesmo usei, com foco em multiplataforma (não apenas windows): Estude a lib SDL2 Ela é feita em C, mas suporta C++. Baixe ela aqui: https://www.libsdl.org/ Foi praticamente o que me levou ao mundo dos jogos, por isso continua sendo minha lib favorita pra fazer jogos, só que no momento, eu abandonei o desenvolvimento de jogos para desktop. Tenho também uma engine para jogos 2D de plataforma feito com SDL2: https://github.com/algunsnerds/chora_engine Tem ainda outra biblioteca chamada Allegro: https://liballeg.org/ Eu nunca usei assim por mais do que um dia, não que ela seja ruim, ela é ótima, só que eu foquei em aprender com SDL (que na época que usei era 1.2) Notas importantes: -Aprenda a usar a ferramenta git para versionamento e gerenciamento do projeto. Assim você não se perde com tanto código, porque cresce bastante mesmo. -Se não quer fazer jogos só para desktop, teste se seu PC consegue rodar jogos em html5, feitos com a engine Phaser 3: Ver aqui: https://phaser.io/ -Acima de tudo meu caro aspirante, aprenda inglês, porque a maioria dos tutoriais é escrito em inglês. Até a qualidade deles varia também quando são traduzidos. Se não pode pagar por cursos, não tem problema, aprenda inglês (pelo menos ler e escrever), pelo duolingo: https://pt.duolingo.com/ Boa sorte ai.
  12. Isso que você quer é impossível do jeito que pensou em fazer. Se quiser rodar um comando, vai ter de implentar algo mais realista. Tipo, um if else if que seleciona qual comando executar, ou ainda, se você quiser mostrar mais serviço, faça um parser de strings que vasculha a string e roda o comando pelo nome dele com base no conteúdo da string. Igualzinho funções de interpretador, tipo, lua, python, etc e tal.
  13. Anos atrás, eu traduzi um tutorial justamente de um tetris em C com SDL. Vou procurar aqui, se eu achar eu posto o link pra você baixar. adicionado 5 minutos depois Ops, me enganei na linguagem. No tutorial é usado C++, você vai precisar adaptar, ver abaixo: http://bit.ly/tetristutorial
  14. obrigado pela correção ai @BEZERRA_BRITO fiz a correção das chaves cobfiando no código. Enfim, valeu ai.
  15. Uma coisa que você poderia fazer pra evitar o excesso de chaves: verificar se não abriu o arqui com o if e retornar depois em caso afirmativo. Por exemplo, vou ajustar seu código, veja por si mesmo como fica diferente, fica mais legível a leitura. Ver abaixo: void bestScore( int pontos ){ FILE *p; int best=0; int best2=0; p=fopen("ranking.qz","rb"); if (p == NULL){ printf("Erro ao abrir o arquivo"); //agora retorna da função neste ponto return; } fread(best,sizeof(pontos),1,p); fclose(p); if (pontos <= best) //aqui retorna porque os pontos lidos são piores que o best return; //reabre o arquivo em modo escrita p=fopen("ranking.qz","wb"); if (p ==NULL){ printf("Erro ao abrir o arquivo."); return; } fputs(pontos,p); fclose(p); printf("conseguiu! %i",best); } Observe que você ainda pode separar essa função em duas, tipo, uma que somente lê o score, e a outra que somente grava o score e daí você evita que a função fique com tarefas excessivas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!