Ir para conteúdo
thisis_paulo

Consigo fazer um cin em um vetor dentro de um struct em uma biblioteca criada por mim mesmo?

Recommended Posts

Olá pessoal, sou iniciante tanto aqui no fórum tanto na linguagem c++.

Estou tentando resolver o seguinte algoritmo:

 

Calcule as médias das notas escolares de um aluno (media 1º bimestre, media 2º bimestre, media final) sendo que:

As notas das provas parciais 1 e 2 equivalem a 30% da nota total do bimestre 1 e 2;

As notas das provas oficiais 1 e 2 equivalem a 70% da nota total do bimestre 1 e 2;

A nota total do bimestre 1 equivale a 40% da nota final do semestre;

A nota total do bimestre 2 equivale a 60% da nota final do semestre;

 

Utilize structs para armazenar a notas e medias e referencie cada elemento por ponteiros no main.

 

Segue abaixo, a minha tentativa.

Não estou conseguindo guardar as notas pedidas no main no vetor de notas dentro da struct, estou usando cin para fazer isso, uma solução mais adequada para realizar este procedimento?

 

- Biblioteca

typedef struct notas {
	float parcial[2], *p1, *p2;
	float oficial[2], *of1, *of2;
	float exame, *ex;
} NotasProvas;

void NotaBim1 (NotasProvas &notas, float *p1, float *of1);
void NotaBim2 (NotasProvas &notas, float *p2, float *of2);
void NotaExame (NotasProvas &notas, float *ex);

typedef struct medias {
	float mediaB1, mediaB2, *m1, *m2;
	float notaFinal, *nf;
	float notaTotal, *nt;
} MediasNotas;

void MediaBim1 (MediasNotas &medias, float *m1);
void MediaBim2 (MediasNotas &medias, float *m2);
void MediaFinal (MediasNotas &medias, float *m1, float *m2);
void MediaTotal (MediasNotas &medias, float *nf, float *ex);

 

- Procedimentos 

#include "notas.h"

void NotaBim1 (NotasProvas &notas, float *p1, *of1) {
	*p1 = &NotasProvas.parcial[1];
	*of1= &NotasProvas.oficial[1];
	
	MediasNotas.mediaB1 = (p1 * 0.3) + (of1 * 0.7);
}

void NotaBim2 (NotasProvas &notas, float *p2, *of2) {
	*p2 = &NotasProvas.parcial[2];
	*of2 = &NotasProvas.oficial[2];
	
	MediasNotas.mediaB2 = (p2 * 0.3) + (of2 * 0.7);
}

void MediaFinal (MediasNotas &medias, float *m1, *m2) {
	*m1 = &MediasNotas.mediaB1;
	*m2 = &MediasNotas.mediaB2;
	
	MediasNotas.notaFinal =  (m1 * 0.4) + (m2 * 0.6);
}

void MediaTotal (MediasNotas &medias, float *nf, *ex) {
	*nf = &MediasNotas.notaFinal;
	*ex = &NotasProvas.exame;
	MediasNotas.notaTotal = (nf + ex) / 2;
}

- Função Main

#include <iostream>
#include "notas.h"

using namespace std;

int main() {
	
	cout << "\t\t CALCULANDO NOTAS " << endl;
	cout << endl;
	cout << "Qual a sua nota da Prova Parcial 01? " << endl;
	cin >> NotasProvas.p1;
	cout << "Qual a sua notas da Prova Oficial 01? " << endl;
	cin >> NotasProvas.of1;
	
	cout << "Nota do 1º bimestre: " << MediasNotas.m1 << endl;
	
	cout << "\t\t Segundo Bimestre" << endl;
	cout << endl;
	
	cout << "Qual a sua nota na Prova Parcial 02? " << endl;
	cin >> NotasProvas.p2;
	cout << "Qual a sua nota na Prova Oficial 02? " << endl;
	cin >> NotasProvas.of2;
	
	cout << "Nota do 2º bimestre: " << MediasNotas.m2 << endl;
	
	cout << "Media Final: " << MediasNotas.nf << endl;
	

	system("PAUSE");
	return 0;
}

