Alguem poderia me ajudar a completar este algoritmo na linguagem C. esta num 80% de avanço. tenho problemas para fazer o item 2 e 3.
Escreva um programa em C que define um novo tipo de dados chamado aluno, que deve possuir três elementos do tipo float (nota1, nota2 e média), um inteiro (faltas) e um vetor do tipo char (nome). Na função principal deve-se declarar um vetor de alunos de tamanho 10. Além disso, o programa deve realizar as seguintes operações:
1) Cadastrar alunos, ou seja, pedir para o usuário digitar o nome, notas e quantidade de faltas de cada um dos 10 alunos. O programa deve pedir para o usuário preencher as notas através de mensagens do tipo “Digite a nota 1 do aluno FULANO”.
2) Verificar aprovados, ou seja, percorrer o vetor de alunos e imprimir o nome dos alunos aprovados (media >=7).
3) Inserir pontuação extra, ou seja, percorrer o vetor de alunos e aumentar um ponto nas duas notas de cada aluno que tem quantidade de faltas igual a zero.
#include
struct aluno{
float nota1, nota2, media;
int faltas;
char nome[20];
};
typedef struct aluno al;
main()
{
al n1, n2, m, f, n, resultado;
int ALUNOS[2], i;
printf("\n--------Cadastro de Alunos-------\n");
for(i=0; i<2; i++){
printf("\nDados do %d Aluno", i+1);
printf("\nDigite nome: ");
fflush(stdin);
gets(n.nome);
printf("\nNotas: ");
printf("\nDigite a Primeira Nota do Aluno %s: ", n.nome);
scanf("%f", &n1.nota1);
printf("Digite a Segunda Nota do Aluno %s: ", n.nome);
scanf("%f", &n2.nota2);
printf("\nFaltas");
printf("\nDigite o numero de Faltas: ");
scanf("%d", &f.faltas);
}
resultado.media=(n1.nota1+n2.nota2)/2;
if(resultado.media>=7)
printf("Aluno Aprovado");
else(resultado.media<7)
printf("Aluno Desaprovado");
getche();
}
Aleximandro:
Não reparem pela ultima parte que diz resultado. media.... ali tentei fazer o item 2
Soluções para a tarefa
Respondido por
3
Segue abaixo o algoritmo.
Nesse algoritmo eu criei a struct como é pedido no problema.
Depois criei o vetor ALUNOS com o tipo "struct". Isso mesmo, as structs são como um tipo int, char, float, double e etc. A diferença é que você tem uma melhor flexibilidade para manusear os dados, pois elas podem ter diversos tipos de dados.
Por exemplo.
Para declará-la usamos a sintaxe: "nome da struct" ALUNOS[10];
Se quisermos acessar alguma variável dentro da struct, usamos a sintaxe: ALUNOS[índice]."variável"
O problema do seu algoritmo é que você não estava relacionando a struct com nada. Os dados que eram inseridos não iam para as variáveis contidas na struct.
Para mais informações sobre structs veja esse vídeo: https://youtu.be/Dzr5ZQ2Lsi4?t=7m28s
Nesse algoritmo eu criei a struct como é pedido no problema.
Depois criei o vetor ALUNOS com o tipo "struct". Isso mesmo, as structs são como um tipo int, char, float, double e etc. A diferença é que você tem uma melhor flexibilidade para manusear os dados, pois elas podem ter diversos tipos de dados.
Por exemplo.
Para declará-la usamos a sintaxe: "nome da struct" ALUNOS[10];
Se quisermos acessar alguma variável dentro da struct, usamos a sintaxe: ALUNOS[índice]."variável"
O problema do seu algoritmo é que você não estava relacionando a struct com nada. Os dados que eram inseridos não iam para as variáveis contidas na struct.
Para mais informações sobre structs veja esse vídeo: https://youtu.be/Dzr5ZQ2Lsi4?t=7m28s
Anexos:
struct aluno{
float nota1, nota2, media;
int faltas;
char nome[20];
};
typedef struct aluno al;
main()
{
al ALUNOS[2];
int i;
printf("\n--------Cadastro de Alunos-------\n");
for(i=0; i<2; i++){
printf("\nDados do %d Aluno", i+1);
printf("\nDigite nome: ");
scanf("%s", ALUNOS[i].nome);
printf("\nNotas: ");
printf("\nDigite a Primeira Nota do Aluno %s: ", ALUNOS[i].nome);
scanf("%f", &ALUNOS[i].nota1);
printf("Digite a Segunda Nota do Aluno %s: ",
Perguntas interessantes