Código linguagem C [Video]- Média aritmética de notas

Olá pessoal,  nesse artigo vou explicar como usar Struct (estrutura) em linguagem C. Você poderá criar seus programas de uma forma muito interessante, pois esse método vai além do simples conceito de variáveis e vetores. Disponibilizarei o código completo, um video explicativo e se precisar entre em contato para tirar dúvidas.

calculo-media-aritmetica-struct-classe-linguagem-C

O que é struct?

Struct é uma palavra chave da linguagem C que permite que você possa criar um “objeto” e dar atributos a ele, sendo assim podemos criar por exemplo um objeto chamado LIMAO e criar atributos para ele como COR, TAMANHO, GOSTO e assim por diante. Dessa forma podemos entender que podemos ter várias ocorrências de um LIMAO e seu atributos podem variar, se fossemos criar um vetor com os valores das suas características seria muito complexo e confuso, teríamos que usar o conceito de matriz e dificultaria o desenvolvimento.

Qual é a semelhança entre a estrutura em C e a orientação à objetos em outras linguagens?

Para entender a orientação à objetos a estrutura em C é muito útil pois na prática elas são muito parecidas. As duas estruturas criam um objeto em memória e podem criar atributos, porém a estrutura em C é uma representação abstrata de uma alocação de memória e limitada, a orientação à objetos é um conceito e não especificadamente um comando, onde é criado “instâncias” desse objeto em tempo de execução, onde é necessário que aja um método construtor com um “estado inicial” para o objeto.

Sintaxe:

struct  classe{ ->>  Struct palavra chave, “classe” nome atribuído para nossa estrutura
                 int nroChamada; ->> atributos com seus tipos respctivos
                 char nome[30];
                 float mediaNota;
                 int aprovado;
                 };

 

Criando código usando struct em linguagem C

No código abaixo criei uma situação onde temos um nº x de alunos, nº y de trabalhos com nome e numero da chamada de cada aluno. E o usuário vai digitar os dados dos alunos, quantidade de provas, quantidade dos trabalhos, as notas respectivas às provas e trabalhos, o programa vai calcular notas levando em consideração o peso do trabalho e da prova e fazer a média da nota.




Por exemplo: João número da chamada 1 fez 2 provas e 2 trabalhos, tirou 10 nas 2 provas e 2 nos 2 trabalhos a média dele será 7,60 e pelo critério de aprovação onde é necessário nota acima de 7 para aprovação ele está aprovado.

calculo-media-aritmetica-struct-classe-loingauem-C

Veja o vídeo que explica todo o código

——-   Copie o código abaixo e cole no seu ambiente de desenvolvimento ———–

/*

Autor:Wellington Rogati
e-mail: contato@implementandoarotina.com
Blog: implementandoarotina.com
*/

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>//inclusão de biblioteca pra funcionar o “toupper”

struct classe{
int nroChamada;
char nome[30];
float mediaNota;
int aprovado;
};

