Ir ao conteúdo

Posts recomendados

Postado

Faça um algoritmo para ler um vetor nome de 10 elementos
 Para cada Nome de aluno sao digitados 4 notas
 Para cada Aluno imprimir a soma e a media das 4 notas
 Ao final imprimir o nome de cada aluno, as 4 notas, o total de pontos, a media e se o aluno foi aprovado ou reprovado critério de aprovação total >=60

 

Exemplo: 

Estou com dificuldade de acessar as notas pelo vetor , por exemplo eu digito as 4 notas de um aluno , ai imprime a soma e a media das notas , so que quando eu quero cadastrar novas notas , as notas ja existentes são substituidas  e  preciso de todas as notas no final para exibição.


 

Var
Nome : vetor [1..2] de Caracter
nota:vetor [1..8] de real
x,y:inteiro
Soma,Media:real

Inicio
para x de 1 ate 2 faca
escreval("Digite o nome do aluno :")
leia(Nome[x])

para y de 1 ate 4 faca
escreval("Digite a ",y,"ª nota do aluno")
leia(nota[y])
Soma<-Soma+nota[x]
Media<-Soma/4
fimpara
escreval("A soma da nota do aluno é : ",Soma)
escreval("A media do aluno é : ",Media)

fimpara

para x de 1 ate 2 faca
escreval(Nome[x])
fimpara

para y de 1 ate 4 faca
escreval(notas[y])
fimpara
Fimalgoritmo

 

  • Curtir 1
Postado

@lucashp    com vetores é difícil fazer isso, melhor usar matriz que vai armazenar o nome dos alunos e as notas na mesma matriz.   

     seu código com algumas modificações para funcionar com matriz :

Algoritmo "notas"
Var
Nome : vetor [1..2,1..5] de Caracter
nota:vetor [1..8] de real
x,y:inteiro
Soma,Media:real
Inicio
para x de 1 ate 2 faca
  soma:=0
  escreval("Digite o nome do aluno :")
  leia(Nome[x,1])
  para y de 2 ate 5 faca
    escreval("Digite a ",y-1,"ª nota do aluno")
    leia(nome[x,y])
    Soma<-Soma+caracpnum(nome[x,y])
    Media<-Soma/4
  fimpara
  escreval("A soma da nota do aluno é : ",Soma)
  escreval("A media do aluno é : ",Media)
fimpara
para x de 1 ate 2 faca
  escreval("Nome Do Aluno ",Nome[x,1])
  soma:=0
  para y de 2 ate 5 faca
    escreval(y-1," nota ",nome[x,y])
    soma:=soma+caracpnum(nome[x,y])
  fimpara
  escreval("teve ",soma," pontos")
  media:=soma/4
  escreval("media ",media)
  se soma >=30 ENTÃO
    escreval("Aprovado...!")
  fimse
fimpara
Fimalgoritmo

 

  • Membro VIP
Postado

Olá @lucashp

 

10 horas atrás, lucashp disse:

[...], so que quando eu quero cadastrar novas notas , as notas ja existentes são substituidas[...]

São substituídas por que está utilizando as mesmas posições.

 

Veja:

10 horas atrás, lucashp disse:

   para y de 1 ate 4 faca
      escreval("Digite a ",y,"ª nota do aluno")
      leia(nota[y])
      Soma<-Soma+nota[x]
      Media<-Soma/4
   fimPara

 

Ou seja, sempre está armazenando nas posições de 1 a 4. Se você declarou de 1 a 8, por que não está utilizando as outras posições?

 

Antes mesmo de começar a escrever o algoritmo, é necessário já ter mais ou menos em mente como será feito o armazenamento e também a recuperação dos dados, ou seja, primeiro vem as ideias, depois a implementação. (obs.: sei que na prática isso é difícil, pois tendemos a tentar fazer as duas coisas ao mesmo tempo.. normal. Tem que ir praticando)

 

Como é sabido, existem diversas formas de resolver o mesmo problema... você estará apenas desenvolvendo UMA...

 

Vamos pegar a sua estrutura:
 

10 horas atrás, lucashp disse:

Var
   Nome :vetor [1..2] de Caracter
   Nota :vetor [1..8] de real

 

Você declarou uma variável para os nomes, e outra para as notas. Ok. Mas como fazer a relação de uma coisa com a outra? entende?

 

Teoricamente, talvez você tenha pensado em algo assim:

Citação

Para aluno 1, notas de 1 a 4

Para aluno 2, notas de 5 a 8

Para aluno 3, notas de 9 a 12

 

Daí, precisaria correlacionar, vou tentar demonstrar uma forma de raciocínio:

 

- É notável que a variação é sempre de 4 em 4. Até ai ok. O Aluno 1 vai até 4, aluno 2 até 8, aluno 3 vai até 12, então posso usar o valor de "4" como base, e "X" como referência ao aluno... beleza. Então, 4*X.

- Para Aluno 1, 1*4 = 4. Para aluno 2, 2*4 = 8.... mas vixe! A nota começa com 1, não com 4. Então posso diminuir 3. Então, para aluno 1, 1*4-3=1, para aluno 2, 2*4-3=5.

Por enquanto estaríamos com algo assim:

(x*4-3)

- Certo, mas são 4 notas. Nesse caso podemos usar o Y como referência (1 a 4). Então:
 

(x*4-3 + y)

Aluno 1, nota 1... 1*4-3 + 1 = 2... não deu certo, pois deu 2, deveria dar um... simples, subtraio 1. Ex.: x*4-3+y-1. Ou simplesmente x*4-4+y.

 

Vamos testar:

Aluno 3, nota 2. 3*4-4+2=10.  OK. Deu certo!

 

Fórmula geral

x*NUMERO_DE_NOTAS-NUMERO_DE_NOTAS+y.

Use:

((x*4-4)+y) //o parênteses não é necessário, apenas usei para separar os elementos

 

Pronto, casa aluno ficará com sua nota.

 

 

 

 

***

 

Uma segunda forma, um pouco mais simples e mais elegante, seria utilizando uma matriz para notas. Ex.:

   Nomes :vetor [1..2] de caracter
   Notas :vetor [1..2,1..4] de real  //"código do aluno","número da nota desse aluno"

Simples assim.

 

Nome do Aluno 4?  Nomes[4]. Nota 3 do Aluno 4?  Notas[4,3]!

 

 

 

 

***

 

Outra forma de utilizar seria como sugeriu @devair1010. Apenas faria uma ressalva para utilizar outro nome para o vetor, como por exemplo "alunos [1..2,1..5] de caracter".

 

É meio que uma mistura dos 2 exemplos que dei acima... onde a primeira coordenada valera para cada Aluno, e a segunda coordenada, a posição 1 vai para o nome, e as 4 restantes vão para as notas, ou seja, a relação das notas para o aluno está em "NUMERO_DA_NOTA+1" (pois começa com 2).

 

 

***

 

obs.: outras coisas precisam ser revistas, como o cálculo da média, que NÃO deveria ficar dentro do para... deve ficar depois.

 

 

No aguardo.

  • Curtir 1
Visitante
Este tópico está impedido de receber 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!