Logo Hardware.com.br
Fernando.Olliveira
Fernando.Oll... Novo Membro Registrado
5 Mensagens 0 Curtidas

Substituir nota Linguagem C

#1 Por Fernando.Oll... 04/11/2016 - 17:08
Olá pessoal, estou com dificuldades com um trabalho de faculdade, tenho que desenvolver um programa no qual eu dou entrada com 4 notas e 1 nota substitutiva. Essa nota substitutiva vai substituir a menor das 4 notas. Qual o caminho que devo seguir?

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

int main(void)
{
const float p1=1, p2=2, p3=3, p4=4;
float n1, n2, n3, n4, nsub, nota1, nota2, nota3, nota4;
int mat, media;
char nome[61];

printf("* CALCULE A MEDIA *\n \n");/*Titulo do programa*/

printf("Digite seu nome: ");
gets(nome);

printf("Digite o numero da matricula: ");
scanf("%d", &mat);
printf("\n");


printf("Digite a primeira nota: ");
scanf("%f", &n1);
nota1=n1*p1;

printf("Digite a segunda nota: ");
scanf("%f", &n2);
nota2=n2*p2;

printf("Digite a terceira nota: ");
scanf("%f", &n3);
nota3=n3*p3;

printf("Digite a quarta nota: ");
scanf("%f", &n4);
nota4=n4*p4;

printf("Digite a nota substitutiva: ");
scanf("%f", &nsub);


//SUBSTITUIR A MENOR NOTA PELA NOTA SUBSTITUTIVA//


printf("Aluno: %s", nome);
printf("\n");
printf("Matricula: %d", mat);
printf("\n");
printf("Media do Aluno: %f", nota1);
printf("\n");

getch();
return 0;
}
Fernando.Olliveira
Fernando.Oll... Novo Membro Registrado
5 Mensagens 0 Curtidas
#3 Por Fernando.Oll...
09/11/2016 - 09:54
Fiz essa lógica abaixo, porém, o usuário indica qual a menor nota, é possível em 4 notas desenvolver uma lógica pra substituir a substitutiva pela menor?


[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

int main(void)
{/*Declarando variaveis*/
const int p1=1, p2=2, p3=3, p4=4;
int mat,n1, n2, n3, n4, nsub, menornota, nota1, nota2, nota3, nota4,tot1,tot2,tot3,media;

char nome[61], resp;

printf("* CALCULE A MEDIA *\n \n");/*Titulo do programa*/

printf("Digite nome do aluno: ");
gets(nome);

printf("Digite o numero da matricula: ");
scanf("%d", &mat);
printf("\n");


printf("Digite a PRIMEIRA nota: ");
scanf("%d", &n1);

printf("Digite a SEGUNDA nota: ");
scanf("%d", &n2);

printf("Digite a TERCEIRA nota: ");
scanf("%d", &n3);

printf("Digite a QUARTA nota: ");
scanf("%d", &n4);
printf("\n");

printf("Digite a MENOR nota: ");
scanf("%d", &menornota);

printf("Digite a nota SUBSTITUTIVA: ");
scanf("%d", &nsub);

printf("\n \n");

nota1=n1*p1;
nota2=n2*p2;
nota3=n3*p3;
nota4=n4*p4;

tot1=(nota1+nota2)+(nota3+nota4);
tot2=tot1-menornota;
tot3=tot2+nsub;
media=tot3/10;

printf("Aluno: %s", nome);
printf("\n");
printf("Matricula: %d", mat);
printf("\n");
printf("Media do Aluno: %d", media);
printf("\n");

if(media>=5){
printf("Situacao: APROVADO!");
}
else{
printf("Situacao: REPROVADO!");
}


getch();
return 0;
}
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#4 Por esquiloesper...
09/11/2016 - 14:31
Fernanderr_what.pnglliveira disse:
... é possível em 4 notas desenvolver uma lógica pra substituir a substitutiva pela menor?
Claro que sim!
É tanto possível quanto necessário.

O cálculo da média ponderada está correto e identificar a menor nota é tarefa do sistema.

Tente fazer esta parte também, então nos mostre o raciocínio que utilizou.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
Fernando.Olliveira
Fernando.Oll... Novo Membro Registrado
5 Mensagens 0 Curtidas
#5 Por Fernando.Oll...
11/11/2016 - 10:18
Pessoal, consegui "finalizar" o programa, porém, preciso apresentar em tela no final, todos os nomes e medias de cada aluno e uma media da sala... Como posso resolver? Lista?

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG] /*Incluindo as bibliotecas*/
[HASHTAG]#include[/HASHTAG]

