Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Uso de arquivo de texto e impressão de matrizes


Posts recomendados

faça um programa em pascal para ler a matriz a (mostrada abaixo) de um arquivo chamado matriza.txt gravado no desktop, fazer as mudanças necessárias para transformá-la na matriz b (mostrada abaixo) e escrever a matriz a e a matriz b num arquivo chamado matrizb.txt a ser gravado no desktop

 Matriz A                                Matriz B
c  b  v  r                              c  a  s  a
a  o  e  a                              b  o  l  o
s  l  l  t                              v  e  l  a
a  o  a  o                              r  a  t  o

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
12 horas atrás, spqrt disse:

faça um programa em pascal para ler a matriz a (mostrada abaixo) de um arquivo chamado matriza.txt gravado no desktop, fazer as mudanças necessárias para transformá-la na matriz b (mostrada abaixo) e escrever a matriz a e a matriz b num arquivo chamado matrizb.txt a ser gravado no desktop

 

matriz  a                                                      matriz b

c   b   v   r                                                   c   a   s   a

a   o   e   a                                                   b   o   l   o

s    l   l    t                                                  v    e   l   a

a   o  a   o                                                   r    a   t   o

 

Inicialmente use 2 matrizes 4x4 de caracteres comuns (array of string). Preencha a matriz A no próprio código mesmo (ex.: matrizA[1,1] := 'c'; matrizA[1,2] := 'b'; etc). Após imprima a matriz A. Posteriormente imprima essa mesma matriz A apenas invertendo invertendo a coluna pela linha.

 

Não se preocupe com o uso de arquivos por enquanto... a principal parte é saber fazer essa "matriz transposta".

 

Poste o que conseguiu fazer e onde está com dúvidas.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

9 horas atrás, Simon Viegas disse:

 

Inicialmente use 2 matrizes 4x4 de caracteres comuns (array of string). Preencha a matriz A no próprio código mesmo (ex.: matrizA[1,1] := 'c'; matrizA[1,2] := 'b'; etc). Após imprima a matriz A. Posteriormente imprima essa mesma matriz A apenas invertendo invertendo a coluna pela linha.

 

Não se preocupe com o uso de arquivos por enquanto... a principal parte é saber fazer essa "matriz transposta".

 

Poste o que conseguiu fazer e onde está com dúvidas.

 

No aguardo.

 

adicionado 3 minutos depois

eu

program matriz;
var i,j,m,n:integer;
var a: array[1..4,1..4] of char;
begin
for i:= 1 to 4 do
begin
for j := 1 to 4 do
begin
write('a[',i,',',j,']==>');
read(a[i, j]);
end;
end;
for i:= 1 to 4 do
begin
for j := 1 to 4 do
begin
writeln('         ',a[i,j]);
end;
writeln;
end;
readln;
end.

só consigo usar esses comandos para matriz 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@spqrt. Faltou informar em qual parte está com dúvidas.

 

Temos 2 pontos que precisam ser verificados no momento:

 

1 - Aprender a imprimir a matriz na tela (dificuldade atual);

2 - Imprimir a matriz transposta como sugerido no enunciado do problema.

 

obs.: só depois passar a mexer com arquivo. Não tente fazer tudo junto!!!

 

 

Vamos agora tratar do 1

 

Inicialmente segue pequenos ajustes, de detalhes, em relação ao seu código original.

program Matriz;
var //procure declarar somente o que precisa até o momento  
  i, j :integer;
  a   :array[1..4, 1..4] of char;
begin
for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    begin
    write('a[', i, ',', j, ']==>');
    {read(a[i, j]);} //no Pascal evite usar o read(). Use apenas readln()
    readln(a[i, j]);
    end;
  end;
for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    begin
    writeln('         ', a[i, j]);
    end;
  writeln;
  end;
readln;
end.

 

Beleza?

 

 

 

Em relação a "imprimir uma matriz na tela".

 

Nesse momento "não sabemos como faz". Vemos que a "matriz" está ficando apenas em "uma coluna".

 

Então, a minha sugestão é ficar fazendo testes... ir futucando até que fique de uma forma legal. Daí, como a leitura da matriz está teoricamente correta, o foco aqui poderia ficar concentrado apenas nessa exibição da matriz na tela. Certo? Para efetuar os testes, toda vez seria necessário ficar preenchendo a matriz e ver como ficou o resultado, daí, para facilitar eu imaginei duas formas:

 

1) Utilizar uma matriz menor:

program Matriz;
var
  i, j :integer;
  a   :array[1..4, 1..4] of char;
begin
for i:= 1 to 2 do
  begin
  for j := 1 to 2 do
    begin
    write('a[', i, ',', j, ']==>');
    readln(a[i, j]);
    end;
  end;
for i:= 1 to 2 do
  begin
  for j := 1 to 2 do
    begin
    writeln('         ', a[i, j]);
    end;
  writeln;
  end;
readln;
end.

Veja que apenas mudei os parâmetros dos for. Esse código acima é apenas um esboço... como sugerido, a proposta é "fazer testes e descobrir/aprender a imprimir uma matriz no Pascal".

 

Com esse código vai precisar ficar preenchendo apenas 4 letras por teste.

 

 

 

2) Colocar para preencher a matriz original com dados "aleatórios":

program Matriz_Teste_Impressao;
var
  i, j :integer;
  a   :array[1..4, 1..4] of char;
begin
for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    begin
    a[i, j] := 'x';
    writeln('a[', i, ',', j, ']==>', a[i, j]);
    end;
  end;
  
//VOCÊ PRECISA AJUSTAR O TRECHO ABAIXO
for i:= 1 to 4 do 
  begin
  for j := 1 to 4 do
    begin
    writeln('         ', a[i, j]);
    end;
  writeln;
