Ir ao conteúdo
  • Cadastre-se

zutuZ

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

1
  1. zutuZ

    C++ Trabalho de Estruturas de Dados

    Na hora de adicionar o aluno o codigo da um erro e para de funcionar, alem do comando buscar nao funcionar da maneira certa
  2. A questão e o seguinte! Dadas as seguintes estruturas: struct listaDisciplina{ int código; char nome[50]; float nota; float frequência; struct listaDisciplina *próximo; }; struct listaAluno{ int código; char nome[50]; struct listaAluno *próximo; struct listaDisciplina *disc; }; Escrever um programa em C que contenha funções para inserir elementos na lista de alunos, alterar elementos na lista de alunos, excluir elementos da lista de alunos e mostrar elementos da lista de alunos. Na inclusão de elementos na lista de alunos, atribuir NULL para disc. Um aluno só pode ser excluído se não existir disciplina associada a ele, ou seja, o atributo disc deve ter o valor igual a NULL. O código é o campo chave, ou seja, não pode ter código duplicado. O programa deve ter funções para inserir, alterar, excluir e mostrar elementos na lista de disciplinas. Cada aluno pode ter uma lista de disciplina associada. O ponteiro disc da lista de alunos é o ponteiro início para a lista. O programa deverá mostrar os alunos e suas respectivas disciplinas, indicando se foi aprovado ou reprovado em algumas delas. Para ser aprovado a nota precisa ser maior ou igual a 6.0 e a frequência ser maior ou igual a 75. O programa deve ter menu com as opções para a lista de alunos e para a lista de disciplina. //Trabalho #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<string.h> struct listaAluno { int codigo; char nome[50]; struct listaAluno * proximo; struct listaDisciplina * disc; }; struct listaAluno * insereInicio (struct listaAluno *pinicio, int x, char y [] ) { struct listaAluno *aux; aux=(listaAluno *)malloc(sizeof(listaAluno)); aux ->codigo = x; strcpy(aux->nome, y); aux ->proximo=pinicio; pinicio=aux; return pinicio; } void insereDepois(struct listaAluno *p, int x, char y []) { struct listaAluno *aux; aux=(listaAluno *)malloc(sizeof(struct listaAluno)); aux ->codigo=x; strcpy(aux->nome, y); aux ->proximo=p->proximo; p->proximo=aux; } struct listaAluno * insereOrdenado(struct listaAluno *pinicio, int x, char y[]) { struct listaAluno *p, *q; if((pinicio == NULL)||(x<pinicio->codigo)) { return (insereInicio(pinicio, x, y)); } p=pinicio; q=p; while((q!=NULL) && (q->codigo<x)) { p=q; q=p->proximo; } if((q==NULL) || (q->codigo>x)) insereDepois(p,x,y); else printf("\nCodigo ja existe"); getch(); return pinicio; } struct listaAluno * removeInicio(struct listaAluno * pinicio) { struct listaAluno *aux; aux = pinicio; pinicio = pinicio->proximo; free(aux); return pinicio; } void removeDepois(struct listaAluno *p) { struct listaAluno *aux; aux = p->proximo; p->proximo = aux->proximo; free(aux); } struct listaAluno * removeOrdenado(struct listaAluno * pinicio, int x) { struct listaAluno *p,*q; if (pinicio==NULL) { printf("lista vazia"); getch(); return pinicio; } if (x == pinicio->codigo) { return (removeInicio(pinicio)); } p = pinicio; q = p ; while ( q !=NULL && q->codigo < x ) { p = q; q = p->proximo; } if (q!=NULL && q->codigo == x) removeDepois(p); else { printf("\nElemento nao Cadastrado"); getch(); } return pinicio; } //....................................Disciplina..............................// //....................................//////////..............................// struct listaDisciplina{ int codigo; char nome[50]; float nota; float frequencia; struct listaDisciplina * proximo1; }; struct listaDisciplina * iniciarLista (struct listaDisciplina *pinicio1, int x, char y [] ) { struct listaDisciplina *aux; aux=(listaDisciplina *)malloc(sizeof(listaDisciplina)); aux ->codigo = x; strcpy(aux->nome, y); aux ->proximo1=pinicio1; pinicio1=aux; return pinicio1; } void insereDepois(struct listaDisciplina *p, int x, char y []) { struct listaDisciplina *aux; aux=(listaDisciplina *)malloc(sizeof(struct listaDisciplina)); aux ->codigo=x; strcpy(aux->nome, y); aux ->proximo1=p->proximo1; p->proximo1=aux; } struct listaDisciplina * insereOrdenado(struct listaDisciplina *pinicio1, int x, char y[]) { struct listaDisciplina *p, *q; if((pinicio1 == NULL)||(x<pinicio1->codigo)) { return (iniciarLista(pinicio1, x, y)); } p=pinicio1; q=p; while((q!=NULL) && (q->codigo<x)) { p=q; q=p->proximo1; } if((q==NULL) || (q->codigo>x)) insereDepois(p,x,y); else printf("\nElemento j? Existe"); return pinicio1; } /*void mostraElementosDisciplina(struct listaDisciplina *pinicio1) { struct listaDisciplina *p; p=pinicio1; system("cls"); while(p != NULL) { printf("%d , %s", p->codigo, p->nome); p=p->proximo; } getch(); } */ struct listaDisciplina * removeInicio(struct listaDisciplina * pinicio1) { struct listaDisciplina *aux; aux = pinicio1; pinicio1 = pinicio1->proximo1; free(aux); return pinicio1; } void removeDepois(struct listaDisciplina *p) { struct listaDisciplina *aux; aux = p->proximo1; p->proximo1 = aux->proximo1; free(aux); } struct listaDisciplina * removeOrdenado1(struct listaDisciplina * pinicio1, int x) { struct listaDisciplina *p,*q; if (pinicio1==NULL) { printf("lista vazia"); getch(); return pinicio1; } if (x == pinicio1->codigo) { return (removeInicio(pinicio1)); } p = pinicio1; q = p ; while ( q !=NULL && q->codigo < x ) { p = q; q = p->proximo1; } if (q!=NULL && q->codigo == x) removeDepois(p); else { printf("\nElemento nao Cadastrado"); getch(); } return pinicio1; } void mostraElementos(struct listaAluno *pinicio, struct listaDisciplina *pinicio1) { struct listaAluno *p; struct listaDisciplina *q; p=pinicio; q=pinicio1; system("cls"); while(p != NULL) { printf("\n........................................"); printf("\nCogigo do aluno: %d ", p->codigo); printf("\nNome do aluno: %s ", p->nome); printf("\nCodigo da disciplina: %d", q->codigo); printf("\nMateria %s", q->nome); p=p->proximo; q=q->proximo1; } getch(); } //******************//--------------------// //buscar// void buscar (listaAluno* pinicio, int n, char c[]) { struct listaAluno* p; struct listaDisciplina *q; p=pinicio; for (p=pinicio; p!=NULL; p=p->proximo) if(n!=NULL) printf("\n........................................"); printf("\nCodigo do aluno: %d ", n); printf("\nNome do aluno: %s ", c); printf("\nCodigo da disciplina:"); printf("\nMateria:"); getch(); } //-----------------//****************// //.......................................MENU..............................................// int menuOpcao() { int i; while(1) { system("cls"); printf("\n 1 - Inserir "); printf("\n 2 - Mostra "); printf("\n 3 - Retirar "); printf("\n 4 - Buscar "); printf("\n 5 - Sair "); printf("\nDigite a Opcao Desejada: "); scanf("%d",&i); if((i<1)||(i>5)) { printf("\nOpcao INVALIDA...Informe 1, 2, 3 ou 4 \n\n"); getch(); } else return i; } } //.............................................main.........................// main() { int opcao, n,d, codD; char nome[50], disciplina[50]; struct listaAluno * inicio; inicio=NULL; struct listaDisciplina * inicio1; while(1) { if((opcao=menuOpcao())==5) break; if(opcao==1) { printf("\nCodigo: "); scanf("%d",&n); printf("\nNome do Aluno(a): "); scanf("%s", nome); inicio=insereOrdenado(inicio,n, nome); printf("\nCodigo da Disciplina: "); scanf("%d",&codD); printf("\nMateria: "); scanf("%s", disciplina); inicio1=insereOrdenado(inicio1,codD,disciplina); } if(opcao==2) { mostraElementos(inicio, inicio1); getch(); } if(opcao==3) { printf("\nRemover Cod."); scanf("%d",&n); inicio = removeOrdenado(inicio,n); inicio1 = removeOrdenado1(inicio1,n); } if(opcao==4) { printf("\n\nDigite o codigo: "); scanf("%d", &n); buscar(inicio, n, nome); getch(); } } } alguma dica para conseguir fazer isso?
  3. Alguns dias atrás meu computador desligou e não iniciava, ficando apenas em um lupe em que o computador reinicia começa e dar boot no windows 7 e depois desliga repetindo o processo. Após isso deu para o Windows não desligar quando ocorrer o erro, assim essa mensagem apareceu stop c00021a fatal system error the verification of known dll failed system process terminated unexpectedly with a status of 0xc0000020 (0x06e0a1d0 0x00000000). the system has been shut down Já tentei restaurar o sistema, e tentar corrigir erros pelo cmd, mas não deu em nada, após isso passei uma borracha na memória ram, mas também não foi... Será que alguem pode me ajudar...

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!