int main(){
int i,j,k,nroProva,nroTrabalho,nroAluno;
float notaProva,notaTrabalho;
printf(“\n\t##### Calculo de media da nota de alunos #####\n”);
printf(“\n\tDigite o numero de provas:”);
scanf(“%d”,&nroProva);
printf(“\n\tDigite o numero de trabalhos:”);
scanf(“%d”,&nroTrabalho);
printf(“\n\tDigite o numero de alunos:”);
scanf(“%d”,&nroAluno);//obs.: Esse código não funcionará corretamente se o número de alunos for “1”
struct classe aluno[nroAluno];//declarando um vetor do tipo struct classe

for(i=0;i<nroAluno;i++){
printf(“\n\tDigtite o nome do aluno:”);
scanf(” %s”,aluno[i].nome);
printf(“\tDigite o numero de chamada:”);
scanf(“%d”,&aluno[i].nroChamada);
for(j=0;j<nroProva;j++){
printf(“\n\tDigite a nota da prova: “);
scanf(“%f”,&notaProva);
while(notaProva < 0 || notaProva > 10){
printf(“\n\t##### Valor incorreto !!! #####\n\tDigite novamente!\n\t”);
scanf(“%f”,&notaProva);
}
notaProva=notaProva+notaProva;
}notaProva=notaProva/nroProva;
for(k=0;k<nroTrabalho;k++){
printf(“\n\tDigtite a nota do trabalho:”);
scanf(“%f”,&notaTrabalho);
while(notaTrabalho < 0 || notaTrabalho > 10){
printf(“\n\t##### Valor incorreto !!! #####\n\tDigite novamente!\n\t”);
scanf(“%f”,&notaTrabalho);
}
notaTrabalho=notaTrabalho+notaTrabalho;
}notaTrabalho=notaTrabalho/nroTrabalho;
aluno[i].mediaNota=(notaProva*0.7)+(notaTrabalho*0.3);
if(aluno[i].mediaNota >= 7 ){
aluno[i].aprovado=0;
}else{
if(aluno[i].mediaNota < 3 ){
aluno[i].aprovado=1;
}
}
}
for(i=0;i<nroAluno;i++){
printf(“\n\tO aluno %s teve media= %0.2f seu numero de chamda e:%d”,aluno[i].nome,aluno[i].mediaNota,aluno[i].nroChamada);
if(aluno[i].aprovado == 0){
printf(“\n\tAluno Aprovado!”);
}else{
if(aluno[i].aprovado == 1 ){
printf(“\n\tAluno Reprovado!”);
}else{
printf(“\n\tAluno de exame!”);
}
}
}
printf(“\n\n”);
printf(“\n\t\t## ESTATISTICAS ##”);
printf(“\n\t ( A ) -> Alunos aprovados”);
printf(“\n\t ( B ) -> Alunos reprovados”);
char op;
scanf(” %c”,&op);
op=toupper(op);//convertendo o caractere para maiúsculo, no caso do usuario digitar uma letrea minuscula que causaria um erro a frente
switch (op){
case ‘A': {int aprovados=0;
for(i=0;i<nroAluno;i++){
if (aluno[i].aprovado == 0){
aprovados++;
}
}printf(“\n\tNumero de aprovados= %d”,aprovados);
}break;
case ‘B': {int reprovados=0;
for(i=0;i<nroAluno;i++){
if (aluno[i].aprovado == 1){
reprovados++;
}
}printf(“\n\tNumero de aprovados= %d”,reprovados);
}break;
}
printf(“\n”);
system(“pause”);
return 0;

}

Se houver dúvida entre em contato através do e-mail contato@implementandoarotina.com ou deixe um comentário.

Facebook Comments

Website Comments

  1. Layla
    Responder

    I’m not sure exactly why but this site is loading incredibly
    slow for me. Is anyone else having this issue or is it a issue on my end?
    I’ll check back later and see if the problem still exists.

  2. Dewey
    Responder

    Producing a method and managing your campaign is an important part of a social internet marketing company, but it is also
    important to monitor the success of the campaign and work out corrections as
    needed.

  3. celll2get review
    Responder

    You aare so cool! Ido not believe I’ve truly read a sintle thing like this before.
    So good to ffind anothher person wjth somee unique thouhts on thus
    subject matter. Really.. thanks ffor starrting this up.
    This site is something that iss neede on the internet,
    someone with a bit of originality!

  4. Financial Solutions
    Responder

    In essence, when a business offers net-30 day terms on invoices, the company is offering a 30-day interest-free loan. This
    leads to a long term partnership, in which the RPO firm understands exactly what the business needs,
    and the business trusts the RPO firm to deliver results.
    The primary difference between recourse factoring and non-recourse
    factoring is the party who is at risk if your customer does not pay the invoice.

  5. food places near me
    Responder

    My brother suggested I might like this blog. He was once totally right.
    This publish truly made my day. You can not consider just how a lot
    time I had spent for this info! Thanks!

Post a comment