Luizzz Posted September 14, 2014 Report Share Posted September 14, 2014 (edited) 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 September 14, 2014 by thoga31 Tags code + GeSHi Link to comment Share on other sites More sharing options...
dipo Posted September 15, 2014 Report Share Posted September 15, 2014 Boas, Basicamente precisas de um IF para comparar o valor da soma dos pesos com 50... Cumps, Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted September 15, 2014 Report Share Posted September 15, 2014 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 ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Luizzz Posted September 15, 2014 Author Report Share Posted September 15, 2014 (edited) 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", ¬a1 ); printf ("\nDigite a segunda nota:\n"); scanf ("%f", ¬a2); 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 September 15, 2014 by thoga31 Tags code + GeSHi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted September 15, 2014 Report Share Posted September 15, 2014 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", ¬a1 ); printf ("\nDigite a segunda nota:\n"); scanf ("%f", ¬a2); 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 Portugol Plus Link to comment Share on other sites More sharing options...
Luizzz Posted September 15, 2014 Author Report Share Posted September 15, 2014 (edited) 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",¬a1); printf("\nDigite a segunda nota:\n"); scanf("%f",¬a2); 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 September 15, 2014 by thoga31 Tags code + GeSHi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted September 15, 2014 Report Share Posted September 15, 2014 (edited) 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 September 15, 2014 by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Luizzz Posted September 15, 2014 Author Report Share Posted September 15, 2014 (edited) 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 September 15, 2014 by thoga31 Tags code + GeSHi + formatação geral do post Link to comment Share on other sites More sharing options...
PsySc0rpi0n Posted September 23, 2014 Report Share Posted September 23, 2014 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now