Ir ao conteúdo
  • Cadastre-se

Midori

Membro Pleno
  • Posts

    3.543
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Com o if dentro de um laço, você pode usar a palavra chave continue e ativar algum "flag" if(flag){ e4++; flag = 0;}if(FALSO){ flag = 1; continue;} Nesse caso, o if(flag) é a primeira instrução do bloco do laço.
  2. palavra deve ser uma string. No código você declarou como int
  3. Você pode ir postando no fórum as suas dúvidas e dificuldades. Porém, estudar é mais importante e efetivo que pedir ajuda. E estudo se faz sozinho, treinando/programando bastante e escrevendo (com papel e caneta mesmo) caso queira fixar bem algum conceito. Talvez seja questão de rever conceitos básicos de lógica de programação e não apenas da linguagem de programação em si.
  4. Acho que o atlos respondeu a pergunta, Mas se você quiser criar aplicações gráfica para Windows, por exemplo, qualquer compilador compatível com Win16/32 terá suporte as APIs do Windows. Eu gosto de programar no Borland C++ 4 ou 3.1 for Windows, que já vem com o framework OWL. São compiladores antigos, mas são mais do que suficientes para se divertir. Se você tiver o Visual C++ poderá criar aplicações com MFC. Portanto, de qualquer forma, a implementação e suporte dos recursos do ambiente gráfico (GUI) que o SO estiver rodando, vai depender do compilador ou algum framework externo. Como você se interessa por jogos eletrônicos e caso tenha interesse em usar algum compilador antigo da Borland, talvez goste do livro Programming Windows Games with Borland C++ de Nabajyoti Barkakati.
  5. Qual é a sua dúvida? Está usando o operador de módulo (%) na função?
  6. Alguns jogos, como Prince of Persia, usam o speaker. Mas para jogar Doom, por exemplo, é necessário ter uma placa de som. Rayke, Pesquisei bastante na net e há usuários que dizem que é impossível, outros dizem que há modelos baratos que funcionam na maioria dos jogos, mas parece que a BIOS tem que oferecer compatibilidade ou algo do tipo.
  7. Acredito que o código do Walicen tenha resolvido. Mas você precisa rever o conceito sobre tratamento com ponteiros. Esse trecho do seu código está incorreto: pa=valor Pois você está atribuindo um valor a um endereço. Nesse caso você teria que usar o operador * para tirar a referencia da variável pa, ficando dessa forma: *pa = valor. Outro techo que precisa ser revisto, é no scanf com ponteiro: scanf("%i", *pb) Nesse caso não precisa usar o operador *, pois pb já representa o endereço de memória esperado pela função scanf.
  8. Pessoal, Tenho uma máquina rodando MS-DOS 6.22 e Win 3.11, porém não consigo configurar o som. Tentei configurar o som onboard, mas já percebi que não é possível. Minha placa mãe não tem slot ISA, apenas PCI (32-bit / 2.2). Quero usar essa máquinha inclusive para games do MS-DOS. Que tipo de placa de som PCI dá suporte completo ao som no MS-DOS e Win 3.11?
  9. 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;}
  10. Se for para criar aplicativos para o modo console, no windows, eu gosto do Turbo ou Borland C++.
  11. Já estudou estrutura de dados? Pilha, lista, fila, árvore, etc. A Makron Books tem um ótimo livro sobre o assunto (Estrutura de Dados Usando C).
  12. Para simplificar o programa, dá para usar uma matriz O ideal é ir registrando o valor na primeira coluna e o número de repetições na segunda. Nesse código o zero não é considerado. Talvez te ajude, ou quem tiver uma dúvida semelhante. #include<stdio.h> int main(void){ int matriz[20][2] = {{0},{0}}, numero; int i, n, elemento = 0, novo; for(i = 0; i < 20; i++){ printf("Elemento %d = ", i + 1); scanf("%d", &numero); if(numero < 0){ break; } for(n = 0, novo = 1; n <= i; n++){ if(matriz[n][0] == numero){ matriz[n][1]++; novo = 0; break; } } if(novo){ matriz[elemento][0] = numero; matriz[elemento][1]++; elemento++; } } for(i = 0; i < elemento; i++){ if(matriz[i][1] > 1){ printf(" O numero %d aparece %d vezes\n", matriz[i][0], matriz[i][1]); } } return 0; }
  13. Você não pode usar variáveis (n e m) dessa forma para determinar o tamanho de uma matriz. Isso só é possível se for dinâmicamente (com malloc, etc). Nos parâmetros da função soma, informe as dimensões, por exemplo: int soma(a[0][10], b[0][10])
  14. Midori

    exercicio - strings

    Screen, O problema é tentar alterar mesmo, já que *texto será somente leitura. Por isso dá erro. Acho que não tem problema usar dessa forma, mas uma boa práticar seria colocar const. const char *texto = "palavra"; Assim o compilador apresentaria um warning caso alguma parte do programa tente alterar. Mas o melhor naquele caso seria como você fez (char texto[] = "...") na forma de vetor mesmo.
  15. Midori

    exercicio - strings

    Aqui rodou normalmente. Mas veja que eu usei ponteiro, talvez seu professor não aceite essa resolução. Teste dessa forma, #include <stdio.h> int main(void){ char frase[40]; int i; printf("Entre com o texto: "); fgets(frase,39,stdin); for(i = 0; frase[i] != '\0'; i++) if(frase[i] >= 97 && frase[i] <= 122) frase[i] -= 32; printf("\nNovo texto: %s\n", frase); return 0; } Screen, No meu primeiro exemplo o compilar já calcula o tamanho do texto e coloca '\0' no final, certo? Nesse caso não precisa de alocação dinâmica.
  16. Midori

    exercicio - strings

    Veja que a diferença na tabela ASCII entre minúscula e maiúscula é de 32. Portanto basta verificar se o carctere é >= 97 e <= 122 para efetuar a conversão e subtrair por 32. void converte(char *v){ while(*v != '\0'){ if(*v >= 97 && *v <= 122) *v -= 32; v++; } } int main(void){ char *texto = "teste 123"; converte(texto); printf("Texto = %s", texto); return 0; }
  17. Screen, No segundo exemplo que você postou acima (para limpar o buffer), com espaço antes da máscara, sempre funciona? Em relação a fflush stdin funcionar, acho que depende da implementação do compilador. Portanto não é portável.
  18. Segue uma forma bem simples de resolver o exercício. #include <stdio.h> int main(void){ int x, y, z, w, s, num; scanf("%d", &num); if (num < 10){ printf("%d\n", num); return 0; } for(x = s = 0, z = 1, y = num - (num % z); x < ((num < 100) ? 2 : (num > 100 && num < 1000) ? 3 : 4); ++x){ w = (y / z % 10); z *= 10; y -= (y % z); s += w; } printf("%d", s); return 0; }

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!