Desde já, agradeço pelas ajudas!

 

 

 

 

 

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por llucaahenri
      Bom dia!
      Sou iniciante nessa área de programação, estou aprendendo sobre vetores e matrizes e gostaria de saber como faço para calcular elementos de um vetor e de uma matriz, eu tentei fazer usando laço For, mas não consegui.
      Esse exercício que estou tentando fazer.  
      Leia um vetor de 12 posições e em seguida ler também dois valores X e Y quaisquer correspondentes a duas posições no vetor. Ao final seu programa deverá escrever a soma dos valores encontrados nas respectivas posições X e Y.
      Meu código!
       
      #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() {     setlocale(LC_ALL, "Portuguese");     int VetorX[12], VetorY[12];     int Result, X, Y, i, j;     for(i = 1; i < 13; i++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor X. \n", i);         scanf("%d", &X);     }     for(i = 1; j < 13; j++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor Y. \n", j);         scanf("%d", &Y);     }         for(i = 0; i < 13; i++){             Result =+ VetorX;             printf("O resultado é%d", Result);         }     return 0; }
       
    • Por CarlosAdriano
      Faz um tempo (uns meses) eu encontrei uma ferramenta para C/C++ que eu não lembro o nome. É uma espécie de preprocessador, como se fosse uma extensão do preprocessador nativo do C/C++. Você escreve o código em arquivos com uma extensão própria do programa e ele usa esses arquivos como entrada, processa eles e gera arquivos de saída C/C++.  Parecido com o que SASS e LESS faz, só que para C/C++ e com mais recursos. Você chama ele pela linha de comando, como a maioria dos programas desse tipo. Se eu não me engano, ele permite você gerar versões diferentes do mesmo código de forma automatizada. Alguém sabe o nome desse software ?
    • Por Matheus Moraes Tomi
      Boa tarde pessoal,eu estou com uma duvida de programação,estou estudando para uma prova de programação em dev que fiquei de exame e o professor pediu para fazer um programa com essa questão seguinte: Deseja-se armazenar de uma empresa que trabalha com vendas de veículos os dados de 10 veículos,o nome da fabrica,nome do modelo,cor,o ano,a placa e o valor do veiculo.
      a)Imprima um relatório com os 10 veiculos
      b)Venda todos os veículos para uma unica pessoa a vista e de 20% de desconto no valor total.
      c)A empresa adquiriu mais 10 veiculos usados,faça o cadastro e imprima um relatorio com as 10 novas aquisições.
      d)Calcular quanto tempo de vida possui o automóvel.Imprima os veiculos que tem mais de tres anos de uso e que sao de cor branca.
       
      Eu tentei fazer boa parte da questao com esse algoritmo seguinte mas nao deu certo necessito de ajuda para fazer o codigo dessa questão.
       
      #include <stdio.h> #include <stdlib.h> #define DIM 1 #define MAX 10 struct carros{     char nome_fab[40],nome_mod[40],placa[5],usado[10];     int ano;     float valor_carro; }; main(){ float media=0,media2=0,media3=0; int i; struct carros carros[DIM]; for(i=0;i<DIM;i++){ printf("digite o nome da fabrica: "); fflush(stdin); fgets(carros.nome_fab,40,stdin); printf("digite o nome do modelo: "); fflush(stdin); fgets(carros.nome_mod,40,stdin); printf("digite o ano: "); fflush(stdin); scanf("i",carros.ano); printf("digite a placa do carro: "); fflush(stdin); fgets(carros.placa,5,stdin); printf("digite o valor do carro: "); fflush(stdin); scanf("%f",&carros.valor_carro); } printf("\n"); for(i=0;i<DIM;i++){ printf("Fabrica:       %s",carros.nome_fab); printf("modelo:         %s",carros.nome_mod); printf("ano:             %i\n",carros.ano); printf("placa:             %s\n",carros.placa); printf("Valor do carro:      %f\n",carros.valor_carro)              ;              } for(i=0;i<DIM;i++){ media=media + carros.valor_carro; media2=media*0.2; media3=media - media2; } printf("%f",media3); for(i=0;i<MAX;i++){ printf("digite o nome do veiculo usado"); fflush(stdin); fgets(carros.usado,10,stdin); } system("pause"); return 0; }
    • Por vianaerica
      Ei pessoal, estou fazendo um trabalho para a faculdade em C.
      Preciso fazer alteração de dados de um usuário, porém a alteração não está sendo aplicada para uma pessoa em específico. Poderiam me ajudar?
      Código:
       
      Tenho que fazer isto para o nome, endereço e data de nascimento do usuário.
    • Por Henrique Ferreira Silva
      Como eu faço para guardar o último número chutado pelo usuário numa variável (É um jogo de adivinhação). Obs: eu não quero guarda todos os números não chutados, e sim, o último. Me ajudem.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.