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

JoaoNascimento

Structs O que esta mal?

Recommended Posts

JoaoNascimento

Ola neste codigo aparecem 4 erros que nao o consigo dectatar alguem sabe o que se passa?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 2

typedef struct dados
{
char curso[50], nomeuc[50], doc_res[50], area_cientifica[50];
float t, tp, pl, p, ac, ot, s, turm_t,turm_tp, turm_p, turm_pl, turm_ac, turm_ot, turm_s, docentes;
int ects, opcional, ano, semestre;
} DADOS;

void ficha(Dados *uc, int N)//Todos os erros apontam para esta linha
{
int i;
for (i=0; i<N; i++)
{
                (.....)
             }
}
int main()
{
int opcao=0, i;
DADOS uc;
            ficha(uc,N);

}

Erros:

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(15) : error C2143: syntax error : missing ')' before '*'

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(15) : error C2143: syntax error : missing '{' before '*'

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(15) : error C2059: syntax error : 'type'

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(15) : error C2059: syntax error : ')'

Share this post


Link to post
Share on other sites
Localhost

E que tal pores um comentário a indicar a linha onde te dá erro?


here since 2009

Share this post


Link to post
Share on other sites
Strabush

É a linha 15. Onde está o (.....) é onde deve estar o erro. E tens de por } pra fechar a função ficha.

Share this post


Link to post
Share on other sites
JoaoNascimento

É a linha 15. Onde está o (.....) é onde deve estar o erro. E tens de por } pra fechar a função ficha.

Onde está o (...) é uma omissão de codigo, pois o codigo é muito extenso...

Share this post


Link to post
Share on other sites
Localhost

Na definição da estrutura declaraste chamaste DADOS e na declaração de uma variável que suponho que queiras desse tipo chamaste Dados. Tenta sempre definir com nomes simples de escrever para não teres erros destes. Quando me refiro a simples, quero dizer tudo minusculo e coisas do género.


here since 2009

Share this post


Link to post
Share on other sites
Baderous

Mas ainda são os mesmos erros? Não precisas de mudar o nome da estrutura e o tipo da variável, ou mudas um ou mudas o outro. Têm é de ser os 2 iguais.

Share this post


Link to post
Share on other sites
Localhost

Também vi um erro na chamada à função na main. Não estás a passar o endereço de uc.


here since 2009

Share this post


Link to post
Share on other sites
Localhost

Sim porque na função ficha declaraste um ponteiro.


here since 2009

Share this post


Link to post
Share on other sites
Localhost

Se isso era uma pergunta, sim é isso que tens de fazer.


here since 2009

Share this post


Link to post
Share on other sites
Localhost

Mete aqui o código actualizado. Isso é muito esquisito.


here since 2009

Share this post


Link to post
Share on other sites
Baderous

No cabeçalho da função, muda o nome da variável N para outra coisa qualquer. Isso está a interferir com o #define.

Share this post


Link to post
Share on other sites
JoaoNascimento

Aqueles erros passaram, lol mas agora ainda sao mais...

a cada variavel aparece isso:

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(174) : error C2109: subscript requires array or pointer type

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(174) : error C2231: '.p' : left operand points to 'struct', use '->'

Share this post


Link to post
Share on other sites
Localhost

É que uc é um ponteiro. Quando estás a trabalhar com ponteiros que apontam para estruturas tens de usar o operador ->.


here since 2009

Share this post


Link to post
Share on other sites
JoaoNascimento

E este erro que significa?

1>c:\users\joão nascimento\documents\visual studio 2008\projects\lab_inf\lab_inf\sage.c(214) : error C2109: subscript requires array or pointer type

Tenho 72 erros iguais que apontam para cada vez que tenho um "uc->variavel"

Share this post


Link to post
Share on other sites
Strabush

A linguagem C é case sensitive.

Na funçao ficha, o tipo de dados tem de ser DADOS e nao Dados.

Share this post


Link to post
Share on other sites
JoaoNascimento

E é o que tem....

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 2

////////////////////////////////////////////////////////////Declaração de Estruturas//////////////////////////////////////////////////////////////////
typedef struct dados
{
char curso[50], nomeuc[50], doc_res[50], area_cientifica[50];
float t, tp, pl, p, ac, ot, s, turm_t,turm_tp, turm_p, turm_pl, turm_ac, turm_ot, turm_s, docentes;
int ects, opcional, ano, semestre;
} DADOS;

