Ir ao conteúdo

AdrianoSiqueira

Membro Pleno
  • Posts

    1.273
  • Cadastrado em

  • Última visita

Tudo que AdrianoSiqueira postou

  1. Que da hora, não sabia disso. Isso poderia ter poupado muita dor de cabeça no passado :
  2. @arfneto, variáveis estáticas em C funcionam igual os atributos estáticos do Java?
  3. A única solução que eu consigo pensar, é usando uma variável de controle e uma de limite. Assim:
  4. <apagado> Não prestei atenção na recursividade.
  5. No catch, separa as exceções IOException da FileNotFoundException (vai ficar com dois catches), coloca sua mensagem no catch do FileNotFoundException.
  6. O tópico é bem antigo, mas só para registrar uma solução segue essa:
  7. Dê uma olhada nesse tópico (inglês), aparentemente tem algo a ver com criptografia da pasta home.
  8. Seu código tem uma série de erros, você tentou "traduzir" ele de alguma outra linguagem? Aplicada as correções de sintaxe, ele ficou assim:
  9. Basicamente, a cada ciclo do menu é criada uma lista nova vazia. E essas listas são criadas uma por cima da outra, dessa maneira, na primeira iteração você adiciona um livro, daí o ciclo termina e é criada uma nova lista vazia, aí quando você tenta acessar, não recebe nada. Algumas dicas: Separe o programa em classes bem definidas. Por exemplo, a classe Livro é uma classe de modelagem, ela não precisa (e nem deveria) ter um método menu, pois não é responsabilidade dela. Crie uma classe responsável por armazenar a lista de Livro, nessa classe você implementa as operações de inserção, remoção, consulta, etc. Crie uma classe separada para ser sua classe Principal, ela vai possuir o método main e é nela que você cria a classe que gerencia os livros (item anterior). Nessa classe você também pode implementar o menu. Caso não queira (recomendável), você pode criar uma classe para trabalhar com a interação com o usuário, por exemplo o menu, as entradas de dados do teclado, etc. Organiza esse código (recomendo começar de novo), separa as classes com calma e lembre-se: "Uma classe só deve fazer o que ela se propõe a fazer". Qualquer dúvida estamos aqui. Segue um esqueleto aplicando o que eu disse: Livro Biblioteca Interador Principal
  10. Algumas coisas: Suas classes possuem um alto acoplamento entre seus métodos, isso nem sempre é algo bom. A lógica que você usou está demasiadamente complexa. Algumas dicas: Procure definir funções bem específicas para seus métodos. Procure deixar seus métodos o mais independente quanto possível, isso diminui o acoplamento, facilitando a manutenção futura no seu código. Compare com esse código: Texto.java TextoTest.java
  11. Parece que você esqueceu de fechar uma chave ( } ) em algum lugar. Dê uma olhada nos lugares onde começa e termina suas funções e veja se todas as chaves abertas foram devidamente fechadas.
  12. Você mediu com outro dispositivo além do computador?
  13. Você tentou fazer alguma coisa nele? Uma formatação talvez, ou mexeu com alguma partição?
  14. Veja nas configurações do roteador se tem algum tipo de limitação de banda. Um roteador limitar a 20 megas é "muito pra cabeça".
  15. Faz assim que funciona. ContarPalavras.zip
  16. Se quiser, pode se inspirar nessa ideia. Esse código funciona de forma automatizada, mas com algumas pequenas modificações pode atender a sua necessidade. #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX_CARTA 40 #define MAX_JOGADOR 2 typedef struct { char nipe; double valor; } Carta; typedef struct { char nome[256]; double ponto; } Jogador; void imprimirCartas(Carta *cartas); void imprimirJogadores(Jogador *jogadores); int remover(Carta *cartas, int tamanho, int posicao); int sortearCarta(int quantidade); int main() { srandom(time(NULL)); /* * [ C ] - Copa * [ E ] - Espada * [ O ] - Ouro * [ P ] - Paus */ Carta cartas[MAX_CARTA] = { (Carta) {'C', 0.5}, (Carta) {'C', 0.5}, (Carta) {'C', 0.5}, (Carta) {'C', 1}, (Carta) {'C', 2}, (Carta) {'C', 3}, (Carta) {'C', 4}, (Carta) {'C', 5}, (Carta) {'C', 6}, (Carta) {'C', 7}, (Carta) {'E', 0.5}, (Carta) {'E', 0.5}, (Carta) {'E', 0.5}, (Carta) {'E', 1}, (Carta) {'E', 2}, (Carta) {'E', 3}, (Carta) {'E', 4}, (Carta) {'E', 5}, (Carta) {'E', 6}, (Carta) {'E', 7}, (Carta) {'O', 0.5}, (Carta) {'O', 0.5}, (Carta) {'O', 0.5}, (Carta) {'O', 1}, (Carta) {'O', 2}, (Carta) {'O', 3}, (Carta) {'O', 4}, (Carta) {'O', 5}, (Carta) {'O', 6}, (Carta) {'O', 7}, (Carta) {'P', 0.5}, (Carta) {'P', 0.5}, (Carta) {'P', 0.5}, (Carta) {'P', 1}, (Carta) {'P', 2}, (Carta) {'P', 3}, (Carta) {'P', 4}, (Carta) {'P', 5}, (Carta) {'P', 6}, (Carta) {'P', 7} }; Jogador jogadores[MAX_JOGADOR] = { (Jogador) {"Computador", 0.0}, (Jogador) {"Jogador", 0.0} }; double pontoDerrota = 7.5; int quantidade = MAX_CARTA; int vez = 0; int carta = 0; while (jogadores[0].ponto <= pontoDerrota && jogadores[1].ponto <= pontoDerrota) { printf("Vez do %s: ", jogadores[vez].nome); carta = sortearCarta(quantidade); jogadores[vez].ponto += cartas[carta].valor; quantidade = remover(cartas, quantidade, carta); vez = (vez == 0) ? 1 : 0; } imprimirCartas(cartas); imprimirJogadores(jogadores); return EXIT_SUCCESS; } void imprimirCartas(Carta *cartas) { printf(">> Cartas \n"); printf("-------------------------------------------------- \n"); for (int i = 0; i < MAX_CARTA; ++i) { printf("{%c, %.1f} ", cartas[i].nipe, cartas[i].valor); if ((i + 1) % 10 == 0) { printf("\n"); } } printf("-------------------------------------------------- \n"); } void imprimirJogadores(Jogador *jogadores) { printf(">> Jogadores \n"); printf("-------------------------------------------------- \n"); for (int i = 0; i < MAX_JOGADOR; ++i) { printf("{%s, %.1f} \n", jogadores[i].nome, jogadores[i].ponto); } printf("-------------------------------------------------- \n"); } int remover(Carta *cartas, int tamanho, int posicao) { if (posicao > tamanho) { fprintf(stderr, "[ E ]: Posicao invalida. \n"); return tamanho; } for (int i = posicao; i < MAX_CARTA - 1; ++i) { cartas[i] = cartas[i + 1]; } cartas[MAX_CARTA - 1] = (Carta) {' ', 0.0}; return tamanho - 1; } int sortearCarta(int quantidade) { return (int) random() % quantidade; }
  17. Para alternar entre os jogadores, use uma variável que servirá de switch: int vez = 0; // ... vez = (vez == 0) ? 1 : 0; // ... Para evitar cartas repetidas, crie uma estrutura que represente uma carta: typedef struct { char nipe; // C - E - O - P int valor; // 1 .. 7 } Carta; E crie um vetor com todas as cartas possíveis: Carta cartas[40]; Para sortear uma carta, gere um número aleatório que esteja dentro dos limites de posição desse vetor (0 - 39 na primeira rodada. 0 - 38 na segunda e assim por diante). Depois crie um mecanismo para que cada carta sorteada seja retirada desse vetor. Seria bom criar uma estrutura que represente o jogador (tanto pessoa, quanto o PC ). typedef struct { char nome[256]; double pontos; } Jogador; Execute o programa até que os pontos de algum jogador exceda o limite máximo.
  18. Entendi, vou confiar mais no IDE, ele é mais esperto do que eu . @arfneto, obrigado pela explicação.
  19. O primeiro argumento espera um ponteiro para uma string, enquanto o segundo é uma string. Se quiser postar seu código, a gente vê certinho o que está acontecendo. De qualquer forma, o problema está em algum parâmetro de função.
  20. Pode se basear por esse código, mas vai ter que adaptá-lo para usar no seu problema:
  21. Dê uma olhada nesse site, tem a explicação e exemplos em várias linguagens.
  22. Estou com uma dúvida sobre construtores, meu IDE (CLion) por padrão cria eles assim: Pessoa::Pessoa(int idade) : idade(idade) {} Mas se eu fizer assim também funciona: Pessoa::Pessoa(int idade) { this->idade = idade; } O arquivo Pessoa.h está assim: class Pessoa { public: int idade; Pessoa(int idade); }; Queria saber a diferença (se é que há alguma) entre as implementações dos construtores. Desde já obrigado.
  23. Faltou calcular os espaços extras individuais de cada linha. Pode ser feito assim:
  24. Ou poderia armazenar dois objetos (campeão e vice), e rode um loop para encontrar o campeão (como faria normalmente), mas quando encontrar um competidor com pontuação maior do que o maior, você armazena os pontos do campeão no vice e depois armazena a pontuação encontrada no campeão. No final você terá a pontuação do campeão e do vice. Algo mais ou menos assim: if (ponto > campeao) { vice = campeao; campeao = ponto; }
  25. Você já tem a estrutura, agora falta criar o vetor e as funções de inserção. Eu recomendo no lugar do vetor, usar uma lista dinâmica, assim você não se preocupa com a quantidade de items que sua coleção terá. Comece criando as funções necessárias: adicionar, contarPorTipo, contarPorNome e selecionarMaisPesado (nomes sugeridos). Todos os métodos recebem o vetor (ou a lista), a função adicionar recebe também o novo elemento que deverá ser inserido. Desenvolva o esqueleto do projeto e poste aqui para darmos continuidade. Não podemos entregar o código pronto, pois é contra as regras do fórum.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!