Ir ao conteúdo
  • Cadastre-se

cpusam

Membros Plenos
  • Total de itens

    29
  • Registro em

  • Última visita

  • Qualificações

    N/D

Tudo que cpusam postou

  1. Deixa eu ajudar com um mais compacto: #include <iostream> using namespace std; int main() { int dia, mes; do { cout << "Dia do Nascimento:"<<endl; cin >> dia; cout << "Mês do Nascimento:"<<endl; cin >> mes; } while (dia != 27 || mes != 9); cout<<"Feliz Aniversário Joyce Aline"<<endl; return 0; } Esse código acima segue convenções típicas da área. Ou 2 espaços como tabulação e nada de código C (só C++). Ali o while vai obrigar a digitar dia = 27 e mes = 9, por isso quando sair, dia e mes serão 27 e 9 respectivamente.
  2. Acontece que isso é um erro de conversão de tipos e assim o valor fica arredondado. Ali onde você divide o quantidade pelo total, deveria ter um cast no total, assim: porccand1 = (cand1/(float)total) * 100 e assim o valor do resultado da divisão será um float e não int. Você pode ainda mudar o tipo do total e das outras variáveis declaradas como int lá no início do main e mudar para float ou double, e com isso ela teriam precisão com ponto flutuante (valores depois da vírgula). Lembre que int é um número que não tem vírgula, int é de integer (ou inteiro em português). Se dividir por exemplo, 25 / 10 e guardar esse valor numa variável do tipo int, você não terá 2.5, mas sim o valor 2 (inteiro).
  3. Tem que ser ele? Não pode ser um VS code? Um code::blocks? Ou mesmo um CLion?
  4. Vim só falar dessa instituição ai, deve ser muito prazeroso comer na lanchonete do sistema dessa instituição tigresa vip LTA. Dizem as más línguas que o cural dela é muito saboroso. hahaha desculpa aí cara mas eu ri demais vendo o nome da instituição.
  5. @mick 07 valeu a info. Agradeço também a quem melhorou o título do post.
  6. Por que não vejo minha assinatura no meu Android? Ou ela foi removida sem ninguém me avisar? Alguém poderia me dizer se minha assinatura de antes estava contra as regras do site?
  7. cpusam

    C Preciso de um auxilio

    sim, mas qual a dúvida?
  8. Ali depois de int i=0; coloque essa linha abaixo: p = pessoas; é que o ponteiro p não tá apontando pra um endereço válido. Nessa linha acima, ele vai apontar pro endereço do vetor 'pessoas'.
  9. Vou colocar comentários pra você mesmo corrigir: #include<iostream> using namespace std; int main() { int i, n, long;//'long' erro: não coloque o nome de long numa variavél, long é um tipo cout <<"Informe um numero: " << endl;; //pra efetuar o cálculo, só precisa ler somente UM número n //Observe: não pode ser menor que 1 cin>>i>> n; long fat = 1; for (i=1; i<=n; i++) { fat = fat * i; } //coloque para imprimir o 'fat' aqui cout << " O fatorial de eh: " << end;;//erro: é endl não end return 0; }
  10. Olá, tava aqui pensando: será possível eu controlar instrução por instrução e visualizar em que endereço do arquivo estou? Por exemplo, vamos supor que eu tenha um exe de 1024 bytes O que eu quero é: executar o exe, mas controlar pelo teclado a execução, digo, controlar se vai para a pŕoxima instrução. Então, visualizar de alguma forma onde estou nessas instrução. Não sei se fui claro, mas o que eu quero é uma espécie de debugger, mas não exatamente um. Quero apenas visualizar as instruções sendo executadas uma por uma. Alguém conhece algum programa pra isso? Será que dá pra usar o GDB? nota ainda preciso aprender a debugar com o gdb adicionado 6 minutos depois Opa, acabei descobrindo o winedbg depois de muita pesquisa. Valeu
  11. cpusam

    C++ exe cem para um

    Vou aproveitar pra dar uma resposta derivada mas um pouco mais ineficiente: for (int i = 0; i < 100; i++) std::cout<<(100 - i)<<std::endl;
  12. Fale como eram os gráficos, se era estilo 8 bit (que nem nintendinho) ou 16 bit como super nintendo. Será esse: https://en.wikipedia.org/wiki/Chip's_Challenge Na capa é um rapaz de cabelo preto, mas não parece no jogo.
  13. O código tá bom, parabéns. Só que tenho que chamar tua atenção pra certas coisas que observei logo de cara: 1-inclusão de headers sem necessidade Ali você inclui mais headers do que necessita de fato. Só devemos incluir headers (os #include <>) que vamos usar alguma função dele. 2-na lógica do while e if em seguida Se o usuário digitar por exemplo 's' (minúsculo), o programa vai deixar de pedir números e vai pro if, dai como yes é 's' aqui, não vai excutar o corpo do if. Sendo assim, faria mais sentido colocar a mensagem do if fora dele e ajeitar o while para algo como: do{ ... resto do código aqui } while (yes != 'N' || yes != 'n'); //traduzindo: enquanto yes for diferente de 'N' ou yes diferente de 'n' (minusculo), volte e execute o while Com isso, quando saisse do while, a variável yes seria: ou 'N' (maiusculo) ou 'n' (minusculo) 3-o return 0 tente manter o return 0 apenas no escopo do main, digo, escopo é entre chaves {} Exemplo int main(void) {//chave do main if (yes == 'N') {//chave do if }//chave do if return 0; //entre as chaves do main }//chave do main
  14. Tem um problema que pode atrapalhar se usar a função rand() e pegar só o resto da divisão. É relacionado com o byte, digo, rand()%10 estamos apenas usando os bytes menos significativos do resultado, daí pode ser que haja inconcistencia ou repetição de números pseudo aleatórios muito frequente. Por exemplo, poderemos não ter uma boa "randoness" usando a forma rand()%10, dai pode ser que o valor se repita com muita frequencia. Pra evitar isso devemos usar os bytes mais significativos do int, assim: float n = rand()/(float)(RAND_MAX+1.0f); //RAND_MAX é definido em stdlib se não me engano Dai esse 'n' agora será um número positivo entre 0 e 1 (exemplo 0.2129) e pra pegar um float entre 1 e 2 basta fazer: float n = rand()/(float)(RAND_MAX+1.0f); //RAND_MAX é definido em stdlib se não me engano float outro = 1.0f + (2.0f-1.0f) * n;
  15. Vou deixar alguns links pra você dar uma olhada: https://pt.wikipedia.org/wiki/JSON Como ler um arquivo JSON no java e que esteja na internet?: https://pt.stackoverflow.com/questions/6344/capturar-os-valores-do-json-que-está-online Quanto a engenharia reversa, não se preocupe com isso, qualquer software está a mercer de sofrer engenharia reversa. Se estiver com excesso de preocupação então use um ofuscador de código no seu arquivo jar. No android existe o Proguard (que vem ativado por padrão, não sei se há outra alternativa semelhante pra desktops.
  16. Isso você pode fazer no jogo com facilidade, ainda mais usando java. Tipo, você tem o sitedojogo.com.br, dai no seu jogo você se conecta nesse site e verifica se tem uma atualização disponível, se tiver você baixa tudo que precisa do ip do sitedojogo. Eu nunca fiz algo do tipo mas acredito que não teria dificuldade em criar algo assim. No caso do sitedojogo, você poderia deixar um txt no domínio e dai você baixaria o txt que contém as infos como arquivos novos para baixar, link base do novo executável, etc e tal. Poderia ser até um json.
  17. Pra colidir com o mapa não precisa de função de bounding box (a função colisão), mas precisa apenas saber onde o mapa está e também o tamanho do tile (célula do mapa). Por exemplo, você pode criar uma função getTileAt (int x, int y) que retorna um int do mapa onde o x e y são coordenadas dentro ou fora do mapa. Você tem de verificar quando o x e y está fora ou dentro do mapa, se está dentro, retorna o int (tile) na posição coluna=x / tilesize e linha=y / tilesize. Veja um exemplo comum de getTileAt: class TileMap { int map[100][100];//um mapa de no máximo 100x100 tiles de largura por altura int w, h;//largura w por altura h, menor que 100 e maior que 0 int tilesize; ...//outros códigos //NOTA: aqui, recebe coordenadas relativa ao mundo int getTileAt ( int x, int y ) { //agora converte as coordenas do mundo em coordenadas do mapa x = x / tilesize; y = y / tilesize; //verifica se está fora do mapa if (x < 0 || y < 0 || x >= w || y >= h) return 0;//zero é sem tile ou vazio //retorna a linha e coluna (céluna) do mapa return map[y][x]; } }; Dai por exemplo, se quiser verificar se o player colidiu com um objeto sólido faça algo assim: if (tilemap.getTileAt(rectPlayer.x, rectPlayer.y + rectPlayer.h) == 1 || tilemap.getTileAt(rectPlayer.x + rectPlayer.w, rectPlayer.y + rectPlayer.h) == 1) colidiu com tile sólido de valor 1 tilemap é o objeto do tipo TileMap rectPlayer é o retangulo do corpo do player, x/y posilção x e y no mundo, w/h largura/altura do rect do player Observe que, com essa única função no TileMap, você pode implementar colisão estilo plataforma. Não vou entrar nesses detalhes porque isso envolveria uma explicação bem longa, mas você pode estudar esse código aqui da minha engine: https://github.com/algunsnerds/chora_engine/blob/master/platform/tilemap.cpp É uma engine bem simples, fiz ela apenas como meio de aprender melhor programação. Essa classe ai que uso, você pode ver a outra no mesmo repo chamada Entity que implementa colisão estilo super mario bros. É bem útil pra estudar.
  18. Sim, agora está perfeito. Como eu disse, não há uma taxa de mortes, daí é esperado que o incremento da taxa de nascimentos sirva pra a população de A passar a de B.
  19. Tudo que eu falei não tem quase nenhum comando, mas são coisas bem genéricas, loip era pra informar que estamos no loop 1 do for ou while que são comandos da linguagem. Eu vou dormir agora por isso não vou voltar aqui. De qualquer forma, até mais.
  20. certo, nçao sendo exercício vou te dar um crédito. Nessa questão tem algo bem interessante nela que envolve simulação de sistemas dinâmicos, to falando apenas pra você se inteirar sobre esse assunto, mas não é necessário pra responder a pergunta. Na dinâmica de sistemas perguntas como essa são respondidas por meio de simulação de sistemas complexos, como a dinâmica populacional, stock and flow é apenas uma das bases que demorei pegar porque não achei exemplos suficientes que não fossem usando programas pagos e que não rodam no meu pc, pra azar meu (sorte no meu ponto de vista). Enfim, nessa questão você tem de achar exatamente onde a população de A passa a de B ou cruza com ela num ponto de interseção. Nesse caso é preciso simular a passagem do tempo, em anos, digo, usar um for ou while (porque não um if e goto?) pra iterar aumentando a taxa relativa a cada crescimento. Por exemplo, vamos supor que comece agora, nesse ano, então estamos no ano 0, loop 1, ano que vem será o ano 1, loop 2, depois ano 2, loop 3, ect até que a população de A seja maior ou igual a de B. Só que o seguinte, ninguém vive pra sempre nesse pequeno asteróide chamado terra, sendo assim, essa questão não simula uma real dinânmica de sistemas, ou melhor, não existe uma taxa de mortes por ano em cada país, mas apenas crescimento. Por exemplo, fazer um programa desse pra ser usado pelo IBGE do mesmo modo que foi descrito acima, ia dar uma baita irrealidade, digo, os dados ia sair fora do previsto e não ia nem chegar perto da possível realidade dos BR, que gostam de fazer filhos feito coelhos. vamos a um exemplo mais claro: loop 1, ano 0: populacaoA = 90M populacaoB = 200M loop 2, ano 1 populacaoA = 90M + 90M * 3% populacaoB = 200M + 200M * 1.5% E pra ser genérico, num único loop, for ou while infinito: loop N, ano N - 1 populacaoA = populacaoA + populacaoA * 3% populacaoB = populacaoB + populacaoB * 1.5% Só transformar isso em código e a cada final de loop verificar se a populacaoA >= populacaiB, se for então quebre o loop infinito com um break e fora dele, imprima o valor de populacaoA e populacaoB NOTA: não estou usando código propriamente dito pra que você possa estudar sozinho. Não é que eu seja ruim, acredite, isso é com a melhor das intenções, e lhe fará um bem danado. Agora é só fazer o código, já tem um meio de como ele será. Só pôr a mão na massa. adicionado 5 minutos depois NOTA 2: como na questão pede pra só contar os anos que levam pra ser amior ou igual, coloque também um contador do tipo int pra contar quantos anos passam até que a populacaoA >= populacaoB
  21. Só uma dica, quando for postar exercício, tente postar também a sua dúvida, o exercício não é dúvida. Por exemplo, "...estou com dificuldade de fazer a soma da taxa da população, como proceder?" Isso daria um norte até mesmo pra quem vai lhe ajudar e creio que assim você receba uma resposta bem mais rápida e certeira, mais do que expor o exercício.
  22. Você tem de rever certas coisas em seu código, como por exemplo aquela linha onde está o size_t tam = sizeof(ares)... porque nesse ponto ai onde tem o sizeof(ares) vai dar 8 num pc 64 bits, 8 por ser o tamanho em bytes do ponteiro 'ares'. Eu sugiro que você crie outra struct pra armazenar o tamanho do vetor arestas e também armazenar os ponteiros alocados do tipo ArestaPonderada, aqui uma lista ligada seria suficiente. Observe também na linha com arestas = (int*) malloc(c * sizeof(struct ArestaPonderada)); na função iniciar e em outros lugares também. Aqui você está tentando converter o retorno de malloc para int *, sendo arestas do tipo ArestaPonderada. Pode ser que algum compilador deixe isso passar, mas se for usar o gcc ou algo similar ele vai acusar um erro nesse ponto. E quanto a obter um inteiro negativo, eu diria que é devido acessar áreas de memória não válida, ou seja, era pra ter dado ai o famoso "segment fault" ou outro comportamento inesperado qualquer, nunca se sabe onde um ponteiro não iniciado vai estar apontado caso você não tome as devidas providências, como pré-iniciar com NULL
  23. Lembro que eu fiz um jogo desses em C com SDL1.2 na época. Ver aqui o código: https://www.vivaolinux.com.br/script/Jogo-Windows-Invaders-(com-graficos) O código tá bem feio, não espere muita coisa, mas você pode ver os mais básicos conceitos nele, como desenhar varais imagens numa matriz, mover objetos no cenario, colisão, etc e tal.
  24. Só pra windows? Sempre quis saber como fazer gráficos sem uso de opengl ou directx, fiquei até curioso como você desenha na tela sem essas tecnologias.

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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!