int main(void)
{/*Declarando variaveis*/


const int p1=1, p2=2, p3=3, p4=4;
int mat,n1, n2, n3, n4, nsub, menor,maior, nota1,
nota2, nota3, nota4,tot1,tot2,tot3,media,mediasala;

char nome[21], sobrenome[21], resp;

printf("\n");
printf("***************************** CALCULE A MEDIA **********************************");
/*Titulo do programa*/
printf("\n");

do{
printf("Digite o primeiro nome do aluno: ");/*Comunicação com o usuário*/
scanf("%s", &nome);
printf("Digite o ultimo nome do aluno: ");
scanf("%s", &sobrenome);
/*Lendo e armazenando a informação digitada*/

printf("Digite o numero da matricula: ");/*Comunicação com o usuário*/
scanf("%d", &mat);
printf("\n================================================================================\n");


printf("Digite a PRIMEIRA nota: ");
scanf("%d", &n1);/*Usuário informa as notas*/

printf("Digite a SEGUNDA nota: ");
scanf("%d", &n2);

printf("Digite a TERCEIRA nota: ");
scanf("%d", &n3);

printf("Digite a QUARTA nota: ");
scanf("%d", &n4);
printf("\n");

nota1=n1*p1;/*Lógica do programa*/
nota2=n2*p2;
nota3=n3*p3;
nota4=n4*p4;

maior=n1;
menor=n1;

if (n2 menor=n2;
if (n2>maior)
maior=n2;
if (n3 menor=n3;
if (n3>maior)
maior=n3;
if (n4 menor=n4;
if (n4>maior)
maior=n4;

printf("\nMenor nota: %d\n", menor);
printf("Digite a nota SUBSTITUTIVA: ");
scanf("%d", &nsub);

tot1=(nota1+nota2)+(nota3+nota4)-(menor)+(nsub);
media=tot1/10;


printf("\n================================================================================\n");

/*Tela final apresentada ao usuário*/
printf("Aluno: %s %s", nome,sobrenome);
printf("\n");
printf("Matricula: %d", mat);
printf("\n");
printf("Media do Aluno: %d", media);
printf("\n");

if(media>=5)
printf("Situacao: APROVADO!\n\n");
else
printf("Situacao: REPROVADO!\n\n");
printf("================================================================================\n");

printf("Digite 1 para continuar e 2 para sair.\n");
scanf("%d", &resp);
printf("\n_______________________________________________________________________________\n");

}while (resp==1);

printf("Media da sala: ");
getch();
return 0;
}
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#6 Por esquiloesper...
11/11/2016 - 11:31
Fernanderr_what.pnglliveira disse:
Como posso resolver? Lista?
Sim. Crie uma lista.
Você pode fazer isto usando qualquer estrutura de dados.
Se puder limitar o tamanho da lista, que é o total de alunos, crie um Array (vetor). Se não, crie um objeto Struct ou um encadeamento. Mas lembre-se: A curva de complexidade cresce respectivamente.

- Sugiro também que transfira a execução para um novo método e crie - no Main() - um loop com uma condição de saída, que aponte para este novo método. Você pode popular a lista dentro desse loop.

Para a média da sala calcule a média simples - total.div(numAlunos).

E para imprimir a listagem de alunos você pode fazer isso dentro do mesmo loop utilizado para calcular a média da sala... A menos que seja necessário imprimir a média da sala antes de listar Alunos.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
Fernando.Olliveira
Fernando.Oll... Novo Membro Registrado
5 Mensagens 0 Curtidas
#7 Por Fernando.Oll...
22/11/2016 - 16:34
Pessoal, o programa esta pronto, porém tem um detalhe que eu não consigo resolver. No final depois de cadastrar as notas de por exemplo 3 alunos, na lista final os nomes se sobrepõe, mas preciso que apreçam individual, vejam só:

Imagem

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG] /*Incluindo as bibliotecas*/
[HASHTAG]#include[/HASHTAG]

int main(void)
{/*Declarando variaveis*/


const int p1=1, p2=2, p3=3, p4=4;
int mat, n1, n2, n3, n4, nsub, menor,maior, nota1,
nota2, nota3, nota4,tot1,media,mediasala=0;

/*Declaração de Vetores*/
char v_aluno_dados[50];
int v_aluno_media[50];

int i=0, j=0;

char nome[21], sobrenome[21], resp;

printf("\n");
printf("***************************** CALCULE A MEDIA **********************************");
printf("\n");
/*Titulo do programa*/
printf("\n");

do{
printf("\n");
printf(" INFORME OS DADOS DO ALUNO\n ");
printf("\n");
printf("Digite o primeiro nome do aluno: ");/*Comunicação com o usuário*/
scanf("%s", &v_aluno_dados);
/*v_aluno_dados = getchar();*/

printf("Digite o ultimo nome do aluno: ");
scanf("%s", &sobrenome);
/*Lendo e armazenando a informação digitada*/

printf("Digite o numero da matricula: ");/*Comunicação com o usuário*/
scanf("%d", &mat);
printf("\n================================================================================\n");


printf("Digite a PRIMEIRA nota: ");
scanf("%d", &n1);/*Usuário informa as notas*/

printf("Digite a SEGUNDA nota: ");
scanf("%d", &n2);

printf("Digite a TERCEIRA nota: ");
scanf("%d", &n3);

printf("Digite a QUARTA nota: ");
scanf("%d", &n4);
printf("\n");

nota1=n1*p1;/*Lógica do programa*/
nota2=n2*p2;
nota3=n3*p3;
nota4=n4*p4;

maior=n1;
menor=n1;

if (n2 menor=n2;
if (n2>maior)
maior=n2;
if (n3 menor=n3;
if (n3>maior)
maior=n3;
if (n4 menor=n4;
if (n4>maior)
maior=n4;

printf("\nMenor nota: %d\n", menor);
printf("Digite a nota SUBSTITUTIVA: ");
scanf("%d", &nsub);

tot1=(nota1+nota2)+(nota3+nota4)-(menor)+(nsub);
media = (tot1/10);

v_aluno_media = media;

mediasala = mediasala + media;


printf("\n");
printf("\n================================================================================\n");
printf("\n");

/*Tela final apresentada ao usuário*/
printf("Aluno: %s %s", nome,sobrenome);
printf("\n");
printf("Matricula: %d", mat);
printf("\n");
printf("Media do Aluno: %d", media);
printf("\n");

if(media>=5)
printf("Situacao: APROVADO!\n\n");
else
printf("Situacao: REPROVADO!\n\n");
printf("================================================================================\n");

printf("Deseja Continuar????\n");
printf("1 - Sim / 2 - Não.\n");
scanf("%d", &resp);
printf("\n_______________________________________________________________________________\n");

i = i + 1;

}while (resp==1);



if(resp==2){

for (j = 0; j < i; j++) {
printf("Aluno: %s", &v_aluno_dados[j]);
printf("\n");
printf("Media do Aluno: %d", v_aluno_media[j]);
printf("\n");
printf("\n");
}

mediasala = mediasala / i;
printf(" MEDIA GERAL DOS ALUNOS\n ");
printf("\n");
printf("Media dos alunos da sala: %d", mediasala);
printf("\n\n");

system("PAUSE");
return 0;
}
}
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#8 Por tpcvasco
23/11/2016 - 12:31
Vc está gravando todas os nomes em uma única string. O ideal seria vc ter um vetor de strings. Um struct com as notas tb facilitaria vc.
"Milhouse: - Médicos e bombeiros são heróis.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#9 Por esquiloesper...
24/11/2016 - 02:26
Fernanderr_what.pnglliveira disse:
Pessoal, o programa esta pronto, porém tem um detalhe que eu não consigo resolver...
Na verdade você precisava apenas informar a - v_aluno_dados - o seu comprimento para cada nome na lista de 50 alunos.

Como cada nome tem 20 caracteres, fazer isso é bem simples. Veja:
/*Declaração de Vetores*/
char nome[21], sobrenome[21];
char v_aluno_dados[50][21];
int v_aluno_media[50];

Você se esqueceu de usar a variável "nome" e assim ela não mostrava nada ao ser apresentada na tela. Eu corrigi isto também.
No último loop FOR você utiliza "&" para imprimir na tela a variável - v_aluno_dados. - Além de desnecessário isto não é correto.
Aproveitei para enxugar o seu código um pouco, removendo o excesso de printf("\n") e outras correções menores que você já aplica.
A "maior nota" não é usada em momento algum: Pode descartar.

Erros de lógica não podem passar despercebidos mas, infelizmente isso acontece. A nota substitutiva deve prevalecer unicamente quando for maior que a menor nota. Tem que validar antes. - Existe ainda a aplicação dos pesos às referidas notas: Se a quarta nota cujo peso 4 for a menor, então ela deverá ser substituída antes de aplicar o peso. É justo, não?
" Código funcional "
[code=c]/* Incluindo as bibliotecas */
#include
#include
#include
#include

int main(void) {

/* Declarando variaveis */

const int p1 = 1, p2 = 2, p3 = 3, p4 = 4;
int mat, resp, nsub, menor, tot1, media,
n1, n2, n3, n4, nota1,nota2, nota3, nota4,
x = 0, j = 0, mediasala = 0;

/* Declaração de Vetores */

char nome[21], sobrenome[21];
char v_aluno_dados[50][21];
int v_aluno_media[50];

/* Titulo do programa */
printf("\n***************************** CALCULE A MEDIA **********************************\n\n");

do {
/* Lendo e armazenando informações digitadas */
printf("\n INFORME OS DADOS DO ALUNO\n\n");
printf("Digite o primeiro nome do aluno: ");
scanf("%s", &nome[x]);
strcpy(v_aluno_dados[x], nome);

printf("Digite o ultimo nome do aluno: ");
scanf("%s", &sobrenome[x]);

printf("Digite o numero da matricula: ");
scanf("%d", &mat);
printf("\n================================================================================\n");

/* Usuário informa as notas */
printf("Digite a PRIMEIRA nota: ");
scanf("%d", &n1);

printf("Digite a SEGUNDA nota: ");
scanf("%d", &n2);

printf("Digite a TERCEIRA nota: ");
scanf("%d", &n3);

printf("Digite a QUARTA nota: ");
scanf("%d", &n4);

menor = n1; j = 1;
if (n2 < menor) { menor = n2; j = 2; }
if (n3 < menor) { menor = n3; j = 3; }
if (n4 < menor) { menor = n4; j = 4; }

printf("\n\nMenor nota: %d\n", menor);
printf("Digite a nota SUBSTITUTIVA: ");
scanf("%d", &nsub);

switch(j) {
case 1: n1 = nsub; break;
case 2: n2 = nsub; break;
case 3: n3 = nsub; break;
default: n4 = nsub;
}

nota1 = n1 * p1;
nota2 = n2 * p2;
nota3 = n3 * p3;
nota4 = n4 * p4;

tot1 = nota1 + nota2 + nota3 + nota4;
media = (tot1 / 10);

v_aluno_media[x] = media;

mediasala = mediasala + media;

printf("\n\n================================================================================\n\n");

/* Tela final apresentada ao usuário */
printf("Aluno: %s %s\n", nome, sobrenome);
printf("Matricula: %d\n", mat);
printf("Media do Aluno: %d\n", media);

if(media >= 5)
printf("Situacao: APROVADO!");
else
printf("Situacao: REPROVADO!");
printf("\n\n================================================================================\n");

printf("Deseja Continuar????\n");
printf("1 - Sim / 2 - Não.\n");
scanf("%d", &resp);
printf("\n_______________________________________________________________________________\n");

x = x + 1;

} while (resp == 1);

for (j = 0; j < x; j++) {
printf("Aluno: %s\n", v_aluno_dados[j]);
printf("Media do Aluno: %d\n\n", v_aluno_media[j]);
}

mediasala = mediasala / x;
printf(" MEDIA GERAL DOS ALUNOS\n\n");
printf("Media dos alunos da sala: %d\n\n", mediasala);

system("PAUSE");
return 0;
}[/code]
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal