• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

migg

Programa para a escola

4 mensagens neste tópico

Não consigo fazer um novo tópico na parte dos códigos-fontes

aqui está um que fiz nada mal para um iniciante acho eu lol

quem quiser pode melhorar o código

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

int main()
{
   int opc, numtest, opcdois, ld, lm, md, mm, fd, fm, id, im, hd, hm, gd, gm, ed, em, cd, cm, mod, mom, retro;
   float media, a, b, c, d;

   do {
     REFAZ:
printf("nnn          Clique 1 para fazer a media dos teste___________________nnn");
printf("n              Clique 2 para ver a data dos testes________________________n");
scanf("%d", &opc);
   } while ((opc < 1) || (opc > 2));

   switch (opc)
   {
   case 1:
printf("nnQuantos testes tives-te?nn");
printf("1nn");
printf("2nn");
printf("3nn");
printf("4nn");
scanf("%d", &numtest);

if (numtest == 1) {
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);

    media = a / 1;

    printf("tnA media e de:%f", media);
    printf("nnPara voltar para o inicio do programa precione 1nn");
    scanf("%d", &retro);

    while (retro == 1)
	goto REFAZ;
}

if (numtest == 2)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);
    scanf("%f", &b);

    media = (a + b) / 2;

    printf("tnA media e de:%f ", media);
    printf("nnPara voltar para o inicio do programa precione 1nn");
    scanf("%d", &retro);

    while (retro == 1)
	goto REFAZ;
}
if (numtest == 3)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);
    scanf("%f", &b);
    scanf("%f", &c);

    media = (a + b + c) / 3;

    printf("tnA media e de:%f ", media);
    printf("nnPara voltar para o inicio do programa precione 1nn");
    scanf("%d", &retro);

    while (retro == 1)
	goto REFAZ;
}
if (numtest == 4)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);
    scanf("%f", &b);
    scanf("%f", &c);
    scanf("%f", &d);

    media = (a + b + c + d) / 4;

    printf("tnA media e de:%f ", media);
    printf("nnPara voltar para o inicio do programa precione 1nn");
    scanf("%d", &retro);

    while (retro == 1)
	goto REFAZ;
}
break;

   case 2:
do
{
    printf("------Inserir data de um teste-----1nn");
    printf("------Ver a tabela de testes-----2nn");
    scanf("%d", &opcdois);
}
       while ((opcdois < 1) || (opcdois > 2));

switch (opcdois)
{
case 1:
    printf("nnnLingua Portuguesa                                nn");
    scanf(" %d", &ld);
    scanf(" %d", &lm);
    printf("Matematica                                            nn");
    scanf(" %d", &md);
    scanf(" %d", &mm);
    printf("Moral                                                  nn");
    scanf(" %d", &mod);
    scanf(" %d", &mom);
    printf("Fisico quimica                                        nn");
    scanf(" %d", &fd);
    scanf(" %d", &fm);
    printf("Ciencias Naturais                                      nn");
    scanf(" %d", &cd);
    scanf(" %d", &cm);
    printf("Educacao Fisica                                        nn");
    scanf(" %d", &ed);
    scanf(" %d", &em);
    printf("Geografia                                              nn");
    scanf(" %d", &gd);
    scanf(" %d", &gm);
    printf("Historia                                              nn");
    scanf(" %d", &hd);
    scanf(" %d", &hm);
    printf("Ingles                                                nn");
    scanf(" %d", &id);
    scanf(" %d", &im);
    printf("Frances                                                nn");
    scanf(" %d", &fd);
    scanf(" %d", &fm);

    printf("  ________________________Dia___|____Mes_______________________________");
    printf("nnnLingua Portuguesa |  %d      | %d        nn", ld, lm);
    printf("Matematica              |  %d      | %d        nn", md, mm);
    printf("Moral                  |  %d      | %d        nn", mod, mom);
    printf("Fisico quimica          |  %d      | %d        nn", fd, fm);
    printf("Ciencias Naturais      |  %d      | %d        nn", cd, cm);
    printf("Educacao Fisica        |  %d      | %d        nn", ed, em);
    printf("Geografia              |  %d      | %d        nn", gd, gm);
    printf("Historia                |  %d      | %d        nn", hd, hm);
    printf("Ingles                  |  %d      | %d        nn", id, im);
    printf("Frances                |  %d      | %d        nn", fd, fm);
    printf("nnPara voltar para o inicio do programa precione 1nn");
    scanf("%d", &retro);

    while (retro == 1)
	goto REFAZ;

    break;

case 2:
    printf("nnn    ________________________Dia___|____Mes_______________________________");
    printf("nnnLingua Portuguesa          %d        %d        nn", ld, lm);
    printf("Matematica                      %d        %d        nn", md, mm);
    printf("Moral                            %d        %d        nn", mod, mom);
    printf("Fisico quimica                  %d        %d        nn", fd, fm);
    printf("Ciencias Naturais                %d        %d        nn", cd, cm);
    printf("Educacao Fisica                  %d        %d        nn", ed, em);
    printf("Geografia                        %d        %d        nn", gd, gm);
    printf("Historia                        %d        %d        nn", hd, hm);
    printf("Ingles                          %d        %d        nn", id, im);
    printf("Frances                          %d        %d        nn", fd, fm);
    printf("    ____________________________________________________________nn");
    printf("nnPara voltar para o inicio do programa precione 1nn");
    scanf("%d", &retro);

    while (retro == 1)
	goto REFAZ;

    break;
}
   }
   system("Pause");
   return (0);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou ter que repetir:

tiveste

pressione

E continuo a achar que é um péssimo exemplo de código em C, não só por causa do GOTO, mas porque tens imenso código repetido (1 teste, 2 testes, 3 testes, etc.) que podia ser substituído por um ciclo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Defines uma variável iteradora i no início. Depois de pedires o número de testes fazes:

media=0;
for(i=1 ; i<=numtest ; i+=1) {
   printf("Nota do teste %d:",i);
   scanf("%f",a);
   media+=a/numtest;
}
printf("\t\nA media e de:%f ",media);

Ou seja, a média começa por ser 0. Fazemos um ciclo que faz com que i varie de 1 até ao número de testes. De cada vez perguntamos a nota do teste e somamos a nota/número de testes à média. No fim mostramos a média.

Isto é, em vez de fazer:

media = (nota1+nota2+nota3+...+notaN)/N

fazemos:

media = nota1/N + nota2/N + nota3/N + ... notaN/n

que é exactamente a mesma coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora