TPC complicado

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:
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!
 
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.
 
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
 
Mandei aqui um mail a esta doida, e ela disse, que podemos colocar outra função qualquer, desde que deia, e apresentemos isto amanhã
 
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
 
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

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
 
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:
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
 
Back
Topo