[C] como armazenar a media na mesma linha do vetor ja preenchido - C/C#/C++ - Clube do Hardware
como armazenar a media na mesma linha do vetor ja preenchido
Por Marcos Paulo feitosa, 13 de outubro de 2017 em C/C#/C++
1-Usando vetor, calcular a média de uma turma com vinte alunos e quatro notas sendo que a
média fica armazenada na mesma linha.
Não sei como armazenar a media na mesma linha do vetor.
@Marcos Paulo feitosa Se for VETOR e não MATRIZ, acredito que você precisa fazer nas seguintes etapas:
1- Declarar vetor - media[20]
2- Ler as quatros notas de um aluno
3- calcular a média dele
4- armazenar média calculada no índice do vetor - media[índice] = media_aluno;
@Marcos Paulo feitosa o vetor tem apenas uma linha, mas tem quantas colunas você quiser, então para esses vinte alunos de quatro notas você precisa de um vetor com 20 x 4 = 80 + 20 para a media de cada aluno total = 100 colunas, então para cada aluno ficará reservado 5 colunas e na hora de armazenar as notas você vai colocando a nota e somando a posição e depois de inserir as quatro notas deixa a quinta posição vazia para receber a média desse aluno e faz isso para todos os alunos, depois pegue as quatro notas e faça a média e coloque naquela quinta posição
depois para imprimir vai pegando essas quinta posição e imprime como sendo a média , ou você pode usar uma matriz que tem muitas linhas e muitas colunas.
@Marcos Paulo feitosa pode ser assim :
printf("Digite A %d Nota do %d Aluno -> ",i+1,j+1);
vetor[p]=n;
com isso a quinta posição ficará vaga, e depois de fazer a média coloque na posição 4 que é a quinta posição, e vai somando cinco ao contador .
Editado 14 de outubro de 2017 por devair1010
Olá @Marcos Paulo feitosa.
12 horas atrás, Marcos Paulo feitosa disse:
Esse é o enunciado completo? o texto não está muito claro...
Por exemplo: lento o texto, entendi que é uma média (de 20 alunos) mais a ADIÇÃO de quatro notas. Ex.:
Calculo = Media_20_Alunos + Nota1 + Nota2 + Nota3 + Nota4
Ou seja, seria uma vetor de 5 posições! Algo como:
vetor[1] = 7.5
vetor[2] = 4
vetor[3] = 6.9
vetor[4] = 8
vetor[5] = 7
resultado = vetor[1] + vetor[2] + vetor[3] + vetor[4] + vetor[5]
Observe que "a média" (do 20 alunos) estão na "mesma linha".
Veja como está "ambíguo".. além da minha interpretação, as sugestões de @TYSQUARE89 e @devair1010 também são para contextos diferentes! Só aqui temos 3 versões diferentes!
Por favor, poste o enunciado completo ou tente explicar melhor como deve funcionar o seu algoritmo.
O que eu tento sempre reforçar: primeiro tem que se entender o problema, só depois tentar encontrar uma resposta. Não adianta fazer um código bem feito, mas que não atenda as necessidades propostas.
agora, Marcos Paulo feitosa disse:
pelo que eu entendi tem criar um vetor [20][5] apos eu digitar quatro notas aparecer a media na ultima posiçao.
exemplo vetor[0][0]=6 e vetor[0][1]=8 e vetor[0][2]=5 e vetor[0][3]=9 apos o preenchimento do vetor com as 4 notas no vetor[0][4]=media mas como faz isso em siclo for eu nao sei.
Editado 14 de outubro de 2017 por Marcos Paulo feitosa
3 minutos atrás, Marcos Paulo feitosa disse:
pelo que eu entendi tem criar um vetor [20][5] apos eu digitar quatro notas aparecer a media na ultima posiçao
Pronto, tomemos por base essa definição... Nesse caso, estará usando o que chamamos de matriz, ou seja, "um vetor de com 2 ou mais dimensões". De certo modo, é também um vetor, mas é comum associarmos o termo "vetor" quanto tem apenas uma coordenada (matriz linha), e o termo "matriz" quando temos mais de 1 coordenada (como sua matriz de duas coordenadas: 20x5)... ou seja, todo vetor é uma matriz, mas quando tem apenas uma coordenada, chamamos apenas de vetor, entende?
Mas vamos supor que possa ser um vetor de duas coordenadas.
Daí, a primeira coordenada representará um aluno; para a segunda coordenada, da primeira posição à quarta, representará respectivamente da primeira à quarta notas do aluno; e a quinta posição terá a média desse aluno.
Pronto, teoricamente você já sabe ler as notas dos alunos:
13 horas atrás, Marcos Paulo feitosa disse:
ou seja, sua dúvida está na parte das médias... mas é simples. Como já citado acima, basta armazenar a média na quinta posição da segunda coordenada... ex.:
notas_alunos[posAluno][5] = media_aluno;
- Para calcular a média, você precisa ter as notas, logo, faça logo essa parte que ler as quatro notas de cada aluno e posta o código aqui;
- Após já conseguir ler as notas, insere a parte que calcular a média de cada aluno e posta o código aqui.
Caso tenha dúvidas em alguma parte é só postar.
eu fiz asim mas a media dar errado
int vetor[20][5];
int aluno,nota,soma=0;
for(aluno=0;aluno<20;aluno++){
printf("Digite as 4 notas do aluno %d",aluno+1);
for(nota=0;nota<4;nota++){
scanf("%d",&vetor[aluno] [nota]);
soma+=vetor[aluno] [nota];
vetor[aluno] [5]=media;
printf(" a media eh %f",vetor[aluno] [5]);
1 hora atrás, Marcos Paulo feitosa disse:
O que está dando errado? e onde?
Entenda qual erro está dando e tente corrigir...
Ex: "a resposta está saindo zerada...". Veras que declarou como int, mas para imprimir está usando um código para float ("%f"). Mude para "%d"... por ai vai...
Como o vetor de tamanho 5 vai de 0 a 4, o correto seria:
notas_alunos[posAluno][4] = media_aluno;
vetor[aluno][4]=media;
PS: aqui usando 5 funcionou, mas não deveria, pois é uma posição que não existe... (não sei explicar porque não dá erro!)
pronto conseguir o erro estava na posição do vetor e o %d que eu tinha colocado o %f e tambem eu estava esquecendo de limpar os valores das variaveis media e soma ai quando eu calculava a media do segundo aluno somava com o do primeiro
tai o codigo
scanf("%d",&vetor[aluno][nota]);
soma+=vetor[aluno][nota];
printf(" a media eh %d",vetor[aluno][4]);
Ao postar um código favor utilizar a tag CODE. Vide comunicado contido no topo desta página:
Por favor, edite sua postagem anterior removendo o código e inserindo novamente utilizando a tal tag CODE.
1) Você está calculando a média a cada leitura de uma nota, mas deveria fazer apenas uma vez após ter as 4 notas, ou seja, seria fora do for interno.
2) Está armazenando as notas, mas na prática não está utilizando o vetor depois, ou seja, para um melhor uso, você poderia ler primeiro todas as notas, e só após calcular as médias. Pois do jeito que está, nem precisaria ter um vetor, bastaria uma variável numérica simples para ler a notas.
3) Seria também interessante utilizar o vetor para exibir as quatro notas do aluno e a sua respectiva média. Algo como:
Notas do Aluno 1: Notas x, x, x, x. Media x
Notas do Aluno 2: Notas x, x, x, x. Media x
Notas do Aluno 3: Notas x, x, x, x. Media x
float vetor[5][5];
for(aluno=0;aluno<5;aluno++){
scanf("%f",&vetor[aluno][nota]);
printf("As 4 notas do aluno %d ",aluno+1);
printf("%.2f ",vetor[aluno][nota]);
vetor[aluno][4]=(soma/4.0);
printf("A media eh %.2f",vetor[aluno][4]);
- Digitei notas "7.5" e o programa me retornou média 7 (em vez de 7.5);
- Experimente solicitar para outras pessoas executarem o programa. Não explique nada... só execute e peça para usar... analise o feedback e tente fazer as possíveis melhorias/adaptações...
Editado 15 de outubro de 2017 por Marcos Paulo feitosa
18 horas atrás, Marcos Paulo feitosa disse:
Sim! Tudo bem!
Mas sugiro se atentar nesse item:
Em 15/10/2017 às 11:35, Simon Viegas disse:
Pois faz parte do escopo do problema. Nem toda nota é arredondada... e seu código já está utilizando float.