Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. no ultimo printf, tente isso printf("%d ", vetor[cont_1]) e veja se dá certo
  2. No scanf faltou o operador &, para passar o endereço do elemento no vetor.
  3. Não há nada errado com a função em si. Mas você pode evitar problemas se atribuir nulo ao vetor palavra_chute, por exemplo: int i, j; j = strlen(palavra); palavra_chute[j] = 0x0; ...Além disso é bom você evitar a exibição de lixo da memória, carregando a string do chute na função principal: char chute[70]; ... memset(chute, ' ', 69); ... preenche_palavra(palavra, chute, palpite); printf("%s\n", chute); ...
  4. Esse flag é um and, no caso do or é "-o". Se você testar no terminal. $ num=5$ [ $num -eq 5 -a $num -lt 4 ] && echo "ok"$ [ $num -eq 5 -o $num -lt 4 ] && echo "ok"Apenas o segundo teste retorna ok.
  5. Para realizar a soma de dois ou mais argumentos, é só fazer assim for i ; do soma=`expr $soma + $i` doneecho $soma Verificando se um número (só testei com inteiros) é maior que 2 e menor que 7 read numif [ $num -gt 2 -a $num -lt 7 ] ; then echo "Numero maior que 2 e menor que 7"fiPara calcular a média, você pode usar a read para ler os números e expr para calcular, conforme fiz acima.
  6. Quando resolvi esse exercício usei vetores para facilitar. valor é o input. double dinheiro[12] = {100,50,20,10,5,2,1,0.5,0.25,0.10,0.05,0.01};int quantidade[12], i;... for(i = 0; i < 12; i++){ quantidade[i] = (int)(valor / dinheiro[i]); valor -= (double)(quantidade[i] * dinheiro[i]);}...Depois é só imprimir os valores dos vetores
  7. Recomendar as operações e as instruções necessárias, não deixa de ser uma ajuda principalmente para que diz não saber nem por onde começar. Mas se sua dúvida é realmente sobre sintaxe ou os caracteres especiais, então isso só reforça a necessidade de procurar uma boa referência para esclarecer essa dúvida. Ou então você deve especificar melhor a dúvida. Aqui você vai encontrar mais informações http://www.cplusplus.com/reference/cstdio/printf/
  8. @Alasca, Se você não sabe nem como começar, então você não sabe programar ou então não entendeu o que o problema pede. A parte da programação é elementar e não exige muita coisa além de saber operações de soma/divisão, loop e else/if. Se você não sabe esse tipo de coisa, o melhor a fazer é procurar uma apostila na web ou um livro para você aprender a programar.
  9. Fiz uma pequena alteração no meu código para a saída ficar igual. O problema era no else/if da igualdade dos inversos. Função corrigida: void ordena(int *v, int m, int n){ int i, continua = 1; while(continua){ continua = 0; for(i = 0; i < n - 1; i++){ if(mdc(v[i], m) == mdc(v[i + 1], m)){ if(inverte(v[i]) > inverte(v[i + 1])){ troca(&v[i], &v[i + 1]); continua = 1; }else if(inverte(v[i]) == inverte(v[i + 1])){ if(v[i] > v[i + 1]){ troca(&v[i], &v[i + 1]); continua = 1; } } }else if(mdc(v[i], m) < mdc(v[i + 1], m)){ troca(&v[i], &v[i + 1]); continua = 1; } } }}
  10. @LNW Vi que há um erro no meu código. Nessa linha else if(inverte(v[i] == v[i + 1]))O correto é else if(inverte(v[i]) == inverte(v[i + 1]))Mas a saída continua a mesma.Acho que nesse teste a sua saída, com 30 antecedendo o 300, faz mais sentido.
  11. Usei bubble sort para ordenar, veja se é assim. Só fiz um teste com os valores de 1 a 10. #include <stdio.h>int mdc(int, int);int inverte(int);void troca(int *, int *);void ordena(int *, int, int);int main(){ int i, m, n; scanf("%d %d%*c", &n, &m); int vetor[n]; for(i = 0; i < n; i++){ scanf("%d%*c", &vetor[i]); } ordena(vetor, m, n); printf("\n\n"); for(i = 0; i < n; i++){ printf(" %d", vetor[i]); } printf("\n"); return 0;}void ordena(int *v, int m, int n){ int i, continua = 1; while(continua){ continua = 0; for(i = 0; i < n - 1; i++){ if(mdc(v[i], m) == mdc(v[i + 1], m)){ if(inverte(v[i]) > inverte(v[i + 1])){ troca(&v[i], &v[i + 1]); continua = 1; }else if(inverte(v[i] == v[i + 1])){ if(v[i] > v[i + 1]){ troca(&v[i], &v[i + 1]); continua = 1; } } }else if(mdc(v[i], m) < mdc(v[i + 1], m)){ troca(&v[i], &v[i + 1]); continua = 1; } } }}void troca(int *a, int *{ int aux = *a; *a = *b; *b = aux;}int inverte(int a){ int x = 0; while(a){ if(x) x *= 10; x += a % 10; a /= 10; } return x;}int mdc(int a, int { int aux; while({ aux = b; b = a % b; a = aux; } return a;}
  12. O que você está tentando fazer nessa linha? MX = mdc_comparaX(M, vetor);O segundo parâmetro dessa função é do tipo int e você está passando um vetor.Você pode colocar a descrição do problema? E tem umas estruturas condicionais com MX e MY que atribuiem as variáveis x e y ao vetor, mas essas variáveis não são usadas em nenhum lugar. Foram apenas declaradas no início do programa.
  13. Para ordenar vetores é bem simples. Procure por algoritmos de ordenação que você vai encontrar vários.
  14. Para entender sobre a programação Windows e as APIs, recomendo o livro de Charles Petzold "Programando Para Windows". É o melhor que tem sobre o assunto. Talvez tenha na biblioteca da faculdade, pode ser até do Windows 95 ou 3.1.
  15. Você pode usar as classes MFC para programar em C++ ou programar diretamente com as APIs do Windows em C mesmo. Você tem alguma noção de programação Windows? Entende o conceito de mensagens? Quanto a sua dúvida do Visual Studio, já tentou Win32 Project? Como não uso esse ambiente não posso ajudar muito nesse caso.
  16. Na multiplicação você está tentando efetuar a operação com char enderecoderede[d]=ip_binario[d]*mascara_binario[d];Você precisa converter para inteiro antes, para isso pode subtrair pelo char '0' e depois somar '0' para converter para char novamente: enderecoderede[d] = ((ip_binario[d] - '0') * (mascara_binario[d] - '0')) + '0';Quanto ao '?', se trata de um operador ternário ?: É tipo um if-elsePor exemplo, na linha abaixo atribuo 1 a y, caso x seja maior que 10. Caso contrário o valor atribuido sera 0. y = x > 10 ? 1 : 0;Quanto ao /=, é a forma resumida de divir, por exemplox = x / 2 é o mesmo que x /= 2
  17. Coloque o código no tópico, com formatação, fica mais fácil verificar
  18. Para facilitar, tirei o ponteiro e uso apenas vetor int byte[3], b, i, x = 25; char ip_binario[27] = ""; printf("Endereco (xxx.xxx.xxx): "); scanf("%d.%d.%d", &byte[0], &byte[1], &byte[2]); for(b = 2; b >= 0; b--){ i = 8; while(i--){ ip_binario[x--] = (byte[b] % 2) ? '1' : '0'; byte[b] /= 2; } if( ip_binario[x--] = '.'; } printf("%s\n", ip_binario); return 0;
  19. Você pode criar uma string para ir armazenando os bits da direita para a esquerda, ou seja do penúltimo char da string até o primeiro. Segue o meu código, veja se ajuda. int byte[3], i, b; char ip_binario[27] = "", *s = ip_binario; printf("Endereco (xxx.xxx.xxx): "); scanf("%d.%d.%d", &byte[0], &byte[1], &byte[2]); s += 25; for(b = 2; b >= 0; b--){ i = 8; while(i--){ *s-- = !(byte[b] % 2) ? '0' : '1'; byte[b] /= 2; } if( *s-- = '.'; } printf("Endereco na forma binaria: %s\n", ++s); return 0;
  20. Você pode resolver isso com os operadores bit-a-bit. Se consultar a tabela ASCII, verá que a única diferênça entre maiúsculas e minúsculas é no quinto bit. Logo, podemos fazer um OR do quinto bit com 1 para deixar a letra minúscla e depois um AND do quinto bit com 0 nas primeiras letras. int main(){ int i; char frase[20]; printf("Escreva a frase: "); scanf("%[^\n]", frase); for(i = 0; i < strlen(frase); i++){ frase[i] |= (1<<5); if(!i || frase[i - 1] == ' ') frase[i] &= ~(1<<5); } printf("\nFrase convertida = %s\n", frase); return 0;}
  21. A dica do Mauro é bem simples de ser aplicada. Ele criou uma string, onde o terceiro índice deverá receber o valor (char) da precisão desejada.
  22. Estou usando o PI apenas para emulação. Para quem curte, sugiro que instale a imagem do projeto Retropie pois já vem com os emuladores instalados e a configuração é bem fácil.
  23. O comentário do Eventide faz sentido principalmente porque você não está programando C++, mas em C "puro" usando diretamente a API nativa do Windows. Se quiser programar em C++, sugiro que você procure criar seus aplicativos usando algum framework como MFC do Visual C++, OWL (antigo mas é bem poderoso) da Borland, etc. Aí sim poderá explorar mais os recursos de POO do C++
  24. Midori

    Os dois maiores numeros

    Fiz uma pequena alteração no seu código, segue if( number > maior1 ){ if(maior1 > maior2){ maior2 = maior1; } maior1 = number;}if( number > maior2 && number != maior1 ){ maior2 = number;}
  25. Se for para criar aplicativos para o modo console, no windows, eu gosto do Turbo ou Borland C++.

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!