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

TPC complicado

Discussão em 'Programação' iniciada por Keimador, 8 de Outubro de 2008. (Respostas: 12; Visualizações: 750)

  1. Keimador

    Keimador Power Member

    Mais uma vez a minha professora (bolas, que ela é má) mandou-me um tpc que se me esta a mostrar deveras complicado, e eu gostava de saber se há alguém que me possa ajudar.
    É o seguinte:

    ela mandou-nos este programa:

    Código:
    #include<stdio.h>
    #define M 12
    typedef struct
    {
    	int dia,mes,ano;
    }data;
    data d[M];
    int *pm[M];
    int main()
    {
    	int i,j;
    	for(i=0;i<M;i++)
    	{
    		do
    		{
    			printf("insira o ano da sua data\n");
    			scanf("%d",&d[i].ano);
    		}while((d[i].ano<1)||(d[i].ano>2008));
    		
    		do
    		{
    			printf("insira o mes da sua data\n");
    			scanf("%d",&d[i].mes);
    		}while((d[i].mes<1)||(d[i].mes>12));
    		
    		
    		switch(d[i].mes)
    		{
    		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    			{
    				printf("insira o dia da sua data\n");
    				scanf("%d",&d[i].dia);
    				if((d[i].dia>1)&&(d[i].dia<=31))
    				{
    					printf("dia valido\n");
    				}
    				else
    				{
    					while((d[i].dia<1)||(d[i].dia>31))
    					{
    						printf("Introduza outro dia\n");
    						scanf("%d",&d[i].dia);
    					}
    				}
    				break;
    			} 
    		case 2:
    			{
    				printf("insira o dia da sua data\n");
    				scanf("%d",&d[i].dia);
    				if((d[i].dia>1)&&(d[i].dia<28))
    				{
    					printf("dia valido\n");
    				}
    				else
    				{
    					while((d[i].dia<1)||(d[i].dia>28))
    					{
    						printf("Introduza outro dia\n");
    						scanf("%d",&d[i].dia);
    					}
    				}
    				break;
    			}
    		case 4: case 6: case 9: case 11:
    			{
    				printf("insira o dia da sua data\n");
    				scanf("%d",&d[i].dia);
    				if((d[i].dia>1)&&(d[i].dia<30))
    				{
    					printf("dia valido\n");
    				}
    				else
    				{
    					while((d[i].dia<1)||(d[i].dia>30))
    					{
    						printf("Introduza outro dia\n");
    						scanf("%d",&d[i].dia);
    					}
    				}
    				break;
    			}
    		}
    	}
    	for(j=0;j<M;j++)
    	{
    		pm[i]=&d[i].mes;
    		printf("A data e:%d/%d/%d E o endereco e:%d\n",d[j].dia,d[j].mes,d[j].ano,pm);
    
    
    e quer que coloquemos esta função neste programa, e eu não me estou a recordar nada desta matéria:
    Código:
    #include <stdio.h>
    
    		intx_toupper(char ch)
    		{
    			if(ch>='a'&&ch<='z'/*Se minuscula*/
    					return ch+'A'-'a';
    					else
    					return ch; /*Devolve-se na mesma*/
    				}
    				/*Escreve todos os caracteres em maiúculas*/
    
    				main()
    				{
    					char c;
    					while(1)/*termina com CTRL-C*/
    					{
    						c=getchar();
    						putchar(x_toupper(c));
    					}
    				}
    
    Não estou mesmo a ver isto, precizo de dar umas revisões na matéria, urgentemente:(
    Se puderem dar umas dicas, agradeço:)
     
    Última edição pelo moderador: 8 de Outubro de 2008
  2. jota WA

    jota WA [email protected] Member

    Boas
    Pelo que vi esse código apenas regista 12 datas,com ano,mês e dia e mostra a localização do apontador.Agora,onde ela quer que tu metas o aquela função isso não faço ideia,até porque o que ela faz é tornar um caracter recebido em maiusculo,e o 1º código apenas aceita números...fiquei meio confuso com isso!
     
  3. Keimador

    Keimador Power Member

    Não consigo mesmo

    Já tentei fazer o programa, mas ele teima em dar um parse error before return, não sei o porquê?
     
  4. Keimador

    Keimador Power Member

    Pois tambêm eu, aquela mulher é mesmo chata, então e outra função, qual me aconselham a colocar aqui? Sem ser esta, porque esta é impossivel.
     
  5. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Reindentei (aliás, o Notepad++ reindentou :D ) o código. Parece-me que algumas coisas estão mal fechadas ;)
     
  6. Master_piece

    Master_piece Power Member

    Tal como o jota WA disse esse programa so aceita numeros, e o que a função faz é devolver caracteres inseridos em maiusculas, por isso nesse programa ela não terá utilidade nenhuma.

    è só isso que está no inunciado do problema??? Não diz lá mais nada. Por veses um pequeno pormenor que escape pode alterar muita coisa.

    Cumps.
    Master
     
  7. Keimador

    Keimador Power Member

    Mandei aqui um mail a esta doida, e ela disse, que podemos colocar outra função qualquer, desde que deia, e apresentemos isto amanhã
     
  8. Master_piece

    Master_piece Power Member


    Pois é tudo muito lindo mas, desde que deia, para fazer o que??????
     
  9. Keimador

    Keimador Power Member

    Pois, o que ela colocou agora foi isto, no mail que enviou: Olá alunos

    O trabalho de casa é colocar funções nos exercício anterior.

    A professora Cidália
     
  10. Master_piece

    Master_piece Power Member

    Queres ver que é só para ver se sabem/ aprender a chamar funções!!!

    É pah para isso deve bastar uma coida do género:

    feito ()
    {
    printf ("está feito");
    }
    e depois chamar a função na função main().


    cumps.
    Master
     
  11. Keimador

    Keimador Power Member

    se calhar até é isso, mas com esta doida, nem sei bem o que ela quer :S
     
  12. Keimador

    Keimador Power Member

    eu fiz este aqui, não dá erros, mas dá-me uns quantos warnings, que acham?

    Código:
    #include<stdio.h>
    #define M 12
    typedef struct
    {
        int dia,mes,ano;
    }data;
    data d[M];
    int *pm[M];
    void datas_funca(int d[m].dia,int d[m].mes,int d[m].ano);
    int main()
    {
        datas_funcao(d[m].dia,d[m].mes,d[m].ano);
    }
    void datas_funca(int d[m].dia,int d[m].mes,int d[m].ano)
    {
        int i,j;
        for(i=0;i<M;i++)
        {
            do
            {
                printf("insira o ano da sua data\n");
                scanf("%d",&d[i].ano);
                }while((d[i].ano<1)||(d[i].ano>2008));
                
                do
                {
                printf("insira o mes da sua data\n");
                scanf("%d",&d[i].mes);
                }while((d[i].mes<1)||(d[i].mes>12));
                
                
                switch(d[i].mes)
                {
                case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                {
                    printf("insira o dia da sua data\n");
                    scanf("%d",&d[i].dia);
                    if((d[i].dia>1)&&(d[i].dia<=31))
                    {
                        printf("dia valido\n");
                    }
                    else
                    {
                        while((d[i].dia<1)||(d[i].dia>31))
                        {
                            printf("Introduza outro dia\n");
                            scanf("%d",&d[i].dia);
                        }
                    }
                    break;
                } 
                case 2:
                {
                    printf("insira o dia da sua data\n");
                    scanf("%d",&d[i].dia);
                    if((d[i].dia>1)&&(d[i].dia<28))
                    {
                        printf("dia valido\n");
                    }
                    else
                    {
                        while((d[i].dia<1)||(d[i].dia>28))
                        {
                            printf("Introduza outro dia\n");
                            scanf("%d",&d[i].dia);
                        }
                    }
                    break;
                }
                case 4: case 6: case 9: case 11:
                {
                    printf("insira o dia da sua data\n");
                    scanf("%d",&d[i].dia);
                    if((d[i].dia>1)&&(d[i].dia<30))
                    {
                        printf("dia valido\n");
                    }
                    else
                    {
                        while((d[i].dia<1)||(d[i].dia>30))
                        {
                            printf("Introduza outro dia\n");
                            scanf("%d",&d[i].dia);
                        }
                    }
                    break;
                }
            }
        }
        for(j=0;j<M;j++)
        {
            pm[i]=&d[i].mes;
            printf("A data e:%d/%d/%d E o endereco e:%d\n",d[j].dia,d[j].mes,d[j].ano,pm);
        }
    }
    
     
    Última edição pelo moderador: 8 de Outubro de 2008
  13. jota WA

    jota WA [email protected] Member

    Boas
    Ao chamares a função tem lá um erro,estás a chamar uma função chamada datas_funcao e a única que existe é a datas_funca,modifica o nome da função ou na chamada.
    Depois,ao chamares a função estás a enviar parâmetros nulos,porque ao chamares a função logo no main os valores da estrutura estão todos vazios e pode ser isso que te causa os warnings,podes apenas declarar a função como void datas_funcao().
    Cumps
     

Partilhar esta Página