Ir ao conteúdo
  • Cadastre-se

isrnick

Membro Pleno
  • Posts

    1.550
  • Cadastrado em

  • Última visita

Tudo que isrnick postou

  1. Aliás a título de curiosidade o argumento para usar -1 ao invés de 1 para indicar quando é VERDADEIRO é por causa da forma binária. -1 fica como ..111111111 (todos os bits igual 1) na forma binária. Enquanto 1 fica como ..00000001 (só 1 bit fica igual a 1). E o 0 obviamente é ..0000000 (todos os bits iguais a 0). Então dá para dizer que -1 é o total oposto de 0 na forma binária, enquanto o 1 só é diferente em 1 bit do 0. Logo, -1 representa melhor o estado oposto de 0 == FALSO. Tem até uma discussão de que usando -1 teria menos risco de uma falha na memória mudar o estado de VERDADEIRO para FALSO e vice-versa, e gerar resultados oposto ao esperado na execução do programa, pois seria necessário que a falha invertesse todos os bits para transformar um -1 em um 0 e vice-versa.
  2. Não é que está em direção ao centro, é que todos os valores são diferentes (não tem repetidos), e todos os valores estão inclusos no intervalo (não pula nenhum número entre o maior e o menor número), e a altura de cada ponto indica qual é maior, então acaba que o maior fica no canto superior direito e o menor no canto inferior esquerdo, com todos os outros em ordem crescente no meio (ou seja estão ordenados), o que acaba formando uma reta na diagonal.
  3. s é o nome que eu dei para essa variável, você pode usar qualquer outro nome. string banana;
  4. @Mauro Britivaldo não, esse -1 aí não é para gerar exceção, é para retornar TRUE/VERDADEIRO. O retorno dessa função é para ser usada em um if desse tipo: if( lista_vazia(lista) ){ //faz algo } Logo, retornar -1 é o mesmo que retornar que a lista está vazia.
  5. Não é complicado, seria algo parecido com isso: #include <iostream> #include <string> using namespace std; int main() { int qtdSim = 0; string s; cout<<"Telefonou para a vitima? "; cin>>s; if(s == "Sim" || s == "sim" || s == "SIM"){ qtdSim = qtdSim + 1; } cout<<"voce esteve no local do crime? "; cin>>s; if(s == "Sim" || s == "sim" || s == "SIM"){ qtdSim = qtdSim + 1; } cout<<qtdSim<<endl; return 0; } Observe que s não é um int mas sim uma string.
  6. @Mauro Britivaldo É que nesse tópico ficou confuso porque a informação está espalhada em vários posts, mas tem outro tópico de outra pessoa com a mesma questão, que o mesmo código é fornecido: Eles tem até o mesmo professor, devem ser da mesma turma.
  7. @Brendo Washingtonn O fórum está aqui para tirar dúvidas, não tem nada de causar aborrecimento, pode continuar perguntando até tirar todas que tiver. E sim, existe. Teria que armazenar a resposta do usuário em um objeto da classe string, testar se a resposta é igual a "sim", e aí somar 1 no contador se for igual.
  8. @Mauro Britivaldo De qualquer maneira nesse caso não é responsabilidade do aluno, essas funções de checagem já foram fornecidas (presumidamente pelo professor) e a única coisa que é pedido para o aluno fazer é a função para inserir no fim da lista.
  9. Só pode deixar sem { } quando dentro do bloco só tem 1 única linha de comando, se tiver mais de 1 é obrigatório colocar o { }. if (a == b) { c = 4 * d; } //é igual a: if (a == b) c = 4 * d; //e também: if (a == b) c = 4 * d; Mas não pode fazer neste caso: if (a == b) { c = 4 * d; d++; } Pois: if (a == b) c = 4 * d; d++; //na verdade é igual a: if (a == b) { c = 4 * d; } d++; //Que faz algo bem diferente do original Algumas pessoas até preferem sempre colocar { } em todos os casos só manter a consistência, mas aí é uma questão de preferência.
  10. @arfneto Esse GIF que postei é da Wikipedia (aliás só peguei o endereço da imagem e postei aqui, se olhar os detalhes da imagem vai ver que a URL é da Wikipedia), mas é da versão em inglês do artigo sobre o Bubble Sort (que aliás é sempre muito mais completa que a versão em português). https://en.wikipedia.org/wiki/Bubble_sort E segue link Wikipedia do seu GIF bonitinho também:
  11. Não pois ele só testaria esse if se os ifs anteriores foram ambos falsos, é exatamente para isso que serve o else (=senão) que tem no else if, então já testou que qtdSim não é <= 1 nem ==2, logo só vai entrar nesse if se for 3 ou 4.
  12. Não faltou não, meu código já considera o 3, segundo o enunciado para 3 ou 4 ele é Cúmplice, que é o que meu código faz.
  13. if (qtdSim <= 1){ cout<<"Inocente "; } else if (qtdSim == 2){ cout<<"Suspeito "; } else if (qtdSim <= 4){ cout<<"Cumplice "; } else { cout<<"Assassino "; }
  14. Gif do Bubble Sort: Sim, tecnicamente é desnecessário, mas o exemplo de entradas usa o texto "cod" ao invés de um número. (Principalmente se a resposta for testada por um programa ao invés do professor, qualquer mudança é considerada um erro pelo programa.)
  15. Bubble Sort é bem simples, você percorre a lista várias vezes do começo até a penúltima, e compara o item atual da lista com o próximo, se o próximo for menor que o atual então deve trocar os items de posição, assim os menores vão sendo movidos para o começo da lista, para uma lista com N items percorre a lista inteira N-1 vezes fazendo trocas e vai obter a lista ordenada, ou então pode parar de percorrer se percorrer a lista inteira uma vez sem fazer nenhuma troca.
  16. Tem sérios problemas de recursão descontrolada no código, seu programa chama as funções mas nunca finaliza e retorna delas, pois ao invés de usar return ou deixar chegar ao fim do código da função (quando a função é void) você faz uma chamada para uma nova instancia da função do nível anterior. Veja um exemplo do que seu programa pode fazer ao chamar novamente as funções (ao invés de retornar): main -> Menu -> Gamemode -> VersusCOM -> GameMode -> Menu -> GameMode -> VersusHuman Observe que toda vez você chama a função e então no exemplo acima tem 3 funções Gamemode carregadas, 2 Menu, e 1 VersusCom carregados na memória, incluindo as variáveis criadas nelas que não está mais usando, enquanto está jogando no VersusHuman.
  17. @Julia Leite Você declarou ord com um int: int TAM,TAM2,i,ord; mas deveria ser um vetor de char.
  18. Esse tipo de exercício é melhor fazer num papel primeiro, escreve a matriz e os números das linhas e colunas e tenta achar qual é a relação entre o número e seus respectivos índices de linha e de coluna. Comece pelos números maior que 0, que é mais fácil achar a relação. E depois pense em que relação todos os índices de linha e de coluna das casas que recebem 0 tem em comum entre si, e vai perceber qual a condição para uma casa receber 0 ao invés de outro número.
  19. No caso do empate? Pode sim, conta quantos ' ' tem e se for igual a 0 retorna deu empate. Também pode fazer assim: int tied = 1; for (i=0; i<9; i++){ if (house[i] == ' '){ tied = 0; break; } } if (tied) return 0; Ou seja, procura por ' ' no vetor todo, se encontrar algum não empatou (tied=0) então pode parar de procurar (break). Obs: tied = empatou em inglês também poderia usar draw ou broke/break even.
  20. Editei e corrigi a parte do empate da função Verify() que ainda estava usando a variável winner. adicionado 4 minutos depois Edit: Vai estar tudo diferente de ' ', entendi....
  21. A função não está perguntando "A lista foi criada?". A pergunta "A lista está vazia?" só pode ser respondida com sim ou não, verdadeiro ou falso. Não dá para retornar 3 estados lógicos diferentes, só existe true e false. Então só dá para considerar que a li==NULL é vazia. Do contrário deveria considerar um erro e assumir que a lista existe quando a função foi chamada e nem examinar o caso do NULL: int lista_vazia(Lista* li) { return (li->qtde == 0); } Mas ainda considero o caso de li==NULL é vazio descreve melhor, mas aí vira questão conceitual/interpretativa e depende de preferência de quem está programando.
  22. @Mauro Britivaldo Você indicou o trecho errado de código, queria dizer esse: int lista_vazia(Lista* li) { if (li == NULL) return -1; return (li->qtde == 0); }; E quando li == NULL tem que retornar que está vazia, do contrário seria pior retornaria que ela existe e não está vazia, ou seja tem items inseridos.
  23. Note que você não incluiu o código importado do Facilitador.h então não dá para nós compilarmos. Jogo da velha tem 9 casas então TAM deveria ser igual a 9. A função Verify() poderia ser simplificada para algo desse tipo: int Verify() { // winner = 1 é Player um - winner = 2 é player dois - winner = 0 é empate; int i; // Verifica linhas; for(i=0; i<3; i++){ if(house[i*3] == house[i*3+1] && house[i*3] == house[i*3+2]){ if(house[i*3] == 'X') return 1; if(house[i*3] == 'O') return 2; } } // Verifica Colunas: for(i=0; i<3; i++){ if(house[i] == house[i+3] && house[i] == house[i+6]){ if(house[i] == 'X') return 1; if(house[i] == 'O') return 2; } } // Verifica Diagonal Principal: if(house[0] == house[4] && house[0] == house[8]){ if(house[0] == 'X') return 1; if(house[0] == 'O') return 2; } // Verifica Diagonal Secundária if(house[2] == house[4] && house[2] == house[7]){ if(house[2] == 'X') return 1; if(house[2] == 'O') return 2; } // Verifica se foi empate; if (house[0] != ' ' && house[1] != ' ' && house[2] != ' ' && house[3] != ' ' && house[4] != ' ' && house[5] != ' ' && house[6] != ' ' && house[7] != ' ' && house[8] != ' ') { return 0; } return 3; } adicionado 1 minuto depois Se tiver interesse dê uma olhada nesse código de um jogo da velha que fiz faz um tempo e postei nesse outro tópico:
  24. Representa exatamente o que o seu código fez, ou seja só incluiu 1 aluno na lista. Para fazer o que você está pensando teria que chamar fim_lista(li, &al) toda vez após cada aluno criado. Ou seja o main ficaria assim: int main() { Lista* li; Aluno al; li = cria_lista(); al = (Aluno){ .matricula = 65464, .nome = "Maria" }; fim_lista(li, &al); al = (Aluno){ .matricula = 65567, .nome = "Marcos" }; fim_lista(li, &al); al = (Aluno){ .matricula = 68865, .nome = "Renan" }; fim_lista(li, &al); al = (Aluno){ .matricula = 78890, .nome = "Filipe" }; fim_lista(li, &al); al = (Aluno){ .matricula = 78900, .nome = "Rafael" }; fim_lista(li, &al); al = (Aluno){ .matricula = 78900, .nome = "João" }; fim_lista(li, &al); printf("\nLista vazia: %d ", lista_vazia(li)); printf("\nLista cheia: %d ", lista_cheia(li)); printf("\nTamanho da lista: %d ", tamanho_lista(li)); } Note que eu tive que mover li=cria_lista) para o topo.
  25. Tem dois li=cria_lista() no seu main exclua o segundo.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!