Ir para conteúdo
Fórum Script Brasil

meanmatheus

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre meanmatheus

meanmatheus's Achievements

0

Reputação

  1. Eu estou fazendo um cadastro escolar onde eu crio uma lista duplamente encadeada circular para inserir os alunos, e uma lista simplesmente encadeada para inserir uma disciplina do aluno. Na parte de cadastrar aluno deu tudo certo, mas na hora de inserir a lista de disciplina na lista do aluno selecionado da erro. Quem puder me ajudar eu agradeço. Segue o código: aluno.h #ifndef ALUNO_H_INCLUDED #define ALUNO_H_INCLUDED typedef struct DisciplinasListas { char nome[100]; struct DisciplinasListas * prox; }Disciplina; struct AlunosLista{ char nome[100], dataNascimento[11],matricula[10]; Disciplina * disciplinas; struct AlunosLista * next; struct AlunosLista * prev; }; void cadastrarAluno(); void imprimirLista(); void cadastrarDisciplinas(); struct AlunosLista * buscaAluno(char *); #endif main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include "aluno.h" typedef struct AlunosLista node; node *head = NULL, *tail = NULL; void cadastrarAluno() { node *newNode = (node *) malloc(sizeof(node)); printf("\nForneca a matricula: "); fgets(newNode->matricula,10,stdin); setbuf(stdin,NULL); printf("\nForneca o nome: "); fgets(newNode->nome,100,stdin); setbuf(stdin,NULL); printf("\nForneca a data de nascimento: "); fgets(newNode->dataNascimento,11,stdin); setbuf(stdin,NULL); newNode->disciplinas=NULL; newNode->next = newNode; newNode->prev = newNode; if(head==NULL) { head = newNode; tail = newNode; } else { tail->next = newNode; newNode->next = head; newNode->prev = tail; tail = newNode; head->prev = tail; } } void imprimirLista() { if(head==NULL) return; node *current = head; do { printf("\n%s", current->matricula); Disciplina *currentDisc = current->disciplinas; do { printf("\n%s", currentDisc->nome); currentDisc = currentDisc->prox; } while(currentDisc != current->disciplinas); current = current->next; } while(current != head); } struct AlunosLista * buscaAluno(char matricula[]) { if(head==NULL) return; node *current = head; do { if(!strcmp(current->matricula,matricula)) { return current; current = current->next; } } while(current != head); return 0; } void cadastrarDisciplinas() { char disciplina[100], matricula[10]; if(head==NULL) return; printf("\nForneça a matricula do aluno:"); fgets(matricula,10,stdin); setbuf(stdin,NULL); struct AlunosLista *busca = buscaAluno(matricula); if(busca!=0) { printf("\nForneça o nome da disciplina:"); fgets(disciplina,100,stdin); setbuf(stdin,NULL); node *current = head; do { if(current==busca) { if (!strcmp(current->matricula,matricula)) { Disciplina * lDisciplina = (Disciplina *)malloc(sizeof(Disciplina)); strcpy(lDisciplina->nome,disciplina); lDisciplina->prox = current->disciplinas; current->disciplinas->prox = lDisciplina; break; } } current = current->next; } while(current != head); } else printf("\nAluno inexistente!!!"); } int main(){ int opcao; do{ printf("\n1-cadastrar aluno"); printf("\n2-cadastrar disciplinas do aluno"); printf("\n3-listar"); printf("\n4-sair"); printf("\nForneca a sua opcao: "); scanf("%d",&opcao); setbuf(stdin,NULL); switch(opcao){ case 1: cadastrarAluno(); break; case 2: cadastrarDisciplinas(); break; case 3: imprimirLista(); break; } }while(opcao!=4); return 0; }
  2. Eu fiz uma função em C que substitui os acentos que determinada palavra passada pelo parâmetro tem. O código funciona e substitui os caracteres com acento, mas o programa em si é abortado quando executa. Quem puder me ajudar com melhorias ou sugestões eu agradeço. Segue o código: void retiraAcentos(char str[]) { char *pch; pch = strstr(str,"Á"); if (pch != NULL) strncpy(pch,"A",6); pch = strstr(str,"À"); if (pch != NULL) strncpy(pch,"A",6); pch = strstr(str,"Â"); if (pch != NULL) strncpy(pch,"A",6); pch = strstr(str,"Ã"); if (pch != NULL) strncpy(pch,"A",6); pch = strstr(str,"Ä"); if (pch != NULL) strncpy(pch,"A",6); pch = strstr(str,"É"); if (pch != NULL) strncpy(pch,"E",6); pch = strstr(str,"È"); if (pch != NULL) strncpy(pch,"E",6); pch = strstr(str,"Ê"); if (pch != NULL) strncpy(pch,"E",6); pch = strstr(str,"Ë"); if (pch != NULL) strncpy(pch,"E",6); pch = strstr(str,"Í"); if (pch != NULL) strncpy(pch,"I",6); pch = strstr(str,"Ì"); if (pch != NULL) strncpy(pch,"I",6); pch = strstr(str,"Î"); if (pch != NULL) strncpy(pch,"I",6); pch = strstr(str,"Ï"); if (pch != NULL) strncpy(pch,"I",6); pch = strstr(str,"Ó"); if (pch != NULL) strncpy(pch,"O",6); pch = strstr(str,"Ò"); if (pch != NULL) strncpy(pch,"O",6); pch = strstr(str,"Ô"); if (pch != NULL) strncpy(pch,"O",6); pch = strstr(str,"Õ"); if (pch != NULL) strncpy(pch,"O",6); pch = strstr(str,"Ö"); if (pch != NULL) strncpy(pch,"O",6); pch = strstr(str,"Ú"); if (pch != NULL) strncpy(pch,"U",6); pch = strstr(str,"Ù"); if (pch != NULL) strncpy(pch,"U",6); pch = strstr(str,"Û"); if (pch != NULL) strncpy(pch,"U",6); pch = strstr(str,"Ü"); if (pch != NULL) strncpy(pch,"U",6); pch = strstr(str,"Ç"); if (pch != NULL) strncpy(pch,"C",6); }
×
×
  • Criar Novo...