Ir ao conteúdo
  • Cadastre-se

1freakday

Membro Pleno
  • Posts

    670
  • Cadastrado em

  • Última visita

Tudo que 1freakday postou

  1. @Nerociffer Não está sendo exibido por que você não esta colocando dentro de um loop, toda vez que receber uma opção escolhida do menu, você precisa mandar para o switch. Assim 1-> while 2---> opcao = menu 3---> switch(opção){} 4-> fim while adicionado 1 minuto depois No caso, você apenas manda uma vez para o switch, e na segunda vez que aparece o menu, você não faz nada com a variável opção e finaliza o programa.
  2. @Nerociffer não tenho muito o que comentar no seu código, pelo menos da forma como foi postado, veja: case 4: ... 1 - printf("Contato:.:%s \n", cadastro.telefone); 2 - break; 3 - opcao=menu(); Na 2 e 3 estão trocadas. Agora peço que poste o código usando o símbolo <>, assim posso dar uma resposta melhor. Já que alguns dados somem quando você simplesmente joga o código no texto.
  3. @Eric Gianelli não sei qual livro está lendo, mas and não existe como operador lógico em c, use &&. Exemplo: if(x > 0 && x < 10) Texto de apoio para você: http://www.mspc.eng.br/info/cpp_oper_10.shtml
  4. @Pessoa_737 Tenta inicializar o srand no inicio de main: int main (){ srand(time(NULL));
  5. @Simon Viegas não precisa pedir desculpas, acontece. Como eu disse, não modifiquei quase nada, segue o que alterei: Abaixo, ele havia colocado (v2, n1), mas como é apenas para o 2 vetor, e se ele colocasse tamanhos diferentes poderia dar erro de segmento. int MeVet2 = MenorElemVetor2(v2, n2); Em relação ao terceiro elemento, eu expliquei que na verdade está funcionando, já que ela só retorna 0 ou um numero negativo par. Tenta entrar com um -4 no segundo vetor. Isso acontece por causa dessa parte: //altera o retorno se for: //. menor que zero //. par if((v2[mpn] < 0)&&(v2[mpn] % 2 == 0)) { mpn1 = v2[mpn]; }
  6. @Simon Viegas Não concordo por ter apagado meu post, já que não postei código pronto, apenas postei o código dele comentado.
  7. @Buzina Lopes Na verdade está funcionando, já que ela só retorna 0 ou um numero negativo par. Tenta entrar com um -4 no segundo vetor. Segue o código, sem muita mudança: #include<stdio.h> #include<stdlib.h> /* Dados 2 vetores inteiros, obtenha o vetor resultante que contenha nesta ordem: o menor elemento do segundo vetor, a parte inteira da media dos elementos do primeiro vetor, o menor par negativo do segundo vetor e o maior impar positi- vou do primeiro vetor, suponha que exista pelo menos uma ocorrencia de cada situ- ação*/ //Menor elemento vetor 2 int MenorElemVetor2(int v2[], int n1) { int i, menor = v2[0]; for(i = 0; i < n1; i++) { if(menor > v2[i]) { menor = v2[i]; } } return menor; } //Media elemento vetor 1 int MediaElemVetor1(int v1[], int n1) { int i, media = 0; for(i = 0; i < n1; i++) { media = media + v1[i]; } return media / n1; } //Menor, par e negativo vetor 2 int MenorParNegaVetor2(int v2[], int n2) { int i, mpn = 0, mpn1 = 0; for(i = 1; i < n2; i++) { if(v2[mpn] > v2[i]) { mpn = i; } } if((v2[mpn] < 0)&&(v2[mpn] % 2 == 0)) { mpn1 = v2[mpn]; } return mpn1; } //Maior, impar e positivo vetor 1 int MaiorImparPositivoVetor1(int v1[], int n1) { int i, mip = 0, mip1 = 0;//retorna esse se não tiver valor negativo for(i = 0; i < n1; i++) { if(v1[i] > v1[mip]) { mip = i; } } if((v1[mip] % 2 != 0) && (v1[mip] > 0)) { mip1 = v1[mip]; } return mip1; } void BotaNolugar(int vres[], int MeVet2, int MediaVet1, int MenPaNegVet2, int MaiImpaPosVet1) { vres[0] = MeVet2; vres[1] = MediaVet1; vres[2] = MenPaNegVet2; vres[3] = MaiImpaPosVet1; } void PrintaVetor(int vres[]) { int i; for(i = 0; i < 4; i++) { printf("Resultado da %d condicao: %d\n", i, vres[i]); } } int main() { int n1, n2, *v1, *v2, *vres, i; printf("Digite o tamanho do primeiro vetor:\n"); scanf("%d", &n1); printf("Digite o tamanho do segundo vetor:\n"); scanf("%d", &n2); v1 = (int*)malloc(n1 * sizeof(int)); v2 = (int*)malloc(n2 * sizeof(int)); vres = (int*)malloc((n1 + n2) * sizeof(int)); printf("Digite os elementos do primeiro vetor:\n"); for(i = 0; i < n1; i++) { scanf("%d", &v1[i]); } printf("Digite os elementos do segundo vetor:\n"); for(i = 0; i < n2; i++) { scanf("%d", &v2[i]); } int MeVet2 = MenorElemVetor2(v2, n2);//mudei aqui int MediaVet1 = MediaElemVetor1(v1, n1); int MenPaNegVet2 = MenorParNegaVetor2(v2, n2); int MaiImpaPosVet1 = MaiorImparPositivoVetor1(v1, n1); BotaNolugar(vres, MeVet2, MediaVet1, MenPaNegVet2, MaiImpaPosVet1); PrintaVetor(vres); }
  8. Quando postar use <>, para o código ficar mais visível. #include<conio.h> #include<stdio.h> #include<string.h> int main(){ char msg[999]; char crip_msg[999]; int tam_msg; int i; int escolha; //menu printf("Digite 1-Criptografar\n 2-Descriptografar"); scanf("%d",&escolha); if(escolha == 1){ //crip printf("\n Digite texto ou palavra a ser criptografada:"); scanf("%s",msg); tam_msg = strlen(msg); for(i=0;i<tam_msg;i++) { crip_msg = (msg) *4 ; } printf("\n A mensagem criptografada e :%s",crip_msg); } //Descrip else if(escolha == 2){ printf("\n Digite mensagem a ser descriptografada:"); for(i=0; i<tam_msg; i++) scanf("%c",&crip_msg[i]); tam_msg = strlen(crip_msg); for(i=0;i<tam_msg;i++) { msg = (int)(crip_msg[i] / 4); } printf("\n A mensagem descriptograda e: %s",msg); } getch(); return 0; } Você colocou chave no if { ((escolha)
  9. @Gabriel Lin O salt seria o método de embaralhamento que você usou, no caso vezes 5 e -25, mas nesse caso ele não é aleatório, tirando o significado de salt... Você pode calcular vezes, soma, etc., porém você precisa dar o output, mostrando a mensagem criptografada, e caso valor do texto criptografado não esteja na tabela ASCII, ele não sera mostrado, ai não tem como o usuário descriptografar corretamente. O que você pode fazer é usar vezes e armazenar os resultados em um vetor de int, ai no momento de descriptografar retornar para um vetor de char, assim: #include<stdio.h> #include<string.h> int main() { char msg[999]; int crip_msg[999]; int tam_msg; int i; //encrypt printf("\n Digite texto ou palavra a ser criptografada: "); scanf("%s", &msg); tam_msg = strlen(msg); for(i=0;i<tam_msg;i++) { crip_msg[i] = (msg[i])*5; } for(i=0;i<tam_msg;i++) printf("\n A mensagem criptografada e : %d", crip_msg[i]); //decrypt printf("\n Digite mensagem a ser descriptografada:\n"); for(i=0; i<tam_msg; i++) scanf("%d",&crip_msg[i]); for(i=0;i<tam_msg;i++) { msg[i] = (int)(crip_msg[i])/5; } printf("\n A mensagem descriptografada e : %s\n\n", msg); return 0; }
  10. Esse salt que você esta dando impossibilita o uso de printf, pois retornara um carácter inexistente na tabela ASCII, tenta alterar esse seu cálculo, segue umas alterações: #include<stdio.h> #include<string.h> int main() { char msg[999]; char crip_msg[999]; int tam_msg; int i; //encrypt printf("\n Digite texto ou palavra a ser criptografada: "); scanf("%s", &msg); tam_msg = strlen(msg); for(i=0;i<tam_msg;i++) { crip_msg[i] = msg[i] + 5; } printf("\n A mensagem criptografada e : %s\n\n", crip_msg); //decrypt printf(" Digite mensagem a ser descriptografada: "); scanf("%s",&crip_msg); tam_msg = strlen(crip_msg); for(i=0;i<tam_msg;i++) { msg[i] = crip_msg[i] - 5; } printf("\n A mensagem descriptografada e : %s\n\n", msg); return 0; }
  11. @ALFeijó esse problema tem a ver com o compilador, verifique se está usando um compilador de acordo com a arquitetura x32 ou x64.
  12. @erique eu fiz algumas modificações no sistema de colisão e movimento, tem três observações: 1) O jogador só pode movimentar de tile em tile(20 px), sendo que para mover menos do que isso, é necessário que seja feito a contagem do movimento, e quando o usuário for mover para outro tile é feito o teste de colisão. Isso resolve o problema do player se 'perder' no mapa e passar nos tiles. 2) Adicionei algumas variáveis, MAPX e MAPY, elas identificam o próximo tile na matriz do mapa, e mantem a lógica de movimento de acordo com a colisão. 3) Agora os frames estão trocando corretamente.
  13. Tá compartilhado a pasta la, o problema é que são posts muito acumulativos, ai lá da para revisar e aqui debater. Mas qualquer coisa continuamos com o código nesse post.
  14. @erique Entendi a lógica, caso o local for diferente desse tile M, é possível mover. Vou testar o código aqui, se puder passar os arquivos agradeço. P.S: eu criei uma pasta no Google Drive, lá da para alterar e compartilhar mais rápido entre nós três, se puderem passar um gmail.
  15. @erique qual o método de colisão usado? Apenas usando if?
  16. @erique Perceba que cada direção possui 2 frames, então agora você precisa de uma "flag" ou usando o ternário ? para indicar qual dos 2 está sendo usado, para poder dar o efeito certo, exemplo: #define W 10 // tamanho de cada frame else if (key[KEY_RIGHT]){ //será escolhido um frame da direita que ainda nao foi //usado, começando em define->direita spriteX = (spriteX != direita ? direita : (direita+W)); if(mapa[x][y+1] != M){ x += 1; //heroi.y++; } } adicionado 3 minutos depois @erique P.S: eu acho coloquei errado na imagem acima, pois cada direção é somada pela quantidade de frame, mas se o frame é de 20x20, a imagem está correta.
  17. @Rodolfo Prearo C Grimaldi Eu apenas encontrei esses erros marcados abaixo, onde você deixou de fora de alguma função o if. void heapMax(int *vetor[], int n, int y){ int a = y; if(n-1 == 0){ if(verificaVetor(vetor,y) == 0){ heapMax(vetor,a,y); } } else { int i; for(i=0;i<y;i++){ printf("%d\n",vetor[i]); } return ; //<--- Retorna depois de imprimir } //<--- Fim da função if((n-1)%2 != 0){ //<--- if fora de qualquer função if(n == y){ if(vetor[n-1] > vetor[((n-1)/2)]){trocaValores(vetor,(n-1),((n-1)/2)); heapMax(vetor,n-1,y);} else{ heapMax(vetor,n-1,y); } } } else{ if(vetor[n-1] > vetor[n-2]){ if(vetor[n-1]> vetor[(((n-1)/2)-1)]){ trocaValores(vetor,(n-1),(((n-1)/2)-1)); heapMax(vetor,n-2,y); } else{ heapMax(vetor,n-2,y); } } else{ if(vetor[n-2]>vetor[(((n-1)/2)-1)]) { trocaValores(vetor,(n-2),(((n-1)/2)-1)); heapMax(vetor,n-2,y); } else{ heapMax(vetor,n-2,y); } } } }
  18. @Danilo Henriq Meu caro, antes de preencher o vetor com a variável, você precisa verificar se ela está no vetor, então use uma variável qualquer no scanf e verifica ela com as demais do vetor. Além disso, no 'for' você precisa limitar até i e não n, pois i é a quantidade de variáveis reais que foram preenchidas no final. E Também dentro do if onde está o cont, imprima a mensagem e abaixo use continue, se não o i++ irá incrementar. P.S: não declare a variável dentro do do...while, declare no inicio do programa, apenas zere no final. Talvez isso resolva o problema.
  19. Você só muda o offset Y da imagem, quando for usar outra linha de sprites, como se você estivesse colocando: cima Y = 0 baixo Y = 20 esquerda Y = 40 direita Y = 60 No caso dessa ultima imagem de sprite, não precisa tirar do 0, segue as coordenadas: sendo (x,y)
  20. @Luis Felipe Miranda Como o primeiro argumento de fopen é uma string, você precisará montar essa string, não tem como usar símbolos do printf nesse caso. Monte usando: sprintf(char *, const char *, ...) O que você pode fazer é pegar o caminho inteiro com o arquivo e mandar para o fopen. fopen(arquivo,"rb"). Ou você já define esse caminho com #define e depois pede o nome do arquivo e usa o sprintf... Exemplo: #include <stdio.h> #define PATH "/home/CIN/lfms/Documents/" int main(){ char arquivo[100], buffer[100]; printf("Nome do arquivo: "); scanf(" %[^\n]s", &arquivo); sprintf(&buffer, "%s%s", PATH, arquivo); //... fopen(buffer, "rb"); }
  21. As medidas variam de jogo para jogo, geralmente os jogos de 2d usam de 32x32, 64x64, 128x64. Isso já é visado antes de criar os gráficos, pois a pessoa tem uma ideia do tamanho dos items, tiles, objetos, etc. Na montagem de um sprite, onde temos uma sequência de movimentos, é necessário que cada frame respeite o tamanho do personagem individual, não ultrapassando os limites da imagem. Para tirar as medidas no momento do desenho use um Grid, no gimp você pode configurar em Imagem -> Configurar Grid Assim você tem uma ideia de onde desenhar.
  22. @Ceifador1998 Então, observe a lógica, você primeiro deve preencher os números no vetor, isso você ja fez no primeiro for: for (i=0;i<50;i++) { printf("digite um numero:\n"); scanf("%d",&numeros[i]); } Agora perceba que você pede os números e eles são armazenados direto no vetor, não há um auxiliar, e o for é usado apenas para selecionar o índice do vetor. Para a função de busca, é necessário usar um loop, seja while, do...while, for. Dentro desse loop será feito a ENTRADA do numero a ser encontrado. Depois que é feito a parte de entrada do numero, use um for, igual esse ai em cima, e um if para verificar se o número da ENTRADA está no vetor com o indice i, ai apenas imprima a mensagem: printf("posicao no vetor: %d", i);
  23. @Fabio Guimarães Dionisio poderia descrever o que acontece quando tenta mudar a váriavel?
  24. @carlos20030 Se for um caso especifico de 3x3, você pode usar if e ir trocando a ordem, basta encontrar o maior dos 3, depois o médio e o menor. Se for mais do que 3, você pode usar if, e ir na ordem de encontrar o menor, depois o segundo menor, etc, até preencher o ultimo com o maior. Sem um código seu, só posso dar ideias...
  25. @brunoda6 Use um for para pular as linhas e outro para somar as colunas, ai no final da soma é só mostrar na tela a soma de cada linha. Só um rascunho: int x -> váriavel que recebe a soma for linha -> troca linha { for coluna -> soma colunas { x += matriz[linha][coluna]; } -> mostra x }

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!