///////////////////////////////////////////////////////////Declaração de Funções//////////////////////////////////////////////////////////////////////
void ficha(DADOS *uc, int num)
{
int i;
for (i=0; i<num; i++)
{
	//Ler o curso
	fflush(stdin);
	printf("Insira o nome do curso: \n");
	gets(uc->curso[i]);

	//Ler o nome da Unidade Curricular
	fflush(stdin);
	printf("Insira o nome da Unidade Curricular: \n");
	gets(uc->nomeuc[i]);

	fflush(stdin);
	printf("Insira o numero de creditos:\n");
	scanf("%d",&uc->ects[i]);

	fflush(stdin);
	printf("Insira se a UC e opcional ou nao (1/2):\n");
	scanf("%d",&uc->opcional[i]);

	if(uc->opcional[i]>2 || uc->opcional<1)
	{
		while(uc->opcional[i]>2 || uc->opcional<1)
		{
			printf("Opcional Incorrecta!\n");
			printf("Insira se a UC e opcional ou nao (1/2):\n");
			scanf("%d",&uc->opcional[i]);
		}
	}

	//Ler o docente responsavel
	fflush(stdin);
	printf("Insira o nome do docente responsavel: \n");
	gets(uc->doc_res[i]);

	//Ler outros docentes
	fflush(stdin);
	printf("Insira o nome dos docentes: \n");
	scanf("%f",&uc->docentes[i]);

	//Ler area_cientifica
	fflush(stdin);
	printf("Insira a area cientifica: \n");
	gets(uc->area_cientifica[i]);

	//Ler o numero de turmas teoricas
	fflush(stdin);
	printf("Insira o numero de turmas teoricas:\n");
	scanf("%d",&uc->turm_t[i]);

	//Ler o numero de turmas teoricas-praticas
	fflush(stdin);
	printf("Insira o numero de turmas teorico-praticas:\n");
	scanf("%d",&uc->turm_tp[i]);

	//Ler o numero de turmas praticas
	fflush(stdin);
	printf("Insira o numero de turmas praticas:\n");
	scanf("%d",&uc->turm_p[i]);

	//Ler o numero de turmas praticas laboratoriais
	fflush(stdin);
	printf("Insira o numero de turmas praticas laboratoriais: \n");
	scanf("%d",&uc->turm_pl[i]);

	//Ler o numero de turmas ac
	fflush(stdin);
	printf("Insira o numero de turmas AC:\n");
	scanf("%d",&uc->turm_ac[i]);

	//Ler o numero de turmas ot
	fflush(stdin);
	printf("Insira o numero de turmas Orirntação Tutorial: \n");
	scanf("%d",&uc->turm_ot[i]);

	//Ler o numero de turmas s
	fflush(stdin);
	printf("Insira o numero de turmas S: \n");
	scanf("%d",&uc->turm_s[i]);

	//Ler a Carga Horaria das aulas teoricas de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas teoricas: \n");
	scanf("%d",&uc->t[i]);

	//Ler a Carga Horaria das aulas teorico-praticas de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas teorico-praticas: \n");
	scanf("%d",&uc->tp[i]);

	//Ler a Carga Horaria das aulas praticas de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas praticas: \n");
	scanf("%d",&uc->p[i]);

	//Ler a Carga Horaria das aulas Pratico-Laborais de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas pratico-laborais: \n");
	scanf("%d",&uc->pl[i]);

	//Ler a Carga Horaria das aulas AC de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas AC: \n");
	scanf("%d",&uc->ac[i]);

	//Ler a Carga Horaria das aulas de Orientção Tutorial de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas de Orientacao Tutorial: \n");
	scanf("%d",&uc->ot[i]);

	//Ler a Carga Horaria das aulas S de uma UC
	fflush(stdin);
	printf("Insira a carga horaria das aulas S: \n");
	scanf("%d",&uc->s[i]);

	//Ler o ano da Unidade Curricular
	fflush(stdin);
	printf("Insira o ano da Unidade Curricular: \n");
	scanf("%d",&uc->ano[i]);
	//Validar o ano Introduzido
	if (uc->ano[i]>3 || uc->ano[i]<1)
	{
		//Repetir até o ano introduzido ser o correcto
		while (uc->ano[i]>3 || uc->ano[i]<1)
		{
			printf("O ano introduzo nao e o correcto(0-3)!\n");
			printf("Insira de novo ano da Unidade Curricular: \n");
			scanf("%d",&uc->ano[i]);
		}
	}

	//Ler o semestre da Unidade Curricular
	fflush(stdin);
	printf("Insira o semestre da Unidade Curricular: \n");
	scanf("%d",&uc->semestre[i]);
	//Validar o semestre Introduzido
	if (uc->semestre[i]>2 || uc->semestre[i]<1)
	{
		//Repetir até o semestre introduzido ser o correcto
		while (uc->semestre[i]>2 || uc->semestre[i]<1)
		{
			printf("O semestre introduzo nao e o correcto(1/2)!\n");
			printf("Insira de novo o semestre da Unidade Curricular: \n");
			scanf("%d",&uc->semestre[i]);
		}
	}
	system("cls");
	printf("Ja registou %d/%d\n\n\n",i+1,N);
}

//Apresentação de resultado
system("cls");
printf("                                                       Turmas|Carga Horária\n");
printf("Curso           Unidade curricular   Area Cientifica\tECTS\tOpcinal\tDocente Resp.\tDocentes\tAno\tSem\tT\tTP\tP\tPL\tAC\tOT\tS\tT\tP\tTP\tPL\tAC\tOT\tS\n");
for (i=0; i<num; i++)
{
	printf("%5s\t%30s\t%10s\t%2d\t%2d\t%10s\t%2f\t%2d\t%2d\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\n",uc->curso[i],uc->nomeuc[i],uc->area_cientifica[i],uc->ects[i],uc->opcional[i],uc->doc_res[i],uc->docentes[i],uc->ano[i],uc->semestre[i],uc->turm_t[i],uc->turm_tp[i],uc->turm_p[i],uc->turm_pl[i],uc->turm_ac[i],uc->turm_ot[i],uc->turm_s[i],uc->t[i],uc->p[i],uc->tp[i],uc->pl[i],uc->ac[i],uc->ot[i],uc->s[i]);
}
system("pause");
}

