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 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.
    • Por Henrique Ferreira Silva
      // incluindo as bibliotecas #include <stdio.h> #include <locale.h> // biblioteca para definição de configurações locais #include <stdlib.h> #include <time.h> // definindo as constantes #define NUMERO_DE_TENTATIVAS 3 #define FACIL 20 #define MEDIO 15 #define DIFICIL 6 #define PONTOS_INICIAL 1000 int main() {     volta:     setlocale(LC_ALL, "Portuguese"); // Definição para uso de configurações em português; Usei por causa da acentuação no compilador     //imprimi cabeçalho bonito do jogo     printf("\n\n");     printf("          P  /_\\  P                              \n");     printf("         /_\\_|_|_/_\\                            \n");     printf("     n_n | ||. .|| | n_n         Bem vindo ao     \n");     printf("     |_|_|nnnn nnnn|_|_|     Jogo de Adivinhação! \n");     printf("    |\" \"  |  |_|  |\"  \" |                     \n");     printf("    |_____| ' _ ' |_____|                         \n");     printf("          \\__|_|__/                              \n");     printf("\n\n");          // declarando variaveis que serão usadas mais a frente     int chute;     int acertou;     int nivel;     int totaldetentativas;     int limite;     int voltar;          // difinindo a quantidade de pontos inicial     double pontos = 1000;          //gerando um número secreto aleatório     printf("Escolha o limite: ");     scanf("%d", &limite);          srand(time(0));     int numerosecreto = rand() % limite;          // escolhendo o nivel de dificuldade     printf("Qual o nível de dificuldade?\n");     printf("(1) Fácil (2) Médio (3) Difícil\n\n");     printf("Escolha: ");          scanf("%d", &nivel);          switch(nivel) {         case 1:             totaldetentativas = 20;             break;         case 2:             totaldetentativas = 15;             break;         default:             totaldetentativas = 6;             break;     }          // loop principal do jogo     for(int i = 1; i <= totaldetentativas; i++) {                  printf("-> Tentativa %d de %d\n", i, totaldetentativas);                  printf("Chute um número: ");         scanf("%d", &chute);                  // tratando chute de número negativo         if(chute < 0) {                 printf("Você não pode chutar números negativos\n");                 i--;                 continue;         }                  // verifica se acertou, foi maior ou menor         acertou = chute == numerosecreto;              if(acertou) {                 break;         } else if(chute > numerosecreto){                 printf("\nSeu chute foi maior do que o número secreto!\n\n");         } else {                 printf("\nSeu chute foi menor do que o número secreto!\n\n");         }                  // calcula a quantidade de pontos         double pontosperdidos = abs(chute - numerosecreto) / 2.0;         pontos = pontos - pontosperdidos;     }          // imprrimindo mensagem de vitória ou derrota     printf("\n");     if(acertou) {             printf("             OOOOOOOOOOO               \n");             printf("         OOOOOOOOOOOOOOOOOOO           \n");             printf("      OOOOOO  OOOOOOOOO  OOOOOO        \n");             printf("    OOOOOO      OOOOO      OOOOOO      \n");             printf("  OOOOOOOO  #   OOOOO  #   OOOOOOOO    \n");             printf(" OOOOOOOOOO    OOOOOOO    OOOOOOOOOO   \n");             printf("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  \n");             printf("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  \n");             printf("OOOO  OOOOOOOOOOOOOOOOOOOOOOOOO  OOOO  \n");             printf(" OOOO  OOOOOOOOOOOOOOOOOOOOOOO  OOOO   \n");             printf("  OOOO   OOOOOOOOOOOOOOOOOOOO  OOOO    \n");             printf("    OOOOO   OOOOOOOOOOOOOOO   OOOO     \n");             printf("      OOOOOO   OOOOOOOOO   OOOOOO      \n");             printf("         OOOOOO         OOOOOO         \n");             printf("             OOOOOOOOOOOO              \n");             printf("\nParabéns! Você acertou!\n");             printf("Você fez %.2f pontos. Até a próxima!\n\n", pontos);     } else {         printf("       \\|/ ____ \\|/    \n");            printf("        @~/ ,. \\~@      \n");            printf("       /_( \\__/ )_\\    \n");            printf("          \\__U_/        \n");                      printf("\nVocê perdeu! Tente novamente!\n\n");     }          while(voltar = 1) {     printf("Digite 1 para voltar.\n");     printf("Você quer jogar novamente? ");     scanf("%d", &voltar);          goto volta;     }      }  
×

Informação importante

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