Ir ao conteúdo
  • Cadastre-se

Guilherme Sixe

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Reputação

5
  1. Engraçado que o mypokemon esta td correto, só o pokemon_adv que esta saindo lixo no print. adicionado 10 minutos depois Eu fui diminuindo o meu codigo pra saber da onde é o erro. E ele imprimindo lixo no pokemon_adv. Olhe só: #include<stdio.h> #include<stdlib.h> typedef struct{ char nome[20]; //struct dos pokemons iniciais int forca; int exp; char tipo[20]; int nivel; int cura; int potencia; int ataque; }pokemon; int main(){ char jogar; int poke; char escolha; pokemon Bulbassauro = { "Bulbassauro", rand()%10+1, 1, "Treinador", 1, rand()%3+1, 0, (Bulbassauro.forca*Bulbassauro.nivel)+Bulbassauro.exp+Bulbassauro.cura }; pokemon mypokemon = { "Bulbassauro", rand()%10+1, 1, "Treinador", 1, rand()%3+1, 0, (Bulbassauro.forca*Bulbassauro.nivel)+Bulbassauro.exp+Bulbassauro.cura }; pokemon pokemon_adv = { "Bulbassauro", rand()%10+1, 1, "Treinador", 1, rand()%3+1, 0, (Bulbassauro.forca*Bulbassauro.nivel)+Bulbassauro.exp+Bulbassauro.cura }; printf("\n\n Pokemon do adversario:\n Nome:\n Nivel: %d\n Força: %d\n Tipo: \n Ataque:%d", pokemon_adv.nome, pokemon_adv.nivel, pokemon_adv.forca, pokemon_adv.tipo, pokemon_adv.ataque); // ESTA IMPRIMINDO LIXO. printf("\n\n Meu Pokémon:\n Nome: %s\n Nivel: %d\n Força: %d\n Tipo: %s\n Ataque:%d\n\n", mypokemon.nome, mypokemon.nivel, mypokemon.forca, mypokemon.tipo, mypokemon.ataque);// ESTA IMPRIMINDO CERTO system("pause"); return 0; }
  2. Preciso buscar elementos em uma matriz, mas eu não posso entrar com as coordenadass como inteiro (Ex: scanf("%d %d", &linha, &coluna);), e sim como uma char e um inteiro na forma de string (Ex: A3 = Linha 1 e Coluna 3). EX: for(i=0;i<5;i++){ for(j=0;j<5;j++){ mat[i][j]=i; } } //Diga o elemento que se encontra na Mat[2][3], usando string "A1" para linha 1 Coluna 1, "B2", para Linha2 Coluna 2 e assim sucessivamente Gostaria de saber como eu lendo uma string A1 ele pode associar que essa e a linha 1 e coluna 1 da matriz? A=1 B=2 C=3 D=4 I=5 Eu tentei ler primeiro str[0] (que seria A, e assim eu associava o A a 1 com um "if") mas eu nao consigo fazer isso com o str[1] e associar a um inteiro pois ele intende que esse "1" e um char, e nao uma inteiro. Como posso estar fazendo isso? Ler uma string do formato LetraNumero e associar a uma coordenada na matrioz. Nao sei se eu consegui me expressar bem. Obrigado desde ja.
  3. 2)Crie uma função que coloque o número 1 em uma matriz, nas posições indicadas por um arquivo txt. A função possui o seguinte protótipo: - void leArquivo(char nome[ ], int matriz[ ][5]); - O parâmetro “nome” indica o nome do arquivo que será aberto. - O arquivo possui apenas dois caracteres em cada linha, seguindo o modelo do trabalho final: Ex: A1 B2 D4 Cada letra fica responsavel por uma linha da matriz. A =0, B=1 e assim por diante. O parâmetro “matriz” é uma matriz preenchida somente com zeros. Eu consigo colocar os números na linha certa, mas na hora de ler o segundo caractere da string (para poder alocar na coluna), ele pega lixo e não o numero certo. Se puderem, deem uma olhada no meu codigo. Obs: Na hora de ler o segundo caractere da string, quando substituo a variável coordenada[1] por coordenada[2], que por sinal nao existe, ele aloca os numeros "1" na primeira coluna, incorretamente. O problema é, nao consigo ler o segundo caractere da string da forma int para poder alocar na coluna certa. Como posso fazer isso?. Obrigado. #include<stdio.h> #include<stdlib.h> void leArquivo(char nome[], int matriz[][5]); int main(){ char nome[200] = {"Questao 2 Slide.txt"}; int matriz[5][5], i, j; for(i=0;i<5;i++){ for(j=0;j<5;j++){ matriz[i][j]=0; } } leArquivo(nome, matriz); system("pause"); return 0; } void leArquivo(char nome[], int matriz[][5]){ FILE *f; char coordenada[2]; int i, x, y, linha, b=0; f=fopen(nome, "r"); if(f==NULL){ perror("Erro!"); exit(-1); } while(fscanf(f, "%s", &coordenada)!=EOF){ printf("Coordenadas %d = %s\n", b, coordenada); b++; if(coordenada[0]=='A'){ linha=0; } if(coordenada[0]=='B'){ linha=1; } if(coordenada[0]=='C'){ linha=2; } if(coordenada[0]=='D'){ linha=3; } if(coordenada[0]=='E'){ linha=4; } for(x=0;x<5;x++){ for(y=0;y<5;y++){ matriz[linha][coordenada[1]]=1; } } } printf("\n\n\n\n\n"); for(x=0;x<5;x++){ printf("\n"); for(y=0;y<5;y++){ printf("%d ", matriz[x][y]); } } fclose(f); }
  4. Sim,eu tinha tirado para testar o nivel e ataque. Quando coloco ele continua vindo lixo. Vem varios caracters aleatórios no nome e tipo.
  5. Bom dia pessoal. Estou com um problema estranho no meu código. Quando eu peço para imprimir informações de uma struct, ele imprime apenas de uma variavel da estruct, na outra variavel ele imprimi lixo, como seu eu não atribuísse nada a ela, mas eu atribui, como na variável anterior. Peço que vejem o meu codigo. No final do codigo eu printo as informações das duas variaveis (pokemon_adv e mypokemon) da minha struct pokemon_treinador , mas ele so imprime certo uma (mypokemon), na pokemon_adv ele imprime lixo. #include<stdio.h> #include<stdlib.h> typedef struct{ char nome[20]; //struct dos pokemons iniciais int forca; int exp; char tipo[20]; int nivel; int cura; int potencia; int ataque; }pokemon; typedef struct{ //structs dos treinadores int exp_total; char poke; }treinador; typedef struct{ char nome[20]; int forca; int exp; char tipo[20]; int nivel; int cura; int potencia; int ataque; } pokemon_treinador; int main(){ char jogar; int poke; char escolha; pokemon Bulbassauro = { "Bulbassauro", rand()%10+1, 1, "Treinador", 1, rand()%3+1, 0, (Bulbassauro.forca*Bulbassauro.nivel)+Bulbassauro.exp+Bulbassauro.cura }; pokemon Squirtle = { "Squirtle", rand()%10+1, 1, "Treinador", 1, 0, 0, (Squirtle.forca*Squirtle.nivel)+Squirtle.exp }; pokemon Pikachu = { "Pikachu", rand()%10+1, 1, "Treinador", 1, 0, rand()%3+1, (Pikachu.forca*Pikachu.nivel)+Pikachu.exp+Pikachu.potencia }; pokemon Sandshrew = { "Sandshrew", rand()%10+1, 1, "Treinador", 1, 0, 0, 2*((Sandshrew.forca*Sandshrew.nivel)+Sandshrew.exp) }; pokemon_treinador pokemon_adv, mypokemon; treinador treinador1, treinador2; treinador1.exp_total=1; treinador2.exp_total=1; poke=rand()%4+1;// MAQUINA ESCOLHENDO SEU POKEMON INICIAL ALEATORIAMENTE if(poke==1){ pokemon pokemon_adv = { "Bulbassauro", rand()%10+1, 1, "Treinador", 1, rand()%3+1, 0, (Bulbassauro.forca*Bulbassauro.nivel)+Bulbassauro.exp+Bulbassauro.cura }; } if(poke==2){ pokemon pokemon_adv = { "Squirtle", rand()%10+1, 1, "Treinador", 1, 0, 0, (Squirtle.forca*Squirtle.nivel)+Squirtle.exp }; } if(poke==3){ pokemon pokemon_adv = { "Pikachu", rand()%10+1, 1, "Treinador", 1, 0, rand()%3+1, (Pikachu.forca*Pikachu.nivel)+Pikachu.exp+Pikachu.potencia }; } if(poke==4){ pokemon pokemon_adv = { "Sandshrew", rand()%10+1, 1, "Treinador", 1, 0, 0, 2*((Sandshrew.forca*Sandshrew.nivel)+Sandshrew.exp) }; } printf("\t\t\n\n\n [J] para JOGAR\n\n\t\t [?] para saber como JOGAR\n\n "); //MENU scanf("%c", &jogar); switch(jogar){ case 'J': system("cls"); printf("\n\n Escolha o seu Pokémon incial entre as opções a baixo:\n\n\n [B] BULBASSAURO [P] PIKACHU [S] SQUIRTLE [A] SANDSHREW\n\n "); fflush(stdin); scanf("%c", &escolha); //EU ESCOLHENDO MEU POKEMON INICIAL if(escolha=='B'){ system("cls"); pokemon mypokemon = { "Bulbassauro", rand()%10+1, 1, "Treinador", 1, rand()%3+1, 0, (Bulbassauro.forca*Bulbassauro.nivel)+Bulbassauro.exp+Bulbassauro.cura }; printf("\n\n Parabéns! Seu primeiro Pokémon é o %s", mypokemon.nome); printf("\n\n Nome: %s\n Nivel: %d\n Força: %d\n Tipo: %s\n Ataque:%d\n\n", mypokemon.nome, mypokemon.nivel, mypokemon.forca, mypokemon.tipo, mypokemon.ataque); treinador1.poke=='B'; } if(escolha=='P'){ system("cls"); pokemon mypokemon = { "Pikachu", rand()%10+1, 1, "Treinador", 1, 0, rand()%3+1, (Pikachu.forca*Pikachu.nivel)+Pikachu.exp+Pikachu.potencia }; printf("\n\n Parabéns! Seu primeiro Pokémon é o %s", mypokemon.nome); printf("\n\n Nome: %s\n Nivel: %d\n Força: %d\n Tipo: %s\n Ataque:%d\n\n", mypokemon.nome, mypokemon.nivel, mypokemon.forca, mypokemon.tipo, mypokemon.ataque); treinador1.poke=='P'; } if(escolha=='S'){ system("cls"); pokemon mypokemon = { "Squirtle", rand()%10+1, 1, "Treinador", 1, 0, 0, (Squirtle.forca*Squirtle.nivel)+Squirtle.exp }; printf("\n\n Parabéns! Seu primeiro Pokémon é o %s", mypokemon.nome); printf("\n\n Nome: %s\n Nivel: %d\n Força: %d\n Tipo: %s\n Ataque:%d\n\n", mypokemon.nome, mypokemon.nivel, mypokemon.forca, mypokemon.tipo, mypokemon.ataque); treinador1.poke=='S'; } if(escolha=='A'){ system("cls"); pokemon mypokemon = { "Sandshrew", rand()%10+1, 1, "Treinador", 1, 0, 0, 2*((Sandshrew.forca*Sandshrew.nivel)+Sandshrew.exp) }; printf("\n\n Parabéns! Seu primeiro Pokémon é o %s", mypokemon.nome); printf("\n\n Nome: %s\n Nivel: %d\n Força: %d\n Tipo: %s\n Ataque:%d\n\n", mypokemon.nome, mypokemon.nivel, mypokemon.forca, mypokemon.tipo, mypokemon.ataque); treinador1.poke=='W'; } break; } system("cls"); printf("\n\n Pokédex:"); printf("\n\n Pokemon do adversario:\n Nome:\n Nivel: %d\n Força: %d\n Tipo: \n Ataque:%d", pokemon_adv.nome, pokemon_adv.nivel, pokemon_adv.forca, pokemon_adv.tipo, pokemon_adv.ataque); // ESTA IMPRIMINDO LIXO. printf("\n\n Meu Pokémon:\n Nome: %s\n Nivel: %d\n Força: %d\n Tipo: %s\n Ataque:%d\n\n", mypokemon.nome, mypokemon.nivel, mypokemon.forca, mypokemon.tipo, mypokemon.ataque);// ESTA IMPRIMINDO CERTO system("pause"); return 0; }
  6. Agradeço as dicas de vocês. Único jeito que consegui foi levando o maior e menor como ponteiro, mesmo. Obg.
  7. Escreva uma função que receba 3 números informados pelo usuário no programa principal. A função deverá retornar o maior e o menor número. Posteriormente, o programa principal deverá imprimir essas informações. Essa função não possui o comando printf. -> O meu codigo ta mostrando ao contrario, nao sei se o jeito que eu estou retornando esta certo, ou e o codigo da funcao que da margem pra erro. Dependendo dos numeros que eu entro, ele retorna certo. Se alguem souber onde esta a falha, agradeceria. #include<stdlib.h> #include<stdio.h> int maior(int X, int Y, int Z); int main(){ int a, b, c; scanf("%d %d %d", &a, &b, &c); printf("Maior: %d\n\nMenor:%d\n\n", maior(a, b, c)); system("pause"); return 0; } int maior(int X, int Y, int Z){ int maior, menor; if(X > Y){ maior = X; }else{ maior = Y; } if(Z > maior){ maior = Z; } if(X < Y){ menor = X; } else{ menor = Y; } if(Z < menor){ menor = Z; } return(maior, menor); }
  8. Boa noite, pessoal. Bom, eu sei que existe uma função que remove espaços do começo e fim de uma string, mas estou fazendo um trabalho que é preciso fazer isso sem usar essa tal função. Pesquisei um pouco e quebrei a cabeça ate chegar nesse codigo. Enfim, nao consigo mais progredir. Na minha mente, ela deveria estar funcinando. Se alguem souber o motivo de nao estar funcionando, ficaria grato. #include <stdio.h> #include <string.h> void TirarVacuo(char *s); int main(){ char texto[] = " testando remocao de espacos de texto arbitrario "; TirarVacuo(texto); printf("\n\n\%s", texto); return 0; } void TirarVacuo(char *s){ int i; char temp[strlen(s)]; // lado esquerdo for(i=0;i<strlen(s) && s[i]==' ';i++); temp[strlen(s)-i] = '\0'; // lado direito for(i=strlen(s);s[i]==' ' || s[i]=='\0';i--); temp[strlen(temp)-(strlen(s)-i)+1] = '\0'; strcpy(s,temp); } to.
  9. Escolha um jogo de cartas, baseado em um “baralho tradicional” (cada carta tem seu naipe e seu valor). Implemente a parte de distribuição (sorteio) de cartas para 2 jogadores, considerando que cada jogador ira receber 5 cartas. Exiba na tela as cartas que cada um dos jogadores recebeu. então pessoal. Esta completo o meu codigo e compilando, mas esta parecendo um erro! As vezes aparece um lixo no espaço que mostra o valor da carta. Ja procurei algo que esteja no codigo, mas ele me parece perfeito, sem erros. Alguem sabe porque esta acontecendo isso? Desde ja agradeço. #include<stdlib.h> #include<stdio.h> #include<string.h> #include<time.h> typedef struct{ char naipe[20]; int valor; char cor; }cartas; int main(){ cartas carta[51]; char naipe[12]= "Copas"; char naipe2[12]="Espadas"; char naipe3[12]="Paus"; char naipe4[12]="Ouros"; int i, n, n2; srand(time(NULL)); for(i=0; i<=12; i++){ if((i+1)%2==0){ carta[i].cor= 'V'; }else{ carta[i].cor= 'P'; } carta[i].valor=i+1; strcpy(carta[i].naipe, naipe); } for(i=13; i<=25; i++){ if((i+1)==0){ carta[i].cor= 'V'; }else{ carta[i].cor= 'P'; } carta[i].valor=i-12; strcpy(carta[i].naipe, naipe2); } for(i=26; i<=38; i++){ if((i+1)==0){ carta[i].cor= 'V'; }else{ carta[i].cor= 'P'; } carta[i].valor=i-25; strcpy(carta[i].naipe, naipe3); } for(i=39; i>=51; i++){ if((i+1)==0){ carta[i].cor= 'V'; }else{ carta[i].cor= 'P'; } carta[i].valor=i-38; strcpy(carta[i].naipe, naipe4); } printf("Joaosinho da Silva recebera:\n"); for(i=0; i<5;i++){ n=rand()%52; printf("\n%d %c de %s", carta[n].valor, carta[n].cor, carta[n].naipe); } printf("\n\nJulhinha da Silva recebera:\n"); for(i=0; i<5;i++){ n2=rand()%50; printf("\n%d %c de %s", carta[n2].valor, carta[n2].cor, carta[n2].naipe); } printf("\n\n"); system("pause"); return 0; }
  10. #include<stdlib.h> #include<stdio.h> #include<string.h> #include<time.h> typedef struct{ char nome[20]; }pokemon; int main(){ pokemon Bulbassauro; Bulbassauro.nome[6] = "Bulba"; sprintf("Nome: %s", Bulbassauro.nome); system("pause"); return 0; } Erro: [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings] Com o posso resolver esse erro? Obg.
  11. Estou criando um jogo (Pokemon), no dev c. Eu fiz uma matriz que representa o campo de jogo, onde eu ando com um caracter. No campo tem outros caracteres que representam os pokemons, caso eu entre na célula desse caracter, acusa que eu encontrei um pokemon, mas eu preciso deixar esses caracteres invisiveis (colocando cor preta) para que o jogador nao os veja, e assim fique andando ate achar um pokemon. Alguem sabe como faço isso, ou se da pra fazer.
  12. So esta mostrando primeiro primo. #include<stdio.h> #include<stdlib.h> int main(){ int div=0,i, n=2; while(n<100){ for(i=1;i<=n;i++){ if(n%i==0){ div++; } } if(div==2){ printf("\n%d", n); } n++; } system("pause"); return 0; }
  13. Meu código ele funciona pela metade. Faça um programa para ler 10 números DIFERENTES a serem armazenados em um vetor. Os dados deverão ser armazenados no vetor na ordem que forem sendo lidos, sendo que caso o usuário digite um número que já foi digitado anteriormente, o programa deverá pedir para ele digitar outro número. Note que cada valor digitado pelo usuário deve ser pesquisado no vetor, verificando se ele existe entre os números que já foram fornecidos. Exibir na tela o vetor final que foi digitado. adicionado 4 minutos depois #include<stdlib.h> #include<stdio.h> int main(){ int i, vet[10], aux[10], j; for(i=0;i<10;i++){ scanf("%d", &vet[i]); for(j=0;j<i; j++){ if(vet[i]==vet[j]){ printf("\nNumero repetido, entre com outro.\n"); scanf("%d", &aux[i]); vet[i]=aux[i]; } } } 1 for(i=0;i<10;i++){ printf("\n%d", vet[i]); } system("pause"); return 0; } [RESOLVIDO] Ja resolvi pessoal. Vou deixa o codigo aqui. #include<stdlib.h> #include<stdio.h> int main(){ int i, vet[10], aux[10], j, k; for(i=0;i<10;i++){ scanf("%d", &vet[i]); for(j=0;j<i; j++){ if(vet[i]==vet[j]){ printf("\nNumero repetido, entre com outro.\n"); i--; continue; } } } for(i=0;i<10;i++){ printf("\n%d", vet[i]); } system("pause"); return 0; }
  14. Eu pensei em fazer com vetor, mas como meu professor ainda nao chegou no assunto de vetores, (apenas for-do while-while), creio que não eu possa usar. Eu tentei fazer deste jeito, mas da muito trabalho e ainda não sei se da certo. Gostaria de saber uma forma mais simples de fazer esta questão, se existir, e claro. Obrigado, segue o código ate onde cheguei antes da minha cabeça explodir. -> Escreva um programa que leia um número inteiro pelo teclado e mostre na tela quantas vezes cada um de seus dígitos aparece no número. OBS: Considere que o número avaliado deve ser menor (ou igual) a 10mil. Por exemplo: para o número 2151, exibir: 1: 2 vezes 2: 1 vez 5: 1 vez #include<stdio.h> #include<stdlib.h> main(){ int n, a, b, c; scanf("%d", &n); if((n>=10)&&(n<100)){ a=n/10; b=n-(a*10); if(a==b){ printf("%d = 1", a); } } if((n>=100)&&(n<1000)){ a=n/100; b=(n-(a*100))/10; c=n-(b*10); if((a=b)||(a==c)){ } if(b==c){ } if(){ } } if((n>=1000)&&(n<10000)){ a=n/1000; b=(n-(a*1000))/100; c=(n-(b*100))/10; d=n-(c*10); if(){ } if(){ } if(){ } if(){ } printf("",); } 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...