Ir ao conteúdo

Posts recomendados

Postado

Preciso criar uma pequena aplicação em C/C++ com a função main recebendo parâmetros, de forma que os parâmetros sejam entendidos como as 3 notas de um aluno em uma disciplina e informe sua média, considerando o sistema de cálculo da média utilizado pela instituição(média das duas maiores notas). Eu até fiz em C++ o seguinte código:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    float a1, a2, a3, media;
    {
        cout << "Informe a nota de A1 desse aluno: ";
        cin >> a1;

        cout << "Informe a nota de A2 desse aluno: ";
        cin >> a2;

        cout << "Informe a nota de A3 desse aluno: ";
        cin >> a3;

        if((a1 <= a2) && (a1 <= a3)) media = (a2+a3)/2;
        if((a2 <= a1) && (a2 <= a3)) media = (a1+a3)/2;
        if((a3 <= a1) && (a3 <= a2)) media = (a1+a2)/2;
    }
    cout << "A media do aluno e' " << media;
}

 

Porém, não consegui aplicar com a função main, onde só consegui o seguinte parâmetro básico:

int main(int argc, char** argv)

 

Agradeço qualquer ajuda que puderem me dar.

  • Curtir 1
Postado

@Paulo Sérgio Oliveira Coutinho Na teoria a função main é composta por:

 

int argc :   Recebe a quantidade de argumentos recebidos

char *argv[] : Recebe os argumentos como string's, então use atoi/atof para converter para inteiro/double e usar como nota.

 

Para acessar os argumentos, basta acessar os índices de argv, lembrando que argv[0] é o nome do executável. Use:

//verifica se foi recebido algum argumento
if(argc > 1){
   //imprime os argumentos
   for(int i = 1; i < argc; i++){
     printf("Argumento: %d %s\n",i, argv[i]);//argv[i] = argumentos
   }
}

Então se você ir no cmd e executar o programa assim:

> x.exe 

 

o argv[0] argumento é x.exe

 

Com argumentos:

 

> x.exe Nota1 Nota2

 

o argv[0] argumento é x.exe

o argv[1] argumento é a string Nota1

o argv[2] argumento é a string Nota2

 

 

 

 

 

  • Curtir 1
Postado

@Paulo Sérgio Oliveira Coutinho  Montar é fácil, eu quero que você entenda como funciona... Segue o exemplo de cima:

#include <stdio.h>
  
int main(int argc, char *argv[]){
	//verifica se foi recebido algum argumento
	if(argc > 1){
      	int i;
   		//imprime os argumentos
        for(i = 1; i < argc; i++){
     		printf("Argumento: %d - Contem: %s\n",i, argv[i]);//argv[i] = argumentos
   		}
	}
  	return 0;
}

 

Para enviar argumentos, ou você abre pelo prompt ou pelo executar(WinKey + R).

Postado

Eu até já montei o código, como segue:

 

#include <iostream>

using namespace std;

void Media(int media, int *a1, int *a2, int *a3)
{
    if((*a1 <= *a2) && (*a1 <= *a3)) media = (*a2+*a3)/2;
    {
        if((*a2 <= *a1) && (*a2 <= *a3)) media = (*a1+*a3)/2;
        {
            if((*a3 <= *a1) && (*a3 <= *a2)) media = (*a1+*a2)/2;
            {
            }
        }
    }
}
int main()
{
    float a1, a2, a3, media;
    {
        cout << "Informe a nota de A1 desse aluno: ";
        cin >> a1;

        cout << "Informe a nota de A2 desse aluno: ";
        cin >> a2;

        cout << "Informe a nota de A3 desse aluno: ";
        cin >> a3;
    }
    cout << "A media do aluno e' " << media << "\n";
}

 

Porém, ele tá acumulando lixo e não tá dando o resultado correto, pensei na função fflush, mas não consegui aplicar, pode me ajudar?

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...