end;
readln;
end.

Aqui já vai preencher sozinho, ou seja: apenas vai ficar precisando fazer ajustes na parte de imprimir... vai futucando até ficar legal.

 

***

 

Pronto: a proposta no momento é pegar um dos 2 códigos acima (acho melhor o segundo) e ficar fazendo ajustes na parte da impressão. Vá fazendo testes.

 

Após poste o código completo com essa impressão da matriz... caso mesmo após várias tentativas e ainda sim tenha dificuldades, é só avisar!

 

 

Só após saber imprimir uma matriz na tela, passe para tentar imprimir a matriz transposta. (se não consegue imprimir uma matriz, como vai conseguir imprimir a sua transposta? da mesma forma: se não consegue imprimir uma matriz por um vetor, como vai conseguir imprimir vindo de um arquivo?... é mais fácil subdividir os problemas)

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

program Matriz_Teste_Impressao;
var
i, j :integer;
a   :array[1..4, 1..4] of char;
begin
  for i:= 1 to 4 do
  begin
    for j := 1 to 4 do
    begin
      a[i, j] := 'x';
      write('a[', i, ',', j, ']==>', a[i, j]);
    end;
  end;
  
  //VOCÊ PRECISA AJUSTAR O TRECHO ABAIXO
  for i:= 1 to 4 do
  begin
    for j := 1 to 4 do
    begin
      write('          ', a[i,j], ' ')  ;
    end;
    writeln;
  end;
  readln;
writeln;
for i:= 1 to 4 do
begin
for j := 1 to 4 do
begin
  write('          ', a[j,i], ' ')  ;
end;
writeln;
end;
readln;
end.

 

adicionado 1 minuto depois

acho que agora sim imprimir a matriz original depois a transposta trocando o j e o i 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1) EM RELAÇÃO A IMPRESSÃO DAS MATRIZES

 

É por ai mesmo... creio que essa etapa já pode ser superada. :D
 

Apenas um adendo: Sempre mantenha seu código indentado;

 

Ex.:

program Matriz_Teste_Impressao;
var
  i, j :integer;
  a    :array[1..4, 1..4] of char;
begin
  for i:= 1 to 4 do
  begin
    for j := 1 to 4 do
    begin
      a[i, j] := 'x';
      write('a[', i, ',', j, ']==>', a[i, j]);
    end;
  end;

  for i:= 1 to 4 do
  begin
    for j := 1 to 4 do
    begin
      write('          ', a[i,j], ' ');
    end;
    writeln;
  end;
  readln;
  
  writeln;
  for i:= 1 to 4 do
  begin
    for j := 1 to 4 do
    begin
      write('          ', a[j,i], ' ');
    end;
  writeln;
  end;
  readln;
end.

 

 

Eu tenho um padrão um pouco diferente... eu levo o begin um dente pra frente, mas mantenho o conteúdo deste alinhado. (geralmente o pessoal dá mais um dente). Ficaria assim:

program Matriz_Teste_Impressao;
var
  i, j :integer;
  a    :array[1..4, 1..4] of char;
begin
for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    begin
    a[i, j] := 'x';
    write('a[', i, ',', j, ']==>', a[i, j]);
    end;
  end;

for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    begin
    write('          ', a[i,j], ' ');
    end;
  writeln;
  end;
readln;

writeln;
for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    begin
    write('          ', a[j,i], ' ');
    end;
  writeln;
  end;
readln;
end.

 

PS: resumindo o código:

program Matriz_Teste_Impressao;
var
  i, j :integer;
  a    :array[1..4, 1..4] of char;
begin
for i:= 1 to 4 do
  for j := 1 to 4 do
    begin
    a[i, j] := 'x';
    write('a[', i, ',', j, ']==>', a[i, j]);
    end;

for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    write('          ', a[i,j], ' ');
  writeln;
  end;
readln;

writeln;
for i:= 1 to 4 do
  begin
  for j := 1 to 4 do
    write('          ', a[j,i], ' ');
  writeln;
  end;
readln;
end.

Tem um padrão também que colocar o begin na linha de cima.. tipo depois do do lá no for, em fim. O importante é que SEMPRE MANTENHA INDENTADO EM ALGUM PADRÃO. Beleza?

 

 

PS:

Para testar se a matriz ficou transposta, necessitaria de valores distintos para as linhas e colunas (no programa atual, aparece tudo igual, rs). Para efeitos de exemplo, segue um código que gera alfabeticamente:

  for i:= 1 to 4 do
    for j := 1 to 4 do
    begin
      a[i, j] := Chr(i+j*4-5 + 97);
      writeln('a[', i, ',', j, '] ==> ', a[i, j]);
    end;

 

 

2) EM RELAÇÃO A PARTE DOS ARQUIVOS DE TEXTO

Aqui vamos entrar num novo mundo. O ponto aqui é SABER LER E ESCREVER EM ARQUIVOS DE TEXTO (TEXT) NO PASCAL. Se já souber! Massa! Se não... vamos lá.

 

A dica básica continua:

4 horas atrás, Simon Viegas disse:

Não tente fazer tudo junto!!!

 

Simplesmente crie um novo programa. Ex.:

- crie uma pasta chamada temp lá no C:\;

- dentro desta pasta crie o arquivo de texto arquivo.txt. O caminho completo ficará: "C:\temp\arquivo.txt";

- dentro do arquivo insira um texto qualquer, mas que seja separado por linhas, ex.:

Somos a turma tricolor
Somos a voz do campeão
Somos do povo um clamor
Ninguém nos vence em vibração

- crie um programa NOVO Pascal que leia esse arquivo de texto e imprima cada linha na tela.

- posta o código aqui para analisarmos.

 

 

Qualquer dúvida é só postar.


No aguardo.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...