Ir ao conteúdo
  • Cadastre-se

Ajuda com matriz


Visitante: lisaeuparana

Posts recomendados

Visitante: lisaeuparana
 

F.tenorio, estou com um exercicio de pascal que eu n estou conseguindo fazer, eu travo na parte de armazenar os dados em um vetor ou matriz. segue abaixo o exercicio:

writeln('+--------------------------------------------------+');

writeln('| CATÁLOGO DE CD"S (tela 01) |');

writeln('|--------------------------------------------------+');

writeln('| 1- Incluir novo CD; |');

writeln('| 2- Listar CD´s cadastrados; |');

writeln('| 3- Sair; |');

writeln('+--------------------------------------------------+');

writeln('| Opção: [ ] |');

writeln('+--------------------------------------------------+');

writeln('| Mensagens: |');

writeln('| |');

writeln('+--------------------------------------------------+');

TELA02

writeln('+--------------------------------------------------+');

writeln('| CATÁLOGO DE CD"S (tela 02) |');

writeln('|--------------------------------------------------+');

writeln('| Título [ ] Artista [ ]|');

writeln('| |');

writeln('| Qtde. Musicas [ ] Gênero [ ] |');

writeln('| |');

writeln('+--------------------------------------------------+');

writeln('| Opção: [ ] (1- Gravar | 2- Cancelar) |');

writeln('+--------------------------------------------------+');

writeln('| Mensagens: |');

writeln('| |');

writeln('+--------------------------------------------------+');

1- ao escolher a opcao 1 deverá armazenar os dados em um vetor ou matriz, se escolher a opcao 2 limpe a tela e volte para a tela 01.

2- caso escolher a opcao 2 devera limpar a tela e gerar a lista de cd's armazenados em vetor ou matriz e apos utilizar a tecla enter volta para a tela 01.

3- Caso escolher a opcao 3 devera encerrar o programa.

f. tenorio agradeco a atencao e aguardo a reposta. Obrigado...

Link para o comentário
Compartilhar em outros sites

Primeiro, algumas funçoes que lhe serão uteis:


Declare na cláusula Uses as seguintes bibliotecas:
uses
SysUtils,
Windows;

//==============================================================================
// GOTO XY - posiciona cursor na posicao X Y indicada
//==============================================================================
procedure GotoXY(X, Y: integer);
var
Coord: TCoord;
begin
Coord.X:= x;
Coord.Y:= y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Coord);
end;

//==============================================================================
// CLR SCR - clear screen
//==============================================================================
procedure CLR_SCR();
var
Coord: tCoord;
CharactersWritten: Cardinal;
Info: tConsoleScreenBufferInfo;
Size: Cardinal;
begin
Coord.X:= 0;
Coord.Y:= 0;
GetConsoleScreenBufferInfo(GetStdHandle (STD_OUTPUT_HANDLE), Info);
Size:= succ(Info.dwSize.X) * succ(Info.dwSize.Y);
FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ', Size, Coord, CharactersWritten);
end;

Segundo o que entendi, a matriz de dados conterá os dados de titulo do CD, nome do artista e nome da música, certo?

então seria melhor você criar uma estrutura (record) e fazer uma matriz desta extrutura.

Seria mais ou menos isso:


type
TDados = record
artista: string;
musica: string;
end;

type
TCD = record
titulo: string; //titulo do CD
dados: array [1..20] of TDados; //ate 20 faixas de musicas por CD
end;

var
CD: array [1..100] of TCD; //matriz - ate 100 CDs podem ser armazenados
ind_cd: integer; //variavel usada como indice de CDs
ind_faixa: integer; //variavel usada como indice de faixas do CD
i,j: integer; //variaveis utilizadas para apresentar os dados armazenados

Agora na sua logica você deve utilizar o indice de CD para selecionar o CD que ira receber dados (faixas das musicas) e utilizar o indice de faixas para inserir os dados de artista e musica em cada CD.

Exemplo:


ind_cd:= 1; //indica que vai gravar dados do CD 1
CD[ind_cd].titulo:= 'Top 10'; //titulo do CD 1

ind_faixa:= 1; //indica que vai gravar dados da faixa 1
CD[ind_cd].dados[ind_faixa].artista:= 'Kazuza';
CD[ind_cd].dados[ind_faixa].musica:= 'O tempo nao para';

ind_faixa:= 2; //indica que vai gravar dados da faixa 2
CD[ind_cd].dados[ind_faixa].artista:= 'Ciara';
CD[ind_cd].dados[ind_faixa].musica:= 'Never ever';

ind_faixa:= 3; //indica que vai gravar dados da faixa 3
CD[ind_cd].dados[ind_faixa].artista:= 'Lady GaGa';
CD[ind_cd].dados[ind_faixa].musica:= 'Paparazzi';

Para você apresentar os dados para o usuario você deve fazer dois lacos "for", um para indice de CDs e um para indice das faixas dos CDS.

Exemplo:


for i:= 1 to ind_cd do //varre todos os CDS gravados
begin
writeln('Titulo do CD: ', CD[i].titulo); //mostra titulo do CD
for j:= 1 to 20 do //varre todos os dados das faixas do CD
begin
{testa pra ver se ha dados gravados para a faixa}
if(CD[i].dados[j].artista <> '')and(CD[i].dados[j].musica <> '')then
begin
{apresenta os dados das faixas}
Writeln(Format('faixa %d: %s - %s',[j,CD[i].dados[j].artista,CD[i].dados[j].musica]));
end;
end;
end;

Bom espero ter ajudado.

Tente desenvolver sua logica e qualquer duvida poste aí.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!