Cyber_Shoy Postado Dezembro 21, 2008 Denunciar Share Postado Dezembro 21, 2008 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.htmlAqui 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] = 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 seesse existe repetido ou não, assim como inserir as notas correspondente a esse mesmo aluno inserido e em função da disciplinaescolhida. */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[]); scanf("%f", notas[*n]); } *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[], 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[], notas[*m]); } 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 existee 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çãoda 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[], 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[]; for(j = 0; j <10; j++) { notas[(i - 1)][j] = notas[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[]); for(j = 0; j < 10; j++) { printf("%s - %.2f\n", disciplinas[j][], notas[j]); } }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Dezembro 21, 2008 Denunciar Share Postado Dezembro 21, 2008 qual a sua intencao em declara a matriz assim??disciplinas [10][] se for pra ser um array de string, acho q teria q ser asism: *disciplinas [10] ou assim: disciplinas [][10] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cyber_Shoy Postado Dezembro 21, 2008 Autor Denunciar Share Postado Dezembro 21, 2008 è que o programa consiste numa base de dados. Em que relativamente ao nome de um aluno, é guardado uma nota referente a uma disciplina.Em que podemos fazer esta lógica entre as matrizesnomes[ate 18 alunos. e cada aluno tem 10 dsciplinas e 10 notas. 1 nota em cada disciplina (B)][corresponde ao comprimento da string]disciplinas[10 disciplinas. que vai depois remeter as notas (a)][corresponde ao comprimento da string]notas[(B) correspondente a informaçao do aluno][(a) correspondente a informaçao da disciplina] Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Cyber_Shoy
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] = 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[]);
scanf("%f", notas[*n]);
}
*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[], 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[], notas[*m]);
}
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[], 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[];
for(j = 0; j <10; j++)
{
notas[(i - 1)][j] = notas[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[]);
for(j = 0; j < 10; j++)
{
printf("%s - %.2f\n", disciplinas[j][], notas[j]);
}
}
}
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.