Jump to content

calcular notas


Luizzz
 Share

Recommended Posts

Olá, gostaria de pedir ajuda em um programa que estou travado e não consigo desenvolver.

Eu tenho o seguinte código da linguagem c, e tenho que desenvolver a partir deste ou de outro mas que me de o resultado final certo.

#include <stdio.h>
main()
{
float anos, dias;
printf ("Digite sua idade em anos");
scanf ("%f",&anos);
dias = anos*365;
printf ("Sua idade em dias %f", dias);
}

Alguém poderia me ajudar a criar em cima deste programa um outro que receba o nome de um aluno, a nota da sua prova1 e a sua prova2, e que apareça "parabéns" caso esteja aprovado e "refazer a prova", caso esteja reprovado. A média para aprovar é de 50.

Estou com dificuldade pois, a prova1 tem peso 0,4 e a prova2 0,6. Exemplo amigos, 40*0,4=16

50*0,6=33. Deves agora somar os dois resultados, 33+16=49 (com esse resultado final "49", deves ver se está aprovado ou não).

Por favor amigos, me ajudem nesta linguagem, sou iniciante e já quebrei a cabeça tudo quanto foi jeito.

Edited by thoga31
Tags code + GeSHi
Link to comment
Share on other sites

de todo o processo que descreves que o programa terá de efectuar, qual é a parte que não consegues fazer ?

por outras palavras : o que já fizeste e onde paraste devido a não saberes resolver ?

Olá

Estou com problemas na parte em de dizer que o aluno está aprovado ou reprovado, eu jogo qualquer nota no programa, seja, 12 ou 89, ele sempre dá reprovado, ou quando eu mexo no código, dá tudo aprovado.

A nota que eu calculo é qualquer uma, exemplo: nota1=12*0,4 (0,4 porque é o peso desta nota) = 4,8

nota2=12*0,6=7,1. Somando esses dois resultados eu teria a média de: 11,9, eu estaria reprovado, pois, para passar na média tem que ter 50 para cima, 50 para baixo reprova. No caso, como eu disse, mesmo com nota alta ou baixa, dá tudo reprovado ou tudo aprovado. Eu quero ajuda de vocês amigos, para saber onde estou errando no código.

#include <stdio.h>
#include <stdlib.h>


int main (int argc, char *argv[])
{



char nomealuno[100];
float nota1, nota2, media;


printf ("\nDigite o nome completo do aluno:\n");

scanf ("%[^\n]s", &nomealuno);

printf ("\nDigite a primeira nota:\n");
scanf ("%f", &nota1 );

printf ("\nDigite a segunda nota:\n");
scanf ("%f", &nota2);
media = ((nota1*0.4) + (nota2*0.6));


if (media<5.0){

printf ("\nParabéns %s, voce foi aprovado(a) com:%5.0f\n", nomealuno, media );
}
else

if (media>5.0){

printf ("\n%s, voce foi reprovado(a) com a media:%5.0f\n", nomealuno, media );
}
return 0;

}
Edited by thoga31
Tags code + GeSHi
Link to comment
Share on other sites

incrível ser sempre, mas sempre o mesmo problema ...

primeiro, antes de te dar a solução ao problema vais fazer este teste :

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]) {
 char nomealuno[100];
 float nota1, nota2, media;

 printf ("\nDigite o nome completo do aluno:\n");
 scanf ("%[^\n]s", nomealuno); // <---- !!! cuidado com o operador & !!!

 printf ("\nDigite a primeira nota:\n");
 scanf ("%f", &nota1 );

 printf ("\nDigite a segunda nota:\n");
 scanf ("%f", &nota2);
 media = ((nota1*0.4) + (nota2*0.6));

 /* --------------- */
 printf("nome do aluno : %s\n", nomealuno);
 printf("       nota 1 : %f\n", nota1);
 printf("       nota 2 : %f\n", nota2);
 /* --------------- */

 if (media<5.0){
   printf ("\nParabéns %s, voce foi aprovado(a) com:%5.0f\n", nomealuno, media );
 } else {
   printf ("\n%s, voce foi reprovado(a) com a media:%5.0f\n", nomealuno, media );
 }

 return 0;
}

agora diz se os dados apresentados nos printf's adicionais são exactamente os que inseriste

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Bom, eu resolvi.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
  char nomealuno[100];
  float nota1,nota2,media;
  printf("\nDigite o nome completo do aluno:\n");
  scanf("%[^\n]s", nomealuno);
  printf("\nDigite a primeira nota:\n");
  scanf("%f",&nota1);
  printf("\nDigite a segunda nota:\n");
  scanf("%f",&nota2);
  media=((nota1*0.4)+(nota2*0.6));


  if (media >= 50) {
        printf("\nParabens %s, voce foi aprovado(a) com %5.2f\n", nomealuno, media);}
     else {
        printf("\n%s, voce foi reprovado(a) com a media %5.2f\n", nomealuno, media);
  }

  return 0;
}

Mas, porque acrescentaste ?

 /* --------------- */
 printf("nome do aluno : %s\n", nomealuno);
 printf("       nota 1 : %f\n", nota1);
 printf("       nota 2 : %f\n", nota2);
 /* --------------- */
Edited by thoga31
Tags code + GeSHi
Link to comment
Share on other sites

Mas, porque acrescentaste ?

/* --------------- */

printf("nome do aluno : %s\n", nomealuno);

printf(" nota 1 : %f\n", nota1);

printf(" nota 2 : %f\n", nota2);

/* --------------- */

porque não limpas o buffer de entrada de dados

se tens a leitura correcta de dados é puro acaso.

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Testei o código posto por você no codeblocks, e, à erro ainda entre aprovado e reprovado.

Testei novamente o códigio mudando a linha:

if (media<5.0){

para

   if (media >= 50) {

Agora deu certo, este que mandastes e o outro que pedi ajuda!

Poderias me dizer exatamente para que serves a linha: int main(int argc, char *argv[]) {

E porque bostaste

scanf ("%[^\n]s", nomealuno); // <---- !!! cuidado com o operador & !!

Cuidado com o operador? Seria melhor retirar está linha ou acrescentar algo?

Edited by thoga31
Tags code + GeSHi + formatação geral do post
Link to comment
Share on other sites

Eu acho que posso responder a duas coisas do post anterior.

A variável que declaraste com o nome "char nomealuno[100]" já é um endereço de memória por si só por ser uma string. Portanto quando usas o scanf para leres o nome do aluno para a string, não precisas de usar o operador "&" que serve exactamente para indicar um endereço de memória. Ao fazeres isso estás a tentar enviar "o endereço de um endereço de memória" para o scanf.

Quanto à outra questão, é relativamente fácil.

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.