Ir ao conteúdo
  • Cadastre-se

Chrissy Costanza

Membro Júnior
  • Posts

    16
  • Cadastrado em

  • Última visita

Reputação

11
  1. Aprenda por conteúdos como esse: Linguagem C Descomplicada Esse canal explica com vídeos curtos os conteúdos, após cada aula procure exercícios como: https://www.ime.usp.br/~macmulti/exercicios/ Particularmente acho desnecessário ser um expert em C, acredito que sirva apenas para consolidar a lógica, visto que linguagens como Python tendem a implementar algumas coisas que em C tem que "fazer no braço".
  2. Ao entrar no switch, a variável inteira valorfinal não tem valor algum.
  3. É bem simples na verdade, vou tentar explicar a ideia. 1. Partindo do Vetor1 preenchido, faça um laço percorrendo esse vetor. 2. A cada iteração, faça o calculo do fatorial, qual pode ser a lógica? 5! = 5x4x3x2x1, certo? Então 1x2x3x4x5 = 5! Afinal, a ordem dos produtos não altera o resultado. Crie uma variável com valor a partir do 1, e faça um for multiplicando essa variável com a variável do laço. 3. Armazene no segundo vetor. O segundo vetor terá o mesmo tamanho do primeiro, então pode usar o laço que percorre o Vetor1 para preencher o Vetor2 nas posições corretas já.
  4. Não sei se entendi certo, mas não seria apenas escrever: fscanf(arq, "%d", &votos); Após cada contagem de votos? Digamos que exista no arquivo: 1 3 Ao realizar um fscanf, ele irá ler o 1, e no próximo fscanf irá ler o 3. Nesse caso ele irá achar o 3 na outra linha, sem problemas. Se a dúvida não era bem essa, avise-me.
  5. Você começou por 1 no "for". Se você tem um vetor[4], as posições utilizáveis dele são 0,1,2 e 3. O C não vai te impedir de preencher a posição 4 por questões que talvez seja muito cedo para te explicar. Para uma matriz é a mesma coisa [4][4] você utiliza as linhas 0,1,2 e 3 e as colunas 0, 1, 2 e 3.
  6. Tem essa função que força que seja digitado um número. int verificaEntrada() { int y = 0, n; while(!y){ y = scanf("%d", &n); while(fgetc(stdin)!='\n'); } return n; }
  7. Você está no caminho. Tente sem a variável aux, comece o "for" da coluna em "0" - igual o "for" da linha - e mantenha seu "if (linha == coluna)". Deve funcionar já. O problema do seu código é que você está começando a coluna por 5, mas sua matriz 5x5 tem como índice máximo [4][4] - não esqueça que começamos a partir do 0 -, então você está preenchendo posição da matriz que não existe e parando antes do índice 0.
  8. Não sei se seu professor permite, mas como é uma LDE você pode percorrer do final para o início e do início para o final, comparando valor por valor, quando os ponteiros que estão percorrendo a lista se encontrarem, acabou. Sua condição pode ser para achar diferentes, aí faz algo do tipo: if (x != y) return 0; E no final da função "return 1";
  9. Use ponteiros para isso. E para trocar valores de duas variáveis não precisa de variável auxiliar, use o operador BIT a BIT XOR. Exemplo: int a = 5, b = 3; a = a^b; b = b^a; a = a^b;
  10. http://gravatai.ulbra.tche.br/~elgio/ulbra/ https://www.vivaolinux.com.br/~elgio
  11. Não sei se culpo o professor ou você. Vou pelo básico. 1. No URI e em qualquer ferramenta de competição, não se conversa com o usuário, esse printf pedindo para digitar algo da erro, apenas leia com o scanf. 2. URI é uma ferramenta usada para competidor, se você pegar sua solução da aula e enviar no URI vai estourar o tempo, qualquer probleminha do URI de nível 2 já precisa de alguns conceitos matemáticos, aquela coisa de calcular número primo indo até o próprio número não existe no URI, não vai passar. Pesquise métodos rápidos para resolver aquilo que você já sabe. 3. Se o programa pede como resposta: Fatorial de x = y, e o seu printf colocar: O fatorial de x é y, vai dar erro. 4. Pelo amor de deus diz pra sua professora que não se usa C no URI, ele força o uso de ponteiros por parte do programador e isso é horroroso.
  12. Esse é um erro comum, o operador ternário não substitui IF. Ele é um operador de atribuição, não um substituto do IF. Exemplo de uso: int m = 1, n = 2; int x; x = n > m? n: m;
  13. Vou deixar aqui uma solução de um professor meu, assim como todo aluno de ciência da computação, fiz com IFS e IFS. Coloquei o código acreditando que você vai estudá-lo e não apenas dar Ctrl-c. Implemente do seu modo antes e depois estude o que foi feito pelo meu professor. int cesarCIF(char s[]) { int i; for (i = 0; s[i]; i++) { s[i] = 'A' + ((s[i] - 'A' + 3) % 26); /* Achou estranho? * Aposto que você fez um montão de ifs aqui, não? * * Vamos a lógica. * Se s[i] for 'E' deve virar 'H' certo? * 'E' == 69 em decimal * Dentro do parentes tem s[i] - 'A' + 3 * Para o caso do 'E' dá 'E' - 'A' = 4 (69 - 65) * Somando ao 3 dá 7. 7%26 = 7 * s[i] = 'A' + 7 = 72 (e 72 é o 'H' da tabela ascii) * * Agora outro exemplo: s[i]='X' Neste caso deve virar 'A' * * 'A' + (('X' - 'A' + 3 )%26) * 'A' + (( 23 + 3) %26) ==> 'X'(88) - 'A'(65) == 23 * 'A' + (26%26) => o resto de 26 dividido por 26 é ZERO * 'A' + 0 = 'A' * */ } return (i); // retorna tamanho de s, que é a quantidade de cars cifrados } /* Observou que o cesarCIF tem apenas quatro linhas de código? */
  14. Vi esse post há uns dias e achei que já tinham resolvido, mas lá vai. O código funciona por sorte, pois há uma multiplicação entre os dois primeiros vetores, então mesmo digitando somente números negativos irá funcionar para achar o maior, porém a lógica usada para encontrar o maior número de um vetor não é essa. Não está certo iniciar "m = 0", o certo é iniciar a variável que será testada no "if" com a primeira posição do vetor. Por Exemplo: m = vet[0] for(i = 1; i < n; i++){ if(vet[i] > m) m = vet[i]; } Para ficar mais claro, pense assim: Se você tiver um vetor de 5 posições apenas com números negativos, o que será printado de acordo com seu código? 0, e 0 não é o maior número. Outra coisa, é horrível em questão de segurança iniciar o tamanho de um vetor por um scanf do usuário, se você ainda não tem conceitos de locação dinâmica, o melhor jeito é iniciar o vetor com por exemplo 1000 posições, perguntar para o usuário quantas ele quer usar, e então você faz o "for" até a quantidade que ele quer. E se ele quiser mais de 1000 posições? Manda digitar menos ou aprenda locação dinâmica.
  15. Seu raciocínio pode ser o seguinte: X O O X X X O. "For" está na posição 0 e não é uma bolinha, nada a ser feito. "For" está na posição 1 e achei uma bolinha, verifico se (i - 1) é uma bolinha (sendo "i" a variável usada no "for" para percorrer), se for nada a ser feito, caso contrário incrementa 1 em "quant_seq". Tome cuidado com exceções do tipo: Se a posição 0 for uma bolinha você fará 0 - 1. Foi o que veio na cabeça de primeira. Mesmo que funcione, com certeza existe uma solução mais elegante.

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