Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

JoaoNascimento

Structs O que esta mal?

Mensagens Recomendadas

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 : ')'

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 '->'

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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;
}

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.