Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
rsm_rlb

RESOLVIDO Array [Dúvidas]

Recommended Posts

To com um trabalho para a conclusão do semestre. 

Ele é o seguinte:

 

Tenho 3 alunos. Cada um tem 5 matérias (Hist, Geo, Port, Mat e Ciencias) sendo 2 provas durante o semestre. Após o semestre acabar, o sistema tem que listar o nome de cada aluno, contendo a média de cada matéria e dizendo se o aluno foi reprovado ou não. 

 

A única regra imposta pelo professor é usar o Array. O problema é que eu to tomando uma surra. Não consegui entender o funcionamento dele. Busquei video aulas, algumas apostilas no google, só que to muito enrolado com isso. 

 

Alguém saberia me dar uma explicada de um jeito simples ou me passar alguma video-aula que me ajude a compreender melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Você precisa basicamente de duas coisas: array e record.

O passo inicial é o seu... minha sugestão é você criar um programa simples (apenas com um array de nomes), que leia o nome de 3 alunos e exiba o nome deles no final... a partir daí vai dando continuidade..

 

Poste aqui o seu código (use a tag CODE, botão <> no painel para ficar organizado) e onde está com dúvidas.

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Olá.

     

    Você precisa basicamente de duas coisas: array e record.

    O passo inicial é o seu... minha sugestão é você criar um programa simples (apenas com um array de nomes), que leia o nome de 3 alunos e exiba o nome deles no final... a partir daí vai dando continuidade..

     

    Poste aqui o seu código (use a tag CODE, botão <> no painel para ficar organizado) e onde está com dúvidas.

    No aguardo.

     

    Amigo, eu fiz mais ou menos assim: 

    Program Trabalho_Conclusao_Semestre;var  //Declaração de Variáveis	aluno: array [1..3] of string;	mat, port, hist, geo, cie: array[1..6] of real;	I : integer;	// Início do ProgramaBegin		// Edição de cor do Texto	textcolor(white);		for I:=1 to 3 do	Begin		write ('Digite o nome do aluno: ');		read (aluno[I]);	End;			clrscr;	// Essa função limpa todo o texto escrito		for I:=1 to 3 do	Begin	   write('Digite a nota do Primeiro Bim de Matemática para ', aluno[I] ,': ');	   read (mat[I]);	   write('Digite a nota do Primeiro Bim de Português para ', aluno[I] ,': ');	   read(port[I])	End;  	Begin	   write('Digite a nota do segundo Bim de Matemática para ', aluno[I] ,': ');	   read (mat[I]);	   write('Digite a nota do segundo Bim de Português para ', aluno[I] ,': ');	   read(port[I])	End;		clrscr;	// Essa função limpa todo o texto escrito  for I:=1 to 3 do  Begin     writeln ('O aluno ', aluno[I] ,' tirou ', mat[I] ,' em matemática.');     writeln;     writeln ('O aluno ', aluno[I] ,' tirou ', port[I] ,' em português.');  End;End.

     

    Tipo, ainda não joguei para calcular a média e coisa e tal. 

     

    tiErJiO.png

     

    Conforme a imagem, as dúvidas são as seguintes (Inicialmente):

     

    1- Como remover o excesso de casas decimais desse array?

    2- Para a primeira visualização antes de fazer a média eu precisaria listar as duas notas. Como posso fazer isso? 

    3- Tem como eu "agrupar" os nomes em relação as matérias? Se ver na imagem que eu coloquei, "Carlos" ficaria junto com "Artur" antes de pular a linha e dar espaçamento. 

     

    Acho que pra iniciar, seria isso. Terei outras dúvidas ao longo da finalização deste projeto. Mas, começando com isso mesmo.

    Editado por Simon Viegas

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá,
     

    1- Como remover o excesso de casas decimais desse array?

    O excesso de casas decimais não é do array em si, mas da variável do tipo real.. (o array é como um "conjunto de variáveis").

    Para corrigir, uma forma seria formatando o número.  Ex.:

    variavel_do_tipo_real:x:y

    Sendo X o número de casas reservadas a esquerda (o número ocupará pelo menos X algarismos de comprimento, sendo colocado espaços a esquerda), e Y o número de casas decimais. (no código abaixo já demonstro)

     

     

    2- Para a primeira visualização antes de fazer a média eu precisaria listar as duas notas. Como posso fazer isso?

    Não necessariamente você precisa listar... vai depender como você quer que o programa se comporte... Se quer listar, lista! (o cálculo não tem correlação com a exibição). Para calcular uma média basta pegar o valores e calcular... sendo Media = soma da notas / quantidade de notas... logo, algo como: (nota1+nota2)/2.

     

     

    3- Tem como eu "agrupar" os nomes em relação as matérias? Se ver na imagem que eu coloquei, "Carlos" ficaria junto com "Artur" antes de pular a linha e dar espaçamento. 
     
    Acho que pra iniciar, seria isso. Terei outras dúvidas ao longo da finalização deste projeto. Mas, começando com isso mesmo.

     

    Sim tem... como sugerido, nenhuma parte do programa tem correlação com a outra, essa sensação é apenas feita pelo programador... se você quer que fique junto, imprima para sair junto!

     

     

     

      for I:=1 to 3 do  Begin     writeln ('O aluno ', aluno[I] ,' tirou ', mat[I] ,' em matemática.');     writeln;     writeln ('O aluno ', aluno[I] ,' tirou ', port[I] ,' em português.');  End;End.

     

    No caso, você colocou um writeln; entre a impressão do primeiro e segundo.. se quer que fique junto, tire-o...

     

     

    ***

    Abaixo peguei o seu código e fiz alguns ajustes (basicamente estéticos) e já incluir algumas coisas que comentei acima... qualquer coisa ou se baseia nele para "corrigir" o seu, ou passar usar ele mesmo.. daí vai corrigindo o que falta para ficar "tudo perfeito" apenas com essas características (ler notas e exibir)... só depois tente inserir as médias... (Não tente fazer tudo de vez!!! a ideia é inserir uma coisa nova e deixa 100%, inserir outra e deixar 100%... e não tentar fazer tudo de uma vez e não sair nada!). Claro que se inserir um novo e já ficar tudo bom, insere outra!!! Mas "nunca" tente fazer tudo de uma vez!! (pelo menos por enquanto).

    program Trabalho_Conclusao_Semestre;uses  CRT; //carrega comandos extras como ClrScr, readlnKey, TextColor, TextBackGround etc (alguns compiladores não precisa)const  QDT_alunosS=3;var  alunos: array [1..QDT_alunosS] of string;  mat,  port,  hist,  geo,  cie   :array[1..2,1..QDT_alunosS] of real; //[unidade,id_do_aluno]  i     :integer;//INÍCIO DO PROGRAMABEGINTextColor(White); //cor do texto branca (mais fluorescente)for i:=1 to 3 do  begin  write  ('Digite o nome do alunos: '); readln (alunos[I]);  end;	ClrScr;	//limpa a telafor i:=1 to 3 do  begin  write  ('Digite a nota do Primeiro Bim de Matemática para ',alunos[i],': '); readln (mat[1,i]);  write  ('Digite a nota do Primeiro Bim de Português para  ',alunos[i],': '); readln(port[1,i])  end;{begin}//write  ('Digite a nota do segundo Bim de Matemática para  ',alunos[I],': '); readln (mat[2,i]);//write  ('Digite a nota do segundo Bim de Português para   ',alunos[I],': '); readln(port[2,i]);{End;}ClrScr;for I:=1 to 3 do  begin  writeln('O aluno ',alunos[i],' tirou ',mat[1,i]:0:2 ,' em matemática.');  writeln('O aluno ',alunos[i],' tirou ',port[I,2]:0:2,' em português. ');  writeln;  end;readln;END.

    PS: Como sugestão, não use TAB (TABULAÇÃO), use apenas espaços. (evitar)
    PS2: Você "obrigatoriamente" deve deixar o seu código 100% identado!!!!  Não precisa ser nesse "meu" padrão (especialmente em relação ao alinhamento dos begin/end), mas se tiver um padrão seu, tem que está todo seguindo a mesma regra... seu último for mesmo está desalinhado.. rs.


    No aguardo.

    Editado por Simon Viegas
    PS

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Vou separar algumas partes do código que você colocou e pedir que me explique o que cada uma quer dizer, por gentileza.

    mat[1,i]:0:2port[I,2]:0:2

    Já entendi que o "0:2" seria o tamanho do número de casas. Mas e o "1" e "2" junto ao i ?

    uses
      CRT; //carrega comandos extras como ClrScr, readlnKey, TextColor, TextBackGround etc (alguns compiladores não precisa)
    const
      QDT_alunosS=3;

    Essas duas opções também não vi na faculdade. "uses" e "const". O CRT você disse que carrega comandos, mas no Pascalzim esses comandos já rodam sem problemas. 

    array[1..2,1..QDT_alunosS]

    Em relação ao array das matérias. se eu tenho 2 matérias para cada aluno, não teria que ser 6 matérias no total ao invés de 02?

     

     

     

    Não necessariamente você precisa listar... vai depender como você quer que o programa se comporte... Se quer listar, lista! (o cálculo não tem correlação com a exibição). Para calcular uma média basta pegar o valores e calcular... sendo Media = soma da notas / quantidade de notas... logo, algo como: (nota1+nota2)/2.

     

    O que eu falei que preciso listar, é porque o professor pediu. Numa tela, tenho que listar as notas dos dois bimestres. Só que só consegui fazer aparecer a do primeiro. Por isso questionei.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá.
     

    Vou separar algumas partes do código que você colocou e pedir que me explique o que cada uma quer dizer, por gentileza.

    mat[1,i]:0:2port[I,2]:0:2
    Já entendi que o "0:2" seria o tamanho do número de casas. Mas e o "1" e "2" junto ao i ?

     

    Legal... ai você precisa olhar lá na declaração das variáveis...

    array[1..2,1..QDT_alunosS] of real;

    A diferença entre o seu e esse é que agora é que em vez de 1, tem 2 parâmetros para o array... nesse caso, é comumente chamado de Matriz... O primeiro parâmetro associei à unidade (primeira ou segunda) e o segundo para o "id do aluno" (posição do aluno, aluno 1, 2 ou 3).
    Obs.: O engraçado é que o seu também é uma "matriz", ou seja, uma matriz linha ou matriz coluna (depende da interpretação). :)

    Mas então, você tem basicamente duas opções, ou dá uma pesquisa mais a fundo para se aprofundar e saber mais sobre o que está usando, ou simplesmente separa em 2... algo como:
     

      mat1,  port1,  hist1,  geo1,  cie1   :array[1..QDT_alunosS] of real; //[unidade 1]  	mat2,  port2,  hist2,  geo2,  cie2   :array[1..QDT_alunosS] of real; //[unidade 2]

    Obs.: Não acho uma boa ideia "dobrar", ou seja, criar uma vetor com o dobro do tamanho, como está o seu...

     
     

    CRT; //carrega comandos extras como ClrScr, readlnKey, TextColor, TextBackGround etc (alguns compiladores não precisa)
    const
    QDT_alunosS=3;
    Essas duas opções também não vi na faculdade. "uses" e "const". O CRT você disse que carrega comandos, mas no Pascalzim esses comandos já rodam sem problemas.

    O uses serve para carregar uma Unit (bliblioteca). Uma unit é basicamente um conjunto dados e/ou estruturas. A ideia é que nem sempre você precisa utilizar tudo o que está disponível para Pascal, daí ele só carrega o básico!!! Esse "básico", por exemplo, está dentro de outra unit chamada System (pode varia de compilador, para compilador), ou seja, essa unit System é AUTOMATICAMENTE carregada para seu programa... seria como se "incorporasse tudo que tem na biblioteca no seu programa"... por exemplo, sem ela, você não ia conseguir usar o readln(), writeln(), Sqrt() etc... (obs.: não lembro exatamente os comandos, mas a ideia é essa!). Já no caso da CRT (ou WinCRT), ela contém outros comandos (e outras coisas), como o ClrScr, TextColor(), e o próprio White... etc...
     
    O que acontece é que, alguns compiladores automaticamente já carregam a CRT como padrão (da mesma forma que a maioria também já carrega a System)... entende?

    Resumindo:
    Sem a CRT, meu compilador (Free Pascal Compiler) não vai reconhecer o CrlSCr, nem o TextColor() etc... :D

    Apenas coloque um // antes dos dois comandos... ou apague!!


    Em relação ao Const, ela é apenas a declaração de constantes, que basicamente é uma "variável com valor predefinido e fixo". Idem da "matriz", ou seja, ou pesquisa e usa, ou simplesmente tira e ajusta!

    PS: o White, Yellow, Black, Blue são exemplo de constantes... nela tem um valor (se quiser descobrir, experimente imprimir com um writeln), ou seja, o TextColor() precisa de um número... cada número representa um cor... e essas constantes já contém o valor referente ao seu nome (em inglês)...
     

    Em relação ao array das matérias. se eu tenho 2 matérias para cada aluno, não teria que ser 6 matérias no total ao invés de 02?

    Já falei sobre isso lá em cima...  (ou você usa uma matriz, ou cria dois vetores... não acho uma boa ideia "dobrar")
     
     

    O que eu falei que preciso listar, é porque o professor pediu. Numa tela, tenho que listar as notas dos dois bimestres. Só que só consegui fazer aparecer a do primeiro. Por isso questionei.

    Só para frisar: não existe correlação entre nada no código.. tente assimilar essa ideia, que você vai ainda mais longe!!! Tudo é uma questão de interpretação do programador para sugestionar o usuário... então, a forma que você descobriu para armazenar duas unidades foi "dobrar a quantidade de espaços no array", correto? oras, se os dados estão no array e eu quero exibir esses dados, basta exibir de acordo com a SUA definição de armazenagem... (não faz sentido em pensar em armazenar algo, sem saber como vai coletar¹).
    Como você pensou em armazenar?? Imagino, que seria algo como 1, 2 e 3 para a primeira unidade de cada aluno respectivamente, e 4, 5 e 6 para a segunda unidade... A questão é que você só leu a primeira unidade.. para imprimir (ou fazer o que quiser) com os dados da segunda unidade, basta coletar e tratar... lembrando: não existe correlação direta entre nada, "você" apenas que define que "os 3 primeiros é para unidade 1, e o restante para unidade". Tá me entendendo? se você escrever "writeln('Seu nome é ', mat);" o Pascal vai exibir o pronto!! (não vai dar erro, apenas não vai fazer sentido pro usuário). A "relação entre o armazenado e o contexto" é apenas abstrato!!! ;)

    ¹ veja, apesar de ser óbvio, isso não é tão trivial... "só" passamos a entender isso como "aprendemos formalmente"... (o entendimento é trivial, mas o conhecimento sobre o fato não)


    ***

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @Simon Viegas Entendi o que me explicou. A parte da lista consegui resolver do jeito que você me falou. Ficou mais ou menos assim: 

    	for i:=1 to 3 do	  	begin  			writeln(alunos[i],': ',mat[1,i]:0:2 ,' no 1 bim e ', mat[2,i]:0:2 ,' no 2 bim de Matemática.');  			writeln(alunos[i],': ',port[1,i]:0:2,' no 1 bim e ', port[2,i]:0:2 ,' no 2 bim de Português.');  			writeln;  	end;

    Isso, depois com a "estética" vai ficar melhor. Pretendo anexar como uma espécie de "Quadro de Notas" no final. mas isso é acabamento.

     

    O que me leva a seguinte dúvida:

     

    Tem como eu colocar um "ClrScr" no "meio" do array? 

     

    Tipo, Ele vai me dar as notas do Aluno1, com Português e Matemática. Depois, limpar a tela para exibir as notas do próximo aluno. É possível?

     

    Deixa eu aproveitar, pra perguntar: 

     

    Como eu jogo isso na média?

    var md: array[1..2,1..QDT_alunosS] of real;for i:=1 to 3 do begin  md[i] := (mat[1,i] + mat[2,i) / 2; end;

    Fica dando erro. "A Atribuição de dados incompatíveis para a variável 'MD'!

    Editado por rsm_rlb

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Tem como eu colocar um "ClrScr" no "meio" do array?

     

    Tipo, Ele vai me dar as notas do Aluno1, com Português e Matemática. Depois, limpar a tela para exibir as notas do próximo aluno. É possível?

     

    Sim... tem pelo menos 3 formas:

    1 - Usando um readln;

    Ex.:

        for i:=1 to 3 do      begin      ClrScr;      writeln(alunos[i],': ',mat[1,i]:0:2 ,' no 1 bim e ',mat[2,i]:0:2 ,' no 2 bim de Matemática.');      writeln(alunos[i],': ',port[1,i]:0:2,' no 1 bim e ',port[2,i]:0:2,' no 2 bim de Português. ');      writeln;      readln; //aguarda um ENTER (ler o que foi digitado, mas não atribui a nada... o que simula essa "espera")      end;

     2 - Usando ReadKey;  (da CRT)

    No lugar no readln; colocar um ReadKey, a diferença que comando aguarda somente uma tecla (e não um ENTER).

    3 - Usando Delay();  (acho que da CRT também)

    Esse comando faz o programa "pausar" por "x" milisegundos.... colocar no logar no readln um, por exemplo, Delay(300)... vai ficar 300 milissegundo e continua...

    Obs.: esse tempo, apesar de ser "estipulado que é em milisegundos", não bate com a realidade, tem processador que fica mais rápido, outros ficam mais lentos... ai tem que testar!!!

     

     

     

     

    Como eu jogo isso na média?

    var md: array[1..2,1..QDT_alunosS] of real;for i:=1 to 3 do begin  md[i] := (mat[1,i] + mat[2,i) / 2; end;

    Fica dando erro. "A Atribuição de dados incompatíveis para a variável 'MD'!

     

    O que está errado é a declaração... veja lá! md só precisaria de uma coordenada!!! logo algo como array[1..QDT_alunosS]... entretanto, a média é UM DADO BASEADO EM CÁLCULO, e não precisa ser armazenado! só precisa de uma variável mesmo para armazenamento temporário. ex.: media:real.  (da mesma forma que não precisa armazenar a idade, mas apenas o  Ano de nascimento)

    PS: só aproveitando, se você declarou com 2 coordenadas lá, o acesso seria por duas coordenadas!!! (só analise: se mat e md são do mesmo tipo, por quê um iria acessar de uma forma, e o outro de outra??? São duas coordenadas!!  md[i,j]). Lembrando!!!  não é com duas, nem com uma, apenas uma variável simlples...

    PS2: ou você pode simplesmente imprimir sem armazenar antes...algo como: writeln('  xxxxxxx',(mat[1,i] + mat[2,i]) / 2,' xxxxxxxxx');

    No aguardo.

     

     

    No aguardo

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @Simon Viegas A parte do ClrScr eu consegui. Bacana. Agora só falta tirar a média toda pra finalizar. Vou colocar o código completo pra você dar uma olhada.

    program Trabalho_Conclusao_Semestre;const  QDT_alunosS=3; //ID do Aluno (Aluno 1, 2 e 3)var  alunos: array [1..QDT_alunosS] of string;  mat, port, hist, geo, cie: array[1..2,1..QDT_alunosS] of real; //[unidade,id_do_aluno]  i,j      :integer;  md: array[1..2,1..QDT_alunosS] of real;//INÍCIO DO PROGRAMAbeginTextColor(White); //cor do texto branca 	for i:=1 to 3 do 		begin  		write  ('Digite o nome do alunos: ');			readln (alunos[i]);  	end;  	ClrScr;	//limpa a tela//Insira as notas do Primeiro Bimestre	for i:=1 to 3 do  	begin  		ClrScr;  		write  ('Digite a nota do Primeiro Bim de Matemática para ',alunos[i],': ');			readln (mat[1,i]);  		write  ('Digite a nota do Primeiro Bim de Português para  ',alunos[i],': ');			readln(port[1,i]);			//write  ('Digite a nota do Primeiro Bim de histórias para  ',alunos[i],': ');			//readln(hist[1,i]);			//write  ('Digite a nota do Primeiro Bim de Geografia para  ',alunos[i],': ');			//readln(geo[1,i]);			//write  ('Digite a nota do Primeiro Bim de Ciências para  ',alunos[i],': ');			//readln(cie[1,i]);  	end;ClrScr;  //Insira as notas do Segundo Bimestre 		for i:=1 to 3 do		begin			ClrScr;			write  ('Digite a nota do Segundo Bim de Matemática para  ',alunos[i],': ');			readln (mat[2,i]);			write  ('Digite a nota do Segundo Bim de Português para   ',alunos[i],': ');			readln(port[2,i]);			//write  ('Digite a nota do Segundo Bim de histórias para  ',alunos[i],': ');			//readln(hist[2,i]);			//write  ('Digite a nota do Segundo Bim de Geografia para  ',alunos[i],': ');			//readln(geo[2,i]);			//write  ('Digite a nota do Segundo Bim de Ciências para  ',alunos[i],': ');			//readln(cie[2,i]);		end;ClrScr;//Notas de 1º e 2º Bimestre	for i:=1 to 3 do	  	begin	  		ClrScr;	  		writeln('====||Quadro de Notas||===');	  		writeln;  			writeln(alunos[i],': ',mat[1,i]:0:2 ,' no 1 bim e ', mat[2,i]:0:2 ,' no 2 bim de Matemática.');  			writeln(alunos[i],': ',port[1,i]:0:2,' no 1 bim e ', port[2,i]:0:2 ,' no 2 bim de Português.');  			readln;  	end;  		//for i:=1 to 3 do		//begin	 		//md[i] := (1+5) / 2;		 //end;		for i:=1 to 3 do		begin	 		 writeln('A Média do ', alunos[i] ,' é ', ((mat[1,i) + (mat[2,i)) / 2);		end;end.

    A média que você diz seria isso mesmo? Porque aqui tá dando erro.

    Em relação ao "Quadro de Notas" Isso vou acertar depois com o "Goto X,Y", o que to adiando um pouco porque to com preguiça  :ZZZ:

     

    Obs: Deixei as outras 3 matérias em comentário, para que não demorasse muito na hora de testar.

    Editado por rsm_rlb

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Simon Viegas A parte do ClrScr eu consegui. Bacana. Agora só falta tirar a média toda pra finalizar. Vou colocar o código completo pra você dar uma olhada.

    	for i:=1 to 3 do		begin	 		 writeln('A Média do ', alunos[i] ,' é ', ((mat[1,i) + (mat[2,i)) / 2);		end;end.

    A média que você diz seria isso mesmo? Porque aqui tá dando erro.

    Dando que erro???

    Compilei o seu código e deu:

     

     

    Fatal: Syntax error, "]" expected but ")" found

    Está específico: onde era para ter um "]", tem um ")"... (faltam os colchetes depois do i)

     

     

     

     

    Em relação ao "Quadro de Notas" Isso vou acertar depois com o "Goto X,Y", o que to adiando um pouco porque to com preguiça  :ZZZ:

     

    Obs: Deixei as outras 3 matérias em comentário, para que não demorasse muito na hora de testar.

     

    O comando seria GotoXY()... por sinal também pertence a CRT !!! Você já deve saber, mas ele basicamente "só" reposiciona o cursor na coordenada estipulada... daí o que for feito depois, como escrever com o write, vai acontecer a partir dessa posição...

     

    PS: uma técnica bacana que pode ser utiilzada com o GotoXY() é exibir todos os dados necessários, e depois solicitar a leitura na posição correta...

    Algo do dito:

    writeln('DADOS DO ALUNO :')writeln;writeln('Nome      : ');writeln('NOTAS 1o bimestre' );writeln('Matematica: ');writeln('Portugues : ');writeln('Geografia : ');writeln('Ciência   : ');GotoXY(xx,yy); readln(mat [1,i]); //sendo o xx e yy a coordenada para ficar ali no lado da matemática!!!GotoXY(xx,yy); readln(port[1,i]); //idemGotoXY(xx,yy); readln(hist[1,i]); //...GotoXY(xx,yy); readln(geo [1,i]);GotoXY(xx,yy); readln(cie [1,i]);

    Deu para entender a diferença?   Mas não tente isso por agora... pois implica em diversos outros ajustes.. (é relaticamente fácil, mas dá trabalho!)

     

    Sobre comentar as metérias, perfeito... quanto menos trabalho melhor, rs.... Eu particularmente nem digito nomes também... uso 1, 2, 3... ou algo do tipo... testes mais específicos, só de vez em quando ou mais pra frente quando tiver mais encaminhado.

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • A ideia do "Goto" pra fazer o quadro de notas seria esse exemplo abaixo. Foi um dos primeiros exercícios que recebi pra fazer. 

    program Box;uses crt;var cl, ln: integer;begin  clrscr;  gotoxy(05, 05); write(chr(201));  gotoxy(70, 05); write(chr(187));  gotoxy(05, 15); write(chr(200));  gotoxy(70, 15); write(chr(188));  for cl:=6 to 69 do  begin    gotoxy(cl, 05); write(chr(205));    gotoxy(cl, 15); write(chr(205));  end;  for ln:=6 to 14 do  begin    gotoxy(05, ln); write(chr(186));    gotoxy(70, ln); write(chr(186));  end;  readln;end.

    Testei aqui e as notas até rodam dentro dele como eu queria, só que pra rodar, eu tenho que jogar dentro do 2º for o que me daria mais repetições desnecessárias das notas. 

     

    No mais, deu tudo certo aqui e o programa tá rodando legal. O ideal seria eu conseguir encaixar esse "box" na tela pra exibir como um quadro de notas. Mas se não der certo, vou deixar desse jeito mesmo. Obrigado.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Mais uma dúvida. Considerando a expressão:

    for i:=1 to 3 do		begin			ClrScr;			if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then					writeln('A média de matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi APROVADO!!!')					else 					writeln('A média de matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!!!');										writeln;										if ((port[1,i]) + (port[2,i])) / 2 >= 6 then					writeln('A média de português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!!!')					else 					writeln('A média de português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!!!');					readln; 		end;

    é possível trocar a cor somente do "aprovado" e "reprovado" para dar destaque? 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá.

     

     

     é possível trocar a cor somente do "aprovado" e "reprovado" para dar destaque? 

     

    E por quê não?

     

    Como já sugeri, não existe correlação entre comandos/estruturas... o mude a cor no momento que quiser mudar, e imprima na hora que você quiser...

     

     

     

    Lembra-se que você deve manter o seu código SEMPRE BEM IDENTADO!!!: ex.:

    for i:=1 to 3 do  begin    ClrScr;    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then      writeln('A média de matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi APROVADO!!!')    else       writeln('A média de matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!!!');    writeln;    if ((port[1,i]) + (port[2,i])) / 2 >= 6 then      writeln('A média de português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!!!')    else       writeln('A média de português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!!!');    readln;   end;

    Compare com o sue código...

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Olá.

     

     

     

    E por quê não?

     

    Como já sugeri, não existe correlação entre comandos/estruturas... o mude a cor no momento que quiser mudar, e imprima na hora que você quiser...

     

     

     

    Lembra-se que você deve manter o seu código SEMPRE BEM IDENTADO!!!: ex.:

    for i:=1 to 3 do  begin    ClrScr;    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then      writeln('A média de matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi APROVADO!!!')    else       writeln('A média de matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!!!');    writeln;    if ((port[1,i]) + (port[2,i])) / 2 >= 6 then      writeln('A média de português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!!!')    else       writeln('A média de português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!!!');    readln;   end;

    Compare com o sue código...

    No aguardo.

     

    Nesse caso então, como faço para colocar o TextColor dentro desse if/else? Se eu coloco ele "TextColor(green);" ele dá erro dizendo por causa da vírgula e diz que o "else" não foi esperado. Se eu deixo sem a vírgula, ele diz que o "TestColor" é que não foi esperado.

     

     

    A cor padrão do pascalzinho é verde. Como viu no código durante o decorrer do tópico, eu alterei para branco para ficar mais "elegante", porém eu queria dar destaque somente para essa opção. Ficaria algo como:

     

    "A média do aluno 1 foi X portanto ele está Aprovado"

     

    ou 

     

    "A média do aluno 1 foi Y portanto ele está reprovado"

     

     

    Minha intenção é dar o imprimir o resultado desse jeito. 

     

    Obs.: O código tá correto, só na hora de colar aqui que desregulou e eu não percebi. 

     

    Obs².: Consegui arrumar a parte do box que eu tava enrolado. Basicamente pra entregar só falta esta dúvida que eu citei acima. 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Nesse caso então, como faço para colocar o TextColor dentro desse if/else? Se eu coloco ele "TextColor(green);" ele dá erro dizendo por causa da vírgula e diz que o "else" não foi esperado. Se eu deixo sem a vírgula, ele diz que o "TestColor" é que não foi esperado.

    Só vendo o código como estava. Se possível, posta o código como você tentou, que ai avaliamos e aprendemos com o contexto (experiência).

     

    ***

     

    A cor padrão do pascalzinho é verde. Como viu no código durante o decorrer do tópico, eu alterei para branco para ficar mais "elegante", porém eu queria dar destaque somente para essa opção. Ficaria algo como:

    Você precisaria imprimir a parte em branco, depois imprimir a parte em verde, depois voltar para o branco novamente (cor padrão).

    Obs.: Esse comentário a seguir é apenas um reflexão.. se não entender, abstraia... o que importa é que precisa separar o texto por partes... Nesse caso, a procedure writeln NÃO aceita o uso do TextColor() dentro dele (eu acho que não)... podem-se entender isso como uma "limitação" ou "não implementação de funcionalidade". Se for o caso mesmo de não funcionar, imagino que deve ser porque o TextColor() seja PROCEDURE e não uma FUNCTION, ou seja, procedure e function são basicamente a mesma coisa, mas as function retornam sempre algo nela mesma (as procedure não retornam), e como o TextColor() não retorna, o writeln não deve aceitar... (claro que o retorno da function deve ser compatível com o writeln também, como um texto ou um número).

     

    ***

     

    Obs.: O código tá correto, só na hora de colar aqui que desregulou e eu não percebi.

    De boa.. é apenas um alerta....

     

    Obs².: Consegui arrumar a parte do box que eu tava enrolado. Basicamente pra entregar só falta esta dúvida que eu citei acima. 

    Qualquer coisa posta aqui que temos analisar e dá um feedback.

     

    ***

     

    No aguardo.

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Coloquei o código completo em spoiler para não ficar um post muito grande.

     

    program Trabalho_Conclusao_Semestre;usescrt; //Carrega "UNIT" (Biblioteca de funçõesconstQDT_alunosS=3; //ID do Aluno (Aluno 1, 2 e 3)varalunos: array [1..QDT_alunosS] of string;mat, port, hist, geo, cie: array[1..2,1..QDT_alunosS] of real; //[unidade,id_do_aluno]i: integer;cl, ln: integer;//INÍCIO DO PROGRAMAbegin  TextColor(White); //cor do texto branca    //Cadastro dos alunos  for i:=1 to 3 do  begin    write  ('Digite o nome do alunos: ');    readln (alunos[i]);  end;    ClrScr;	//limpa a tela    //Insira as notas do Primeiro Bimestre  for i:=1 to 3 do  begin    ClrScr;    write  ('Digite a nota do Primeiro Bim de Matemática para ',alunos[i],': ');    readln (mat[1,i]);    write  ('Digite a nota do Primeiro Bim de Português para  ',alunos[i],': ');    readln(port[1,i]);    write  ('Digite a nota do Primeiro Bim de Histórias para  ',alunos[i],': ');    readln(hist[1,i]);    write  ('Digite a nota do Primeiro Bim de Geografia para  ',alunos[i],': ');    readln(geo[1,i]);    write  ('Digite a nota do Primeiro Bim de Ciências para  ',alunos[i],': ');    readln(cie[1,i]);  end;    ClrScr;    //Insira as notas do Segundo Bimestre  //  for i:=1 to 3 do  begin    ClrScr;    write  ('Digite a nota do Segundo Bim de Matemática para  ',alunos[i],': ');    readln (mat[2,i]);    write  ('Digite a nota do Segundo Bim de Português para   ',alunos[i],': ');    readln(port[2,i]);    write  ('Digite a nota do Segundo Bim de Histórias para  ',alunos[i],': ');    readln(hist[2,i]);    write  ('Digite a nota do Segundo Bim de Geografia para  ',alunos[i],': ');    readln(geo[2,i]);    write  ('Digite a nota do Segundo Bim de Ciências para  ',alunos[i],': ');    readln(cie[2,i]);  end;    ClrScr;    //Quadro de 1º e 2º Bimestre  for i:=1 to 3 do  begin    ClrScr;    writeln('====||Quadro de Notas||===');    writeln;    writeln(alunos[i],': ',mat[1,i]:0:2 ,' no 1 bim e ', mat[2,i]:0:2 ,' no 2 bim de Matemática.');    writeln(alunos[i],': ',port[1,i]:0:2,' no 1 bim e ', port[2,i]:0:2 ,' no 2 bim de Português.');    writeln(alunos[i],': ',hist[1,i]:0:2,' no 1 bim e ', hist[2,i]:0:2 ,' no 2 bim de Histórias.');    writeln(alunos[i],': ',geo[1,i]:0:2,' no 1 bim e ', geo[2,i]:0:2 ,' no 2 bim de Geografia.');    writeln(alunos[i],': ',cie[1,i]:0:2,' no 1 bim e ', cie[2,i]:0:2 ,' no 2 bim de Ciências.');    readln;      end;      ClrScr;      //optei por calcular a média direto dentro do "write" pois estava dando erro: "A posição X está fora dos limites do vetor"      for i:=1 to 3 do  // Este é o Quadro da média  begin    ClrScr;    gotoxy(5, 5); //média de Matemática    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi APROVADO!')    else    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');        gotoxy(5, 7); //média de Português    if ((port[1,i]) + (port[2,i])) / 2 >= 6 then    writeln('A média de Português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!')    else    writeln('A média de Português do ', alunos[i] ,' foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');        gotoxy(5, 9);	//média de histórias    if ((hist[1,i]) + (hist[2,i])) / 2 >= 6 then    writeln('A média de Histórias do ', alunos[i] ,' foi ', ((hist[1,i] + hist[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!')    else    writeln('A média de Histórias do ', alunos[i] ,' foi ', ((hist[1,i] + hist[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');        gotoxy(5, 11); //média de geografia    if ((geo[1,i]) + (geo[2,i])) / 2 >= 6 then    writeln('A média de Geografia do ', alunos[i] ,' foi ', ((geo[1,i] + geo[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!')    else    writeln('A média de Geografia do ', alunos[i] ,' foi ', ((geo[1,i] + geo[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');        gotoxy(5, 13);	//média de ciências    if ((cie[1,i]) + (cie[2,i])) / 2 >= 6 then    writeln('A média de Ciências do ', alunos[i] ,' foi ', ((cie[1,i] + cie[2,i]) / 2):0:2 ,', portanto ele foi APROVADO!')    else    writeln('A média de Ciências do ', alunos[i] ,' foi ', ((cie[1,i] + cie[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');        TextColor(Yellow);        gotoxy(03, 04); write(chr(201));    gotoxy(76, 04); write(chr(187));    gotoxy(03, 15); write(chr(200));    gotoxy(76, 15); write(chr(188));        for cl:=4 to 75 do    begin      gotoxy(cl, 04); write(chr(205));      gotoxy(cl, 15); write(chr(205));    end;        for ln:=5 to 14 do    begin      gotoxy(03, ln); write(chr(186));      gotoxy(76, ln); write(chr(186));                end;        TextColor(White);        readln;  end;          writeln;  writeln;  writeln;  write('Programa criado por Renan Martins. Tecle <ENTER> para encerrar.');  readln;end.

    Dá pra ver que o programa tá pronto. Só esse detalhe que eu quero saber se dá pra fazer.

     

    Vou deixar em spoiler abaixo, as formas que eu tentei fazer e que não consegui.

     

    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi ',TextColor(green),'APROVADO!')    else    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi ',TextColor(red),'REPROVADO!');    
    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi ')    TextColor(green)    writeln('APROVADO!')    else    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');    

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Falta ajustar o 2 bimestre:

      //Insira as notas do Segundo Bimestre  //  for i:=1 to 3 do

     
    Aproveitando, abaixo um sugestão para organização:

      for i:=1 to 3 do  begin    ClrScr;    write  ('Digite a nota do Segundo Bim de Matemática para ',alunos[i],': '); readln(mat [2,i]);    write  ('Digite a nota do Segundo Bim de Português  para ',alunos[i],': '); readln(port[2,i]);    write  ('Digite a nota do Segundo Bim de histórias  para ',alunos[i],': '); readln(hist[2,i]);    write  ('Digite a nota do Segundo Bim de Geografia  para ',alunos[i],': '); readln(geo [2,i]);    write  ('Digite a nota do Segundo Bim de Ciências   para ',alunos[i],': '); readln(cie [2,i]);  end;

     
    ***
     
    Faltou identar lá nos if finais..

     for i:=1 to 3 do  // Este é o Quadro da média  begin    ClrScr;    gotoxy(5, 5); //média de Matemática    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi APROVADO!')    else    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');

     
    ***
     
     

    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi ',TextColor(green),'APROVADO!')    else    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi ',TextColor(red),'REPROVADO!'); 

     
    Sobre usar o TextColor() eu já comentei anteriormente...

    ***
     

    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi ')    TextColor(green)    writeln('APROVADO!')    else    writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');    

     

    O if, assim como o else (assim como o For, While etc) só se associa a um comando, caso precise associar a mais de um, precisa usar o begin/end. Aqui aproveito mais uma vez para comentar sobre a importância da identação (estou me baseando pelo que está no fórum)

    - A forma como está, veja acima.

    - Identando, ficaria assim:

        if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then      writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi ') //o if termina aqui!!!    TextColor(green)    writeln('APROVADO!')    else //esse else não está vinculado a nada...      writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');

    Perceba que só o writeln está dentro do if e como está utilizando else, vai dar erro, pois else tem que vir logo após a estrutura do if, e não de um comando "solto"... como está identado, só olhando para o código dá para ver que está errado... (no mostrado na citação acima não dá, tem que analisar linha por linha ou, como eu faço, idento primeiro)


    Em relação a "estrutura" (não corrigir nem testei o código, apenas deixei compilável)

        if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then      begin        writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto ele foi ');        TextColor(green);        writeln('APROVADO!');      end //fim do if    else      writeln('A média de Matemática do ', alunos[i] ,' foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto ele foi REPROVADO!');

    Agora o if em vez ter apenas UM comando, passou a ter UM bloco... o restante é já sabido..

    ***

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Pronto. Finalizei ele do jeito que eu queria. Acredito que venha uma boa nota. 

     

    @Simon Viegas Muito obrigado por sua ajuda!

     

    Se você conhecer alguma apostila, canal do youtube ou qualquer coisa do gênero que possa me indicar para que eu continue aprendendo, eu agradeceria bastante. 

     

    E a respeito da identação, esse material que você disse, se tiver como me passar o link pois não encontrei.

     

    No resto, muito Obrigado por sua ajuda meu amigo. Algumas coisas (como o begin/end no if/else, por exemplo), nunca imaginei que poderia dar certo. Brigadão mesmo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se quiser postar para revisarmos fica a vontade... caso já esteve pronto, avisa que fechamos o tópico...


    Sobre apostilas/canais, no momento eu estou sem referências... mas aqui no próprio fórum tem um tópico interessante:  Tópicos importantes da seção, na parte de cima, em tópicos em destaques.

     

    Sobre a identação, você já meio que já faz certo... só se atentar que deve está SEMPRE identado e mais ou menos no mesmo padrão...

    Vale também dar uma lida em outros tópicos... serve para revisar, aprender coisas novas... e, claro, tentar ajudar os outros quando possível... ;)

     

     

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @Simon Viegas Está aqui o código finalizado. Coloquei algumas observações como comentários, porque como ele é um trabalho, tenho que apresentar. Sendo assim, uma "colinha" sempre é útil. hahaha'. 

     

    program Trabalho_Conclusao_Semestre;usescrt; //Carrega "UNIT" (Biblioteca de funçõesconstQDT_alunosS=3; //ID do Aluno (Aluno 1, 2 e 3)varalunos: array [1..QDT_alunosS] of string;mat, port, hist, geo, cie: array[1..2,1..QDT_alunosS] of real; //[unidade,id_do_aluno]i: integer;cl, ln: integer;//INÍCIO DO PROGRAMAbegin  TextColor(White); //cor do texto branca    //Cadastro dos alunos  for i:=1 to 3 do  begin    write  ('Digite o nome do alunos: ');    readln (alunos[i]);  end;    ClrScr;	//limpa a tela    //Insira as notas do Primeiro Bimestre  for i:=1 to 3 do  begin    ClrScr;    write  ('Digite a nota do Primeiro Bim de Matemática para ',alunos[i],': ');    readln (mat[1,i]);    write  ('Digite a nota do Primeiro Bim de Português para  ',alunos[i],': ');    readln(port[1,i]);    write  ('Digite a nota do Primeiro Bim de Histórias para  ',alunos[i],': ');    readln(hist[1,i]);    write  ('Digite a nota do Primeiro Bim de Geografia para  ',alunos[i],': ');    readln(geo[1,i]);    write  ('Digite a nota do Primeiro Bim de Ciências para  ',alunos[i],': ');    readln(cie[1,i]);  end;    ClrScr;    //Insira as notas do Segundo Bimestre  for i:=1 to 3 do  begin    ClrScr;    write  ('Digite a nota do Segundo Bim de Matemática para  ',alunos[i],': ');    readln (mat[2,i]);    write  ('Digite a nota do Segundo Bim de Português para   ',alunos[i],': ');    readln(port[2,i]);    write  ('Digite a nota do Segundo Bim de Histórias para  ',alunos[i],': ');    readln(hist[2,i]);    write  ('Digite a nota do Segundo Bim de Geografia para  ',alunos[i],': ');    readln(geo[2,i]);    write  ('Digite a nota do Segundo Bim de Ciências para  ',alunos[i],': ');    readln(cie[2,i]);  end;    ClrScr;    //Quadro de 1º e 2º Bimestre  for i:=1 to 3 do  begin    ClrScr;    gotoxy(25, 5); writeln('Quadro de Notas: ', alunos[i]);    gotoxy(5, 8); writeln('Matemática: ',mat[1,i]:0:2 ,' no 1 bim e ', mat[2,i]:0:2 ,' no 2 bim.');    gotoxy(5, 10); writeln('Português: ',port[1,i]:0:2,' no 1 bim e ', port[2,i]:0:2 ,' no 2 bim.');    gotoxy(5, 12); writeln('Histórias: ',hist[1,i]:0:2,' no 1 bim e ', hist[2,i]:0:2 ,' no 2 bim.');    gotoxy(5, 14); writeln('Geografia: ',geo[1,i]:0:2,' no 1 bim e ', geo[2,i]:0:2 ,' no 2 bim.');    gotoxy(5, 16); writeln('Ciências: ',cie[1,i]:0:2,' no 1 bim e ', cie[2,i]:0:2 ,' no 2 bim.');        TextColor(Yellow);        gotoxy(03, 04); write(chr(201));    gotoxy(76, 04); write(chr(187));    gotoxy(03, 22); write(chr(200));    gotoxy(76, 22); write(chr(188));        for cl:=4 to 75 do    begin      gotoxy(cl, 04); write(chr(205));      gotoxy(cl, 22); write(chr(205));    end;        for ln:=5 to 21 do    begin      gotoxy(03, ln); write(chr(186));      gotoxy(76, ln); write(chr(186));    end;    TextColor(White);    readln;  end;      ClrScr;      //optei por calcular a média direto dentro do "write" pois estava dando erro: "A posição X está fora dos limites do vetor"      for i:=1 to 3 do  // Este é o Quadro da média  begin    ClrScr;        gotoxy(25, 5); write('Média e Status de ', alunos[i]);		//Ao inserir o Begin/End dentro permite que eu crie um "bloco" dentro do if/else, o que me permite uma maior "flexibilidade"        gotoxy(5, 8); //média de Matemática    if ((mat[1,i]) + (mat[2,i])) / 2 >= 6 then    begin      write('A média de Matemática foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,' portanto o aluno foi ');      TextColor(lightgreen);      writeln('APROVADO!');      TextColor(white);    end    else    begin      write('A média de Matemática foi ', ((mat[1,i] + mat[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightred);      writeln('REPROVADO!');      TextColor(white);    end;        gotoxy(5, 10); //média de Português    if ((port[1,i]) + (port[2,i])) / 2 >= 6 then    begin      write('A média de Português foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightgreen);      writeln('APROVADO!');      TextColor(white);    end    else    begin      write('A média de Português foi ', ((port[1,i] + port[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightred);      writeln('REPROVADO!');      TextColor(white);    end;        gotoxy(5, 12);	//média de histórias    if ((hist[1,i]) + (hist[2,i])) / 2 >= 6 then    begin      write('A média de Histórias foi ', ((hist[1,i] + hist[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightgreen);      writeln('APROVADO!');      TextColor(white);    end    else    begin      write('A média de Histórias foi ', ((hist[1,i] + hist[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightred);      writeln('REPROVADO!');      TextColor(white);    end;        gotoxy(5, 14); //média de geografia    if ((geo[1,i]) + (geo[2,i])) / 2 >= 6 then    begin      write('A média de Geografia foi ', ((geo[1,i] + geo[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightgreen);      writeln('APROVADO!');      TextColor(white);    end    else    begin      write('A média de Geografia foi ', ((geo[1,i] + geo[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightred);      writeln('REPROVADO!');      TextColor(white);    end;        gotoxy(5, 16);	//média de ciências    if ((cie[1,i]) + (cie[2,i])) / 2 >= 6 then    begin      write('A média de Ciências foi ', ((cie[1,i] + cie[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightgreen);      writeln('APROVADO!');      TextColor(white);    end    else    begin      write('A média de Ciências foi ', ((cie[1,i] + cie[2,i]) / 2):0:2 ,', portanto o aluno foi ');      TextColor(lightred);      writeln('REPROVADO!');      TextColor(white);    end;        TextColor(Yellow);        gotoxy(03, 04); write(chr(201));    gotoxy(76, 04); write(chr(187));    gotoxy(03, 22); write(chr(200));    gotoxy(76, 22); write(chr(188));        for cl:=4 to 75 do    begin      gotoxy(cl, 04); write(chr(205));      gotoxy(cl, 22); write(chr(205));    end;        for ln:=5 to 21 do    begin      gotoxy(03, ln); write(chr(186));      gotoxy(76, ln); write(chr(186));    end;    TextColor(White);    readln;  end;    gotoxy(1, 25); write('Programa criado por Renan Martins. Tecle <ENTER> para encerrar.');  readln;end.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×