//FUNÇÃO QUE ESCREVE NO ECRÃ TODOS OD CAMPOS DA BASE DE DADOS////////////////////////////////////////////////////////////////////////////////////////
void escrever_dados_fich()
{
FILE *pf;
char d;

                 pf = fopen("dados_ucs_070410.txt","r");
                 while (!feof(pf))
                 {
                   d = getc(pf);
                   printf("%c",d);
                 }
                 fclose(pf);
                 system("pause");
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FUNÇÃO QUE LÊ TODOS OS CAMPOS DA BASE DE DADOS/////////////////////////////////////////////////////////////////////////////////////////////////////
void ler_dados_fich(DADOS *uc, int num)
{
char cabecalho[1000];
int i=0;
FILE *pfdados;

pfdados=fopen("dados_ucs_070410.txt","r");

if(pfdados==NULL)
{
	printf("Erro ao abrir o ficheiro! \n");
	system("pause");
}

fscanf(pfdados,"[^\n]\n",cabecalho);
//printf("%s\n",cabecalho);
for (i=0;i<num;i++) 
{
	fscanf( pfdados , "%[^\t]\t%d\t%d\t%[^\t]\t%d\t%[^\t]\t%d\t%[^\t]\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\t\n",uc->curso[i],&uc->ano[i],&uc->semestre[i],uc->nomeuc[i],&uc->ects[i],uc->area_cientifica[i],&uc->opcional[i],uc->doc_res[i],&uc->docentes[i],&uc->turm_t[i],&uc->turm_tp[i],&uc->turm_p[i],&uc->turm_pl[i],&uc->turm_ac[i],&uc->turm_ot[i],&uc->turm_s[i],&uc->t[i],&uc->tp[i],&uc->p[i],&uc->pl[i],&uc->ac[i],&uc->ot[i],&uc->s[i]);
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


int main()
{
int opcao=0, i;
DADOS uc;

ler_dados_fich(&uc, N);

while(opcao!=4)
{ 
	system("cls");
	printf("\t\t\tSistema de Apoio a Gestao de Ensino\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t--------------------------\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 1. Manipulação de dados|\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 2. Pesquisas           |\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 3. Ordenação           |\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 4. Sair                |\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t--------------------------\n");

	printf("Qual e a opcao pretendida: \n");
	scanf("%d",&opcao);

	switch(opcao)
	{
	case 1:
		{
			system("cls");
			printf("\t\tSistema de Apoio a Gestao de Ensino - Manipulação de dados\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t--------------------------\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 1. Inserção Manual     |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 2. Alteração de dados  |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t| 3. Sair                |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t--------------------------\n");
			fflush(stdin);
			opcao=0;
			printf("Qual e a opcao pretendida: \n");
			scanf("%d",&opcao);
			switch(opcao)
			{
			case 1:
				{
					system("cls");
					ficha(&uc,N);
						break;
				}
			case 2:
				{
					system("cls");
					printf("Em construção!\n");
					break;
				}
			default:
				{
					system("cls");
					printf("\nSó existem 3 opções!");
					break;
				}
				break;
			}
		}
	case 2:
		{
			system("cls");
			printf("\t\tSistema de Apoio a Gestao de Ensino - Pesquisas\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t------------------------------------------------------\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t| 1. Ano de curso                                    |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t| 2. Area Cientifica                                 |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t| 3. Calcular peso area cientifica                   |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t| 4. Escrita no ecrã da base de dados                |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t| PRIMA QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t------------------------------------------------------\n");
			fflush(stdin);
			opcao=0;
			printf("Qual e a opcao pretendida: \n");
			scanf("%d",&opcao);
			switch(opcao)
			{
			case 1:
				{	
					system("cls");
					printf("Em construção!\n");
					break;
				}
			case 2:
				{
					system("cls");
					printf("Em construção!\n");
					break;
				}
			case 3:
				{
					system("cls");
					printf("Em construção!\n");
					break;
				}
			case 4:
				{
					system("cls");
					escrever_dados_fich();
					break;
				}
			}
		}
	case 3:
		{
			system("cls");
			printf("\t\tSistema de Apoio a Gestao de Ensino - Pesquisas\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t------------------------------------------------------\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t|                                                    |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t|                                                    |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t|                                                    |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t| PRIMA QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL |\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t------------------------------------------------------\n");
			fflush(stdin);
			opcao=0;
			printf("Qual e a opcao pretendida: \n");
			scanf("%d",&opcao);
		}
	}
}
return 0;
}

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.