Ir ao conteúdo
  • Cadastre-se

Kuroh

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Tudo que Kuroh postou

  1. Bah, não acredito que foi só isso. Perdi um tempão tentando consertar o erro. Valeu pela ajuda.
  2. Eu preciso ler o que está escrito em um arquivo texto e colocar essas informações em uma matriz. Aqui está o que eu pensei em fazer: #include <stdio.h> int main() { FILE *arq; int l=0,c=0; char cenario[20][60]; arq=fopen("cenario1.txt", "r"); //abertura do arquivo if(arq==NULL) printf ("Erro ao abrir o arquivo"); //caso o arquivo não exista else { while((cenario[l][c]=fgetc(arq))!= EOF) //atribuição dos dados lidos no arquivo a uma matriz { c++; if(c==51) l++; } } fclose(arq); //fecha o arquivo for(l=0;l<10;l++) //mostra a matriz na tela { for(c=0;c<51;c++) printf("%c", cenario[l][c]); } return 0; } Porém ele só lê alguns dados e atribuí lixo ao resto da matriz. Alguma ideia do que está errado e como resolver? O arquivo que estou tentando ler é algo desse tipo: 11111111111111111111111111111111111111111111111111 10000000000000000000000000000000000000000000000001 10000000000000000000000000000000000000000000000001 100000000000000000000aaaaaaaaaaaaaa000000000000001 10000000000000000000000000000000000000000000000001 10000000003333333333333333333333333330000000000001 10000000000000000000000000000000000000000000000001 10000000000000000000000000000000000000000000000001 10000000000000000000000000000000000000000000000001 11111111111111111111111111111111111111111111111111 Lembrando que ao final de cada linha tem um "\n" do enter. Esse é o resultado que consegui: OBS: Quando o printf para mostrar a matriz está dentro do while ele imprime a matriz corretamente. Porém preciso usar essa matriz em outras funções, com o arquivo já fechado.
  3. Existe como atribuir os caracteres contidos em um arquivo txt a uma matriz? Por exemplo: { FILE *arq; char caractere; int l,c; char matriz[50][100]; arq=fopen("arquivo.txt", "r+"); if(arq==NULL) printf ("Erro ao abrir o arquivo"); else { while((caractere=fgetc(arq))!= EOF) { matriz[l][c]=caractere; l++; c++; } } fclose(arq); } Quando faço isso o programa acaba caindo. Alguém pode explicar o erro e como arrumá-lo? E também explicar como converter arquivo txt em binário?
  4. Olhe a imagem acima, talvez fique mais fácil de entender. Uma matriz é formada por linhas e colunas. No caso da sua matriz quando a linha e a coluna são 0 ou 6, o conteúdo da matriz é 0. Quando linha e coluna são 1 ou 5, o conteúdo da matriz é 1 e assim por diante. Para resolver isso você pode usar um encadeado de if's. if(coluna==0|| coluna==6||linha==0 || linha==6) atribui 0 else //é necessário colocar esse else, se não dará erro. if(coluna==1||coluna==5||linha==1||linha==5) atribui 1 Cadeia de if's não é uma coisa boa para se usar, mas como o seu código é pequeno pode resolver o problema. Se quiser evitar isso você pode usar um switch (talvez dê um pouco mais de trabalho, mas o código ficaria melhor organizado), ou pensar em alguma outra maneira melhor pra resolver o problema.
  5. Podem me indicar um bom site para ler sobre manipulação de arquivos binários e de texto em C? Já encontrei uns por aí, mas nada muito útil. Prefiro em português, mas aceito em inglês também.
  6. #include <stdio.h> #define DIM 7 int main () { int matriz [DIM][DIM]; int linha,coluna; for(linha=0; linha<DIM; linha++) //os 2 "for" percorrem a matriz { for (coluna=0; coluna<DIM; coluna++) { if(coluna<=linha) //atribui 1 da diagonal da matriz para baixo matriz[linha][coluna]=1; //note que o número de linha e coluna são iguais na diagonal else matriz[linha][coluna]=0; //atribui 0 para o resto printf("%d", matriz[linha][coluna]); //mostra a matriz na tela } printf("\n"); //usado para imprimir no formato da matriz } O segundo caso é basicamente a mesma coisa. Você terá que percorrer a matriz e atribuir o valor a elas. Note que é atribuído 0 quando linha = 0 e 6 e quando a coluna = 0 e 6. Nesse caso pode-se usar um if(coluna==0|| coluna==6||linha==0 || linha==6)
  7. Preciso fazer um programa que movimente um caractere na tela a partir do pressionamento das setas do teclado. Se for pressionada a seta para direita, por exemplo, o caractere deve continuar se movendo para direita até que uma outra seta (cima, baixo, esquerda) seja pressionada. Quando a nova seta for pressionada, o caractere deve se mover para nova direção. Quando for pressionada a tecla X, o programa deve encerrar. Fiz o seguinte código: #include <stdio.h>#include <Windows.h>#include <conio2.h> typedef struct { int x; int y; } COORDENADA; typedef struct { float points; int direcao_move; int cor; COORDENADA posicao; } JOGADOR; void move_player (JOGADOR *player, int direcao_move) //função para movimentar o caractere { getch(); direcao_move = getch(); switch (direcao_move) // os números usados correspondem ao "código" de cada seta { case 72:(*player).posicao.y--; //cima break; case 75: (*player).posicao.x--;; // esquerda break; case 80: (*player).posicao.y++; // baixo break; case 77: (*player).posicao.x++; // direita break; } } void show_player (JOGADOR *player) //mostra o caractere na tela { int posicao_atual[2]={(*player).posicao.x, (*player).posicao.y}; gotoxy(posicao_atual[0],posicao_atual[1]); printf("o"); }int main (){ JOGADOR player = {70.0, 77, 3, {5,5}}; while (player.direcao_move!='X') { move_player(&player, player.direcao_move); show_player(&player); }return (0);} Porém, como podem ver, toda vez que o laço retorna ao move_player, é feito o getch() novamente. Desse modo o caractere se movimenta apenas uma "casa" por vez, ao invés de continuar se movimentando para direita até que seja dito o contrário. Pensei em resolver isso usando o kbhit, mas também não deu certo. Alguma ideia de como arrumar isso?

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!