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

eyeonyou

Duvidas e erros que nao consigo resolver

2 mensagens neste tópico

Boas ppl!

Mais um work e mais dores de cabeça  :wallbash:

Comecei a fazer este work e ag tou impancado. Nao percebo mt de estruturas e por isso segui +/- um exercicio que tava aqui no forum.

O enunciado é :

semttulo5ke.jpg


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>

typedef struct aluno
{
  int num_matricula;
  int ano_matricula;
  char Nome[100];
  int num_disciplinas;
} ;

void inicializa(int p)
struct aluno *p;
{ 
int i;
for(i=0;i<p;i++)
  (p++)->ocup='0';
}


void inserir(struct aluno p)
struct aluno *p;
{
  int i;
  for(i=0;i<n && p->ocup=='1';i++)
   p++;
  if(i<n)
   {
    printf("\n\tNumero de Matricula: ");
    scanf("%d",&p->num_matricula);
    printf("\tAno da Matricula: ");
    scanf("%d",&p->ano_matricula);
    printf("\tNome (Primeiro e Ultimo): ");
    scanf("%s",p->nome);
    printf("\tNumero de Disciplinas Inscritas: ");
    scanf("%d",&p->num_disciplinas);
    p->ocup='1';
   }
  else 
    printf("\n\n\t Lista completa");
}

main()
       {
       struct aluno alunos[n];
       int op;
       inicializa(alunos);
       do
        {
    printf("\t\t\t#----------------------------------------#");
        printf("\n\t\t\t|     Trabalho Pratico III - Parte I     |\n");
        printf("\t\t\t#----------------------------------------#\n\n");
    printf("Escolha uma das opcoes:\n\n\n");
    printf("\t 1 - Novo Registo de aluno.\n\n");
    printf("\t 2 - .\n\n");
    printf("\t 3 - .\n\n");
    printf("\t 4 - .\n\n");
    printf("\t 5 - .\n\n");
     	printf("\t 6 - .\n\n");
    printf("\t 0 - .\n\n");
    printf("\t A minha opcao e -> ");
    scanf("%d",&op);
    switch(op)
	         {
	         case 0 :
		            {
		            printf("\n\t\t\t\tO PROGRAMA VAI TERMINAR!!!\n");
                        getch();
		            break;
                    }

                 case 1 :
		            {
		            inserir(alunos);
                        getch();
		            break;
		            }

	         case 2 :
		            {
		            break;
                        }			

	         case 3 :
		            {
		            getch();
	            	break;
	                }

	         case 4 :
		            {
		            getch();			
		            break;
		            }

                 case 5 :
	                {
	                break;
	                }

                 case 6 :
	                {
	                break;
                        }

	         default :
		             {
	                 printf("\tERRO NA OPCAO...tente novamente...\n");
		             getch();
		             break;
	                 }
             }
    }
       while(op!=0);
       }

Isto é o que tenho ate ag e nao consigo ultrapassar estes erros. Tou a usar o dev-c++

Alguma dica?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu tens bastantes erros... por exemplo, na main()  tens        struct aluno alunos[n];  mas o "n" não está definido em lado nenhum... e para o usares assim precisas de o definir como constante.

exemplo:

const int n = 10;

void inicializa(int p)
struct aluno *p;
{ 
int i;
for(i=0;i<p;i++)
  (p++)->ocup='0';  
}

A estrutura aluno nao tem um campo "ocup". Estás a declarar a estrutura e um inteiro com o mesmo nome e nunca defini em C variaveis antes do corpo da função...

eu sugeria umas alterações (eu apenas tentei corrigir alguns erros):

const int n = 10;
typedef struct aluno
{
  int num_matricula;
  int ano_matricula;
  char Nome[100],ocup;  // acrescentei o campo ocup
  int num_disciplinas;
} aluno; // assim nao precisas de estar sempre a usar o struct aluno ....

void inicializa(aluno *p,int num) // num é o numero de elementos do array
{ 
int i;
for(i=0;i<num;i++)
  (p++)->ocup='0';
}
int main()
{
       struct aluno alunos[n];
       int op;
       inicializa(alunos,n);   
       do 
      ....
       return 0;
}

espero ter ajudado

0

Partilhar esta mensagem


Link 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