Ir ao conteúdo
  • Cadastre-se

MassakiMsk

Membro Pleno
  • Posts

    472
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de MassakiMsk em Teclas W A S D (S e D nao funcionam!!!) foi marcado como solução   
    é por que você está trocando a posição do jogador e mesmo assim continua verificando as outras posições x;y
    Pode resolver isso saindo do loop quando trocar a posição do jogador. Pode usar uma flag ou simplesmente fazer:
     
  2. O post de MassakiMsk em Implementação Pilha Dinâmica em C foi marcado como solução   
    você esta removendo o ultimo mas pegando o valor do penultimo por pegar o proximo elemento apontado pelo topo. 
    é só tirar o ->prox e deixar assim na função pop
    dado = aux->data;
    adicionado 1 minuto depois O erro ocorre provavelmente quando você tenta remover o elemento de uma pilha com só um valor salvo. ele tenta pegar o prox, mas o prox do primeiro é NULL
  3. O post de MassakiMsk em Verificar se um numero é potencia de 2 - o que esta de errado no meu codigo? foi marcado como solução   
    #include<stdlib.h> #include<stdio.h> #include<math.h> int main(){ int n; float lg; scanf("%d", &n); do{ lg=log10(n)/log10(2); if(lg>(int)lg){ printf("nao é\n"); } else{ printf("é\n"); } scanf("%d", &n); }while(n!=0); system("pause"); return 0; } Como saber se o numero é potencia de 2? a variável lg vai ter que ter um valor inteiro, se tiver valor decimal significa que não é potencia de 2.
    Para verificar se possui valor decimal basta subtrair a somente a parte inteira de lg do proprio lg. Se o valor for diferente de 0 significa que possui valor decimal, então não é potencia de 2.
  4. O post de MassakiMsk em Resolvido problema em passagem de ponteiros foi marcado como solução   
    #include <stdio.h> #include <conio.h> struct Teste { char nome[100]; }; typedef struct Teste teste[100]; void fun_teste(teste testando,int *tam); void fun_mostra(teste teste_mostrando,int *tam); int main () { teste teste_main; int tam=0; fun_teste(&teste_main,&tam); } void fun_teste(teste testando,int *tam) { do{ fflush(stdin); printf("Complete com um nome: "); gets((testando+*tam)->nome); (*tam) = (*tam) + 1; }while(*tam<5); fun_mostra(testando,tam); } void fun_mostra(teste teste_mostrando,int *tam) { int i; for(i=0;i<*tam;i++) puts((teste_mostrando+i)->nome); } observe que teste já é um ponteiro. Desculpa se estiver falando besteira, mas eu realmente nunca vi dar typedef como vetor. Mas o importante é que assim funciona. Agora, vocÊ poderia fazer assim também
     
    Isso porque a variavel teste_main é do tipo teste, que é um ponteiro do tipo Teste
  5. O post de MassakiMsk em Números por extenso. foi marcado como solução   
    O problema é que você está tentando economizar espaço com o short int.
     
    Olhe a imagem mostrando o valor de inv.
    Apenas tire o short e deixe int normal. o short inte só vai até 32K e alguma coisa.

    No caso desse teste 2004, o inv teria valor 40020, e depois de dividido por 10 ficaria 4002, mas esse 40020 já estourou o limite do short int, então ele foi os 8K estourados para o lado negativo.
  6. O post de MassakiMsk em Como rodar duas funções simultaneamente? foi marcado como solução   
    Olha a resposta do 1freakday nesse post, está bem explicado:
    http://forum.clubedohardware.com.br/forums/topic/1171409-exibir-mensagem-caso-usuário-demore-a-digitar/?do=findComment&comment=6447942
     
  7. O post de MassakiMsk em Texto de script c++ simplesmente ignorado pelo cmd foi marcado como solução   
    Coloca
    antes dos scanf de %c para limpar o buffer do teclado. Se não limpa o scanf %c pega lixo.
  8. O post de MassakiMsk em Erro de cálculo no código foi marcado como solução   
    Eu testei aqui e funcionou com 
    Eu nunca programei em C++, só C, então não tenho certeza, mas o meu aqui só funcionou colocando
    Talvez seja isso
    Correção: Acho que sei qual o seu problema. Você não está fazendo a verificação se há raízes ou não, então ele imprime lixo de memória quando o Delta é 0 ou negativo. 
  9. O post de MassakiMsk em Onde esta o erro do meu codigo? (matriz e função) foi marcado como solução   
    A variável pares na main não foi declarada.
    pares(vet1) está errado, pois pares não é uma função.
    Para ver se um número é par você faz
    Precisa de uma variável do tipo inteiro que guarde a quantidade de pares.
    O retorno da função está errado, pois ali ele apenas retornaria o primeiro valor par encontrado.
     
    O código arrumado:
     
    #include <stdio.h> #include<stdlib.h> int par( int v[]); int main (){ int vet1[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int pares; pares = par(vet1); printf("%d", pares); system("pause"); system("pause"); return 0; } int par(int v[]){ int i, par=0; for(i=0;i<15;i++) if(v[i] % 2==0){ par++; } return par; }  
  10. O post de MassakiMsk em Exercício de loop. foi marcado como solução   
    Em vez de 
    coloca 
     
  11. O post de MassakiMsk em Dúvida de iniciante - struct, function, pointer foi marcado como solução   
    Talvez eu esteja falando besteira, mas é assim que eu consegui fazer funcionar:
    Desculpa nao conseguir usar o quadro de codigo, estou no cel e nao tem a opção
    #include<stdio.h>
    #include<locale.h>
    #include<stdlib.h>
    #include<string.h>
    struct descricao
    {char titulo [16];
    char autor [21];
    char estilo [11];
    int codigo;
    float preco;};
    void cadastro (struct descricao livro[], int k)
    {
    printf("Esse é o cadastro de número %d.\n",k);
    printf("Digite o título do livro (até 15 caracteres):");
    scanf("%s",&livro[k].titulo);
    printf("Digite o autor do livro(até 20 caracteres):");
    scanf("%s",&livro[k].autor);
    printf("Digite o estilo do livro (até 10 caracteres):");
    scanf("%s",&livro[k].estilo);
    printf("Digite o código do livro:");
    scanf("%d",&livro[k].codigo);
    printf("Digite o preço do livro:");
    scanf("%f",&livro[k].preco);
    k=k+1;
    }
    int main( )
    {
    setlocale(LC_ALL, "Portuguese");
    int k=0;
    int i;
    struct descricao livro[10];
    printf("--------------MENU DE OPÇÕES--------------\n");
    printf("1-Cadastro de livros (máximo de 10 livros).\n");
    printf("2-Consulta de livros.\n");
    printf("3-Sair do programa.\n");
    scanf("%d",&i);
    system("cls");
    switch (i)
    {
    case 1:
    cadastro(livro, k);
    break;
    case 2:
    case 3:
    default:
    printf ("Número inválido!\n");
    system ("PAUSE");
    system ("cls");
    break;
    }
    }
  12. O post de MassakiMsk em Rotação de matrizes foi marcado como solução   
    #include<stdio.h>int main(){ int h, l, matriz[10][10], i, j; printf("Digite a altura da matriz:\n"); scanf("%d", &h); printf("Digite a largura da matriz:\n"); scanf("%d", &l); printf("Insira a matriz:\n"); for(i=0;i<h;i++){ scanf("%d", &matriz[i][0]); for(j=1;j<l;j++){ scanf(" %d", &matriz[i][j]); } } for(i=0;i<l;i++){ for(j=0;j<h;j++){ printf("%d ", matriz[h-j-1][i]); } printf("\n"); } return 0;}
  13. O post de MassakiMsk em Codigo da forca, ta dando ERRO. foi marcado como solução   
    # include <stdio.h># include <stdlib.h># include <string.h>main(){char nome[10], // Vetor para salvar o nome do jogador.tentd[1], // Variável para controlar se o jogador vai querer jogar de novo.palavra[]="ovo", // Vetor para a palavra usada no programa.espaco[3], // Vetor usado para os espaços antes e identificar a palavra.teste, // Variável usada para testar as letras, postas pelo jogador.aux=0, // Vetor para auxiliar a variável 'booleana'. Quando 1 é verdadeira e 0 é falsa.tam;int i, //Váriavel auxiliar do 'for'.chances; //Váriavel usada para contar quantas chances o jogador ainda tem.tentd[0]='s';chances=6;tam=strlen(palavra);for(i=0;i<tam;i++) espaco[i]='_';system("cls");printf("><><><><><><><><><><><><><>JOGO DA FORCA<><><><><><><><><><><><><><>\n"); // Inicio do jogowhile(tentd[0]!='n' ){ printf("Escreva o nome do jogador! \n"); scanf("%s",&nome);while(chances!=0 || aux==1 ){ aux=0; system("cls"); printf("O jogador(a): %s\n",nome); printf("Chance: %d",chances); printf("\n ÉÍÍÍÍÍÍÍÍÍÍÍ»"); printf("\n º º"); printf("\n º Ê"); printf("\n º"); printf("\n º"); printf("\n º"); printf("\n º"); printf("\n º"); printf("\n º"); printf("\n Ê\n"); for(i=0;i<tam;i++){ printf("%c ",espaco[i]); }printf("\n"); setbuf(stdin,NULL); printf("Digite uma letra! \n"); scanf("%c",&teste); for(i=0;i<tam;i++){ if(teste==palavra[i]){ espaco[i]=teste; aux=1; } } if(aux==0){ chances--; }}} system("pause");} Essa é só a parte que voce fez corrigida, Alterei os ciclos for's para ir de 0 até o tamanho da palavra, coloquei para reimprimir a forca toda vez q o usuario digitasse algo (se nao fizer isso a tela nao muda mesmo que o cara digite algo), e fiz a variavel auxiliar resetar toda vez para fazer a comparação na hora de diminuir a vida.
    Agr uma dica: faça com que letras repetidas nao sejam contadas como erros ou acertos...
  14. O post de MassakiMsk em Gravar struct em arquivo.txt foi marcado como solução   
    Alterei a declaração do "int x" e a chamada da função "ler" tava no lugar errado dentro do "printf", ela deve ser chamada antes, pois ali o "printf" estava tentando imprimir o que nao devia.
    #include <stdio.h>#include <stdlib.h>#define T 3struct aluno {char nome [100];int idade;int ra;float mensal;};struct aluno ler (){struct aluno a;printf("\n----Digite seu nome:---- \n");fflush(stdin);gets(a.nome);printf("----Digite sua idade:---- \n");scanf("%d",&a.idade);printf("----Digite seu RA:---- \n");scanf("%d",&a.ra);printf("----Digite sua mensalidade:---- \n");scanf("%f",&a.mensal);printf("\n============================\n");return a;}void imprime (struct aluno a[T]){ int x;for (x=0; x<T; x++){printf("\t Nome: %s\n",a[x].nome);printf("\t Idade: %d\n",a[x].idade);printf("\t RA: %d\n",a[x].ra);printf("\t Mensalidade: %.2f\n",a[x].mensal);}}int main (){ int x;char caminho[]="aluno.txt",caractere;FILE *arquivo;arquivo = fopen (caminho,"w");struct aluno a[T];if (arquivo==NULL){printf("Erro ao criar arquivo.\n");}else{for(x=0; x<T; x++){ a[x]= ler();fprintf(arquivo,"Nome: %s\nIdade: %d\nRA: %d\nMensalidade: %.2f\n\n\n", a[x].nome,a[x].idade,a[x].ra,a[x].mensal);printf("\tArquivo gravado com sucesso.\n");}fclose(arquivo);}imprime(a);system("pause");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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!