1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Trabalho de casa inesperado

Discussão em 'Programação' iniciada por Keimador, 6 de Outubro de 2008. (Respostas: 14; Visualizações: 941)

  1. Keimador

    Keimador Power Member

    Hoje já estávamos para sair da aula, quando a professora dá este trabalho de casa.

    Código:
    #include<stdio.h>
    typedef struct
    {
        int ano,mes,dia;
    }data;
    int main()
    {
        data v[12];
        int *p[12];
        int i;
        for(i=1;i<=12;i++)
        {
            printf("Escreva o ano\n");
            scnaf("%i",&v[i].ano);
            printf("Escreva o mes\n");
            scanf("%i",&v[i].mes);
            printf("Escreva o dia");
            scanf("%i",&v[i].dia);
        }
        for(i=1;i<=12;i++)
        {
            if(v[i].mes==1)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==2)
            {
                if((v[i].dia>=1)&&(v[i].dia<=28))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==3)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==4)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==5)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==6)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==7)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==8)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==9)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==10)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==11)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==12)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else
            {
                printf("mes errado\n");
            }
        }
    }
    corrigir este programa, já fiz mil e umas coisas e não sei o k está mal, tambêm isto dos apontadores, não estou a pescar muito disto, será que me poderiam dar aqui umas dicas de como posso fazer isto?
     
    Última edição pelo moderador: 6 de Outubro de 2008
  2. Peter V5

    Peter V5 Folding Member

    olá, olha tenta identar o codigo para que ele fique mais apresentavel e facil de entender, e por enquanto ainda só descobri um erro, um dos scanf(); tá mal escrito. Tambem um dos printf(); não tem o \n, é o do dia.
     
    Última edição: 6 de Outubro de 2008
  3. m00s

    m00s Power Member

    devias postar o código identado e não desse modo pois não fica nada perceptível!

    usa o botão # das opções na caixa de menagem para manteres o formato do texto com identação.

    para te ajudarem devias dizer o que pretendes e tentar explicar o que fizeste, caso contrário estar a dar mais trabalho pois quem quiser pegar nisto vais ter de perder mais tempo e começar do início.


    ...tens até quando para fazer isto?
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Código com a tag code e indentado:

    Código:
    #include<stdio.h>
    typedef struct
    {
        int ano,mes,dia;
    }data;
    int main()
    {
        data v[12];
        int *p[12];
        int i;
        for(i=1;i<=12;i++)
        {
            printf("Escreva o ano\n");
            scnaf("%i",&v[i].ano);
            printf("Escreva o mes\n");
            scanf("%i",&v[i].mes);
            printf("Escreva o dia");
            scanf("%i",&v[i].dia);
        }
        for(i=1;i<=12;i++)
        {
            if(v[i].mes==1)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==2)
            {
                if((v[i].dia>=1)&&(v[i].dia<=28))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==3)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==4)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==5)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==6)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==7)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==8)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==9)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==10)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==11)
            {
                if((v[i].dia>=1)&&(v[i].dia<=30))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else if(v[i].mes==12)
            {
                if((v[i].dia>=1)&&(v[i].dia<=31))
                {
                    p[i]=&v[i].mes;
                    printf("A data e:%i.%i.%i\nO endereco do mes e:%\n",v[i].dia,v[i].mes,v[i].ano,p[i]);
                }
                else
                {
                    printf("Dia invalido\n");
                }
            }
            else
            {
                printf("mes errado\n");
            }
        }
    }
    Assim que a minha net deixar de atrofiar edito o primeiro post :P

    edit - tratado. Maravilhas do Notepad++ + TextFX :D
     
    Última edição: 6 de Outubro de 2008
  5. Ronnie_03

    Ronnie_03 Power Member

    Desculpem o off topic, mas estava a ler este tópico e vi a expressão "coloca o código indentado". O quê que é isso??
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Espaços de forma a delimitar visualmente os blocos de código.
    Versão não indentada:
    Código:
    int main(void)
    {
    x = 2;
     
    if(x==3)
    {
    printf("É 3");
    }
    else
    {
    printf("Não é 3");
    }
    }
    
    Versão indentada:
    Código:
    int main(void)
    {
        x = 2;
     
        if(x==3)
        {
            printf("É 3");
        }
        else
        {
            printf("Não é 3");
        }
    }
    
     
  7. Baderous

    Baderous Banido

    É colocar o código entre as tags: [code][/code] e com as tabs e enters direitos para ficar mais legível.
     
  8. BytesBR

    BytesBR Power Member

    Maravilhas do Notepad++, tambem acho um bom editor, utilizo ele para códigos no Python pro meu Bot.
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Voltando ao tópico, o autor do primeiro post ainda não tem a resposta ao que pede ;)

    Fora o scanf mal escrito, não reparei em nada de mal.
     
  10. ups

    ups Power Member

    Algo me diz que os problemas sao no codigo e nao de compilação. Suponho que desde o tempo que colocou aqui o problema ate agora ja tenha tido tempo para analisar o codigo e detectar os erros.. afinal, é para isso que serve o trabalho para casa.
     
  11. m00s

    m00s Power Member

    ...pelo que vi, tb é o que me parece: corecção da sintaxe.
     
  12. Keimador

    Keimador Power Member

    ya, o scanf estava mal escrito, mas o que aquela professora chata quer que faça, é que através de apontadores, faça o programa dizer o endereço do dia, do mês e do ano
     
  13. VuDu

    VuDu Power Member

    - Linha 14: scanf mal escrito.
    - Linha 171: função termina sem return e a assinatura da função diz que retorna um int.
    - Linha 27, 39, 51, etc...: No final dos printf("A data.....e:%\n"); o % não deve de estar "sozinho". É provavel que seja um %d e que depois o p seja *p.

    Já agora... os %i dos scanf provavelmente devem de ser todos %d

    Btw, aprender apontadores não é "chato"... quem não domina apontadores não tem moral para dizer que sabe programar em C.
     
    Última edição: 6 de Outubro de 2008
  14. Apontadores é uma questão de prática, com prática vão la!
     
  15. The_True_Eue

    The_True_Eue Power Member

    E não é já isso que está feito?

    Se for para mostrar o endereço tem de ser p. Se for *p vai mostrar o conteúdo (o número do mês).
    Quem não domina apontadores não sabe programar em C.
     
    Última edição pelo moderador: 7 de Outubro de 2008

Partilhar esta Página