+ Responder ao Tópico



  1. #1

    Padrão [Problema/Ajuda] Erros de syntax

    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]);
    }
    }
    }

  2. #2

    Padrão

    cara se não estou enganado, a linguagem C ao compilar mostra onde está o erro teria como tentar mandar isso, para facilitar a nossa busca?