MassakiMsk
-
Posts
472 -
Cadastrado em
-
Última visita
Tópicos solucionados
-
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:
-
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
-
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.
-
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
-
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.
-
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
-
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.
-
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.
-
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; }
-
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;
}
}
-
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;} -
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...
-
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