Boas.
Eu tenho um trabalho de programação em liguagem C, e ao compilar tenho vários erros e como o meu conhecimento em inguagem C é um pouco reduzido, precisava de ajuda.
Se alguém pudesse ajudar-me.
Ficheiro .txt da programação:
h**p://www.fileshost.com/en/file/75699/Projecto-txt.html
Aqui está a programação:
// Inicialização das librarias
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Inicialização das funções.
void inicdisc(char disciplinas [10][]);
void inserir(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m);
void consultar(char nomes[18][], char disciplinas[10][], float notas[18][],int *n, int *m);
void alterar(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m);
void eliminar(char nomes[18][], float notas[18][], int *n, int *m);
void listar(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m);
int pesquisa(char str[], char nomes[18][], int *n, int *m);
int pesqdisc(char str[], char disciplinas[18][], int *y);
// Programa principal.
int main(int argc, char *argv[])
{
// Inicialição das variáveis.
int i, j, op, n = 0, m = 0, y = 0;
float notas[18][10];
char nomes[18][50], disciplinas[10][50];
// Ciclo for afim de colocar a matriz das notas a zero.
for(j = 0; j < 18; j++)
{
for(i = 0; i <10; i++)
{
notas[j][i] = 0;
}
}
// Chamada da função "inicdisc" que vai inserir os nomes das disciplinas na matriz disciplinas.
inicdisc(disciplinas);
// Ciclio do afim de escolher a opção desejada para realizar.
do
{
printf("\n\tMENU\n\n1. Inserir\n2. Consultar\n3. Alterar\n4. Eliminar\n5. Listar\n6. Sair\n\n");
scanf("%d", &op);
switch (op)
{
case 1: inserir(nomes, disciplinas, notas, &n, &m);
break;
case 2: consultar(nomes, disciplinas, notas, &n, &m);
break;
case 3: alterar(nomes, disciplinas, notas, &n, &m);
break;
case 4: eliminar(nomes, notas, &n, &m);
break;
case 5: listar(nomes, disciplinas, notas, &n, &m);
break;
case 6: break;
default: printf("Opcao escolhida inexistente");
break;
system("PAUSE");
return 0;
}
// Função "inicdisc" que vai inserir os nomes das disciplinas na matriz disciplinas.
void inicdisc(char disciplinas [10][])
{
strcpy(disciplinas[0][], "Programacao");
strcpy(disciplinas[1][], "Robotica");
strcpy(disciplinas[2][], "Projecto");
strcpy(disciplinas[3][], "Comercial");
strcpy(disciplinas[4][], "Ingles");
strcpy(disciplinas[5][], "Portugues");
strcpy(disciplinas[6][], "Matematica");
strcpy(disciplinas[7][], "Direito");
strcpy(disciplinas[8][], "ITED");
strcpy(disciplinas[9][], "Microcontroladores");
}
/* Função "inserir" que corresponde a primeira opção do menu, em que vai inserir o nome do aluno e consecutivamente verificar se
esse existe repetido ou não, assim como inserir as notas correspondente a esse mesmo aluno inserido e em função da disciplina
escolhida. */
void inserir(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m)
{
char str[50];
int i, flag;
printf("Qual o aluno?\n");
gets(str);
flag = pesquisa(str, nomes, &n, &m);
if(flag != 0)
{
strcpy(nomes[*n][], str);
for(i = 0; i < 10; i++)
{
printf("Insira a nota referente a disciplina %s", disciplinas[i][]);
scanf("%f", notas[*n][i]);
}
*n++;
}
else
{
printf("O aluno com esse nome já existe.");
}
}
// Função "pesquisa" que tem como função verificar se as strings inseridas estão repetidas ou não, ou se existem.
int pesquisa(char str[18], char nomes[18][], int *n, int *m)
{
int i, a = 0;
for(i = 0; i <= *n; i++)
{
a = strcomp(nomes[i][], str);
if(a == 0)
{
*m = i
return 0;
}
else
{
return 1;
}
}
}
/* Função "consultar" em que realiza através da subfunção "pesquisa" se existe o nome ou não e de seguida mostrar as notas
do aluno pedido. */
void consultar(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m)
{
char str[50];
int i, flag;
printf("Qual o aluno a consultar?\n");
gets(str);
flag = pesquisa(str, nomes, &n, &m);
if(flag == 0)
{
printf("As notas do aluno %s são: \n", str);
for(i = 0; i < 10; i ++)
{
printf("A nota da disciplina %s e: %.2f\n", disciplinas[i][], notas[*m][i]);
}
else
{
printf("O aluno não existe.\n");
}
}
/* Função "alterar" tem como função alterar uma nota correspondente a uma disciplina de um aluno. O nome é verificado se existe
e caso exista, é verificado se a disciplina a qual a nota se deseja alterar existe e daí pede para alterar a nota e guarda a
alteraçãp */
void alterar(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m)
{
char str[50];
int flag;
printf("Qual o aluno ao qual se pretende alterar a nota?\n");
gets(str);
flag = pesquisa(str, nomes, &n, &m);
if(flag == 0)
{
printf("Qual a disciplina ao qual pretende alterar?\n");
gets(str);
flag = pesqdisc(str, disciplinas, &m);
if(flag == 0)
{
printf("Qual a nova nota para a disciplina %s?\n", str);
scanf("%f", notas[*m][*y]);
}
else
{
printf("A disciplina não existe.");
}
}
else
{
printf("O aluno não existe.");
}
}
/* Função "pesqdisc" consiste na mesma função da de "pesquisa" apenas difere na verificação, em que este consiste na verificação
da matriz das disciplinas */
int pesqdisc(char str[], char disciplinas[18][], int *y)
{
int i, a = 0;
for(i = 0; i < 10; i++)
{
a = strcomp(disciplinas[i][], str);
if(a == 0)
{
*y = i;
return 0;
}
else
{
return 1;
}
}
}
// Função "eliminar" elimina o aluno e os seus dados. Em que os dados posteriores passam a um anterior e assim, eliminando o aluno.
void eliminar(char nomes[18][], float notas[18][], int *n, int *m)
{
char str[50];
int i, j, a, flag;
printf("Qual o aluno que pretende eliminar?\n");
gets(str);
flag = pesquisa(str, nomes, &n, &m);
if(flag == 0)
{
a = (*m + 1);
for(i = a; i <= n; i++)
{
nomes[(i - 1)][] = nomes[i][];
for(j = 0; j <10; j++)
{
notas[(i - 1)][j] = notas[i][j]
}
n--;
}
else
{
printf("O aluno não existe.\n");
}
}
// Funcao "listar" vai listar todos os alunos e seus dados que foram introduzidos no programa.
void listar(char nomes[18][], char disciplinas[10][], float notas[18][], int *n, int *m)
{
int i, j;
printf("LISTAGEM DOS DADOS:\n");
for(i = 0; i <= *n; i++)
{
printf("A listagem das notas do aluno %s:\n", nomes[i][]);
for(j = 0; j < 10; j++)
{
printf("%s - %.2f\n", disciplinas[j][], notas[i][j]);
}
}
}