Ir para conteúdo
Fórum Script Brasil

AllanBraulio

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre AllanBraulio

AllanBraulio's Achievements

0

Reputação

  1. AllanBraulio

    Preciso de Ajuda

    #include <iostream> #include <string> #include <cmath> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { setlocale(LC_ALL,"portuguese"); float idade; int nascimento; int atual; atual = 2017; cout <<"Digite sua idade:" << endl; cin >>idade; nascimento = atual - idade; cout <<"parabéns você é jovem, nasceu em: " << nascimento; return 0; } Coloquei em negrito onde fiz alterações. Duas coisas: Sempre que for colocar Endl no código, é necessário usar <<. Outra coisa: nome de variável nunca se coloca em aspas duplas, alias, não use aspas para exibi-la. Outra coisa, sua conta estava dando negativo, então inverti as variáveis.
  2. Gente, boa noite. Preciso muito de ajuda, pois isso aqui é um trabalho de faculdade e eu to entendendo muito pouco da materia e preciso entregar isso terça feira. Se puderem me ajudar, ficarei agradecido. Bom, vamos lá. O enunciado do meu problema é esse: Faça um programa para controlar as informações das disciplinas de um curso de graduação. Este programa deve armazenar informações sobre os alunos matriculados e as disciplinas ofertadas pelo curso. Para cada aluno, o programa deve permitir inserir informações sobre a matrícula, nome, data de nascimento, endereço e telefone. Para cada disciplina, deve conter informações como o código, e a descrição. Sabe-se que cada aluno possui um valor para sua nota, que é atribuída em uma determinada disciplina do curso. O programa deve permitir o cadastro dos alunos, disciplinas e das notas dos alunos nas disciplinas. Para isso, o usuário deve digitar via console os dados e estes devem ser armazenados em uma lista encadeada. Ao finalizar a inserção dos dados, os mesmos devem ser gravados em três arquivos diferentes, sendo um para o cadastro das disciplinas, um para o cadastro dos alunos e outro para o lançamento das notas dos alunos nas disciplinas cadastradas. O programa deve permitir obter as seguintes informações: Listar as notas de todos os alunos de uma determinada disciplina; Listar quais os alunos (pelo nome) foram reprovados (leve em consideração mínimo de 60 pontos para aprovação) em uma determinada disciplina. Listar a maior e a menor nota obtida em cada disciplina. E eu fiz até agora o seguinte código: #include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.h> using namespace std; //LISTA struct TitemdasMaterias{ char nomedisciplina[100]; int codigodisciplina; char descricaodisciplina[500]; }; struct TitemdosAlunos { int matricula; long int telefone; char nome[100]; int diaN, mesN, anoN; char endereco[300]; //outros componentes }; struct TceluladosAlunos { TitemdosAlunos item; TceluladosAlunos *prox; }; struct TceluladasMaterias { TitemdasMaterias item; TceluladasMaterias *prox; }; struct TListadosAlunos { TceluladosAlunos *primeiro, *ultimo; int tamanho; }; struct TListadasMaterias { TceluladasMaterias *primeiro, *ultimo; int tamanho; }; void menu() { cout << "1 - Inserir aluno" <<endl; cout << "2 - Pesquisar alunos" <<endl; cout << "3 - Imprimir alunos" <<endl; cout << "4 - Remover alunos" <<endl; cout << "5 - Inserir disciplina" << endl; cout << "6 - Imprimir disciplinas" << endl; cout << "7 - Pesquisar disciplinas" << endl; cout << "8 - Fazer a lista ficar fazia" << endl ; cout << "0 - Sair" <<endl; } void FLVaziadosAlunos(TListadosAlunos *Lista) { Lista->tamanho = 0; Lista->primeiro = (TceluladosAlunos*)malloc(sizeof(TceluladosAlunos)); Lista->ultimo = Lista->primeiro; Lista->primeiro->prox = NULL; } void FLVaziadasMaterias(TListadasMaterias *Lista) { Lista->tamanho = 0; Lista->primeiro = (TceluladasMaterias*)malloc(sizeof(TceluladasMaterias)); Lista->ultimo = Lista->primeiro; Lista->primeiro->prox = NULL; } int VaziadosAlunos(TListadosAlunos Lista) { return(Lista.primeiro == Lista.ultimo); } int VaziadasMaterias(TListadasMaterias Lista) { return(Lista.primeiro == Lista.ultimo); } void InsereAluno(TListadosAlunos *Lista, TitemdosAlunos item) { TceluladosAlunos*aux; aux = (TceluladosAlunos*)malloc(sizeof(TceluladosAlunos)); if ( aux == NULL ) { printf ("não foi possivel alocar memoria!\n"); exit(1); } aux->item = item; aux->prox = NULL; Lista->ultimo->prox = aux; Lista->tamanho++; Lista->ultimo = aux ; cout << "Cadastrado com sucesso"<<endl; system("pause"); system("cls"); } void InsereDisciplina(TListadasMaterias *Lista, TitemdasMaterias item) { TceluladasMaterias*aux; aux = (TceluladasMaterias*)malloc(sizeof(TceluladasMaterias)); if ( aux == NULL ) { printf ("não foi possivel alocar memoria!\n"); exit(1); } aux->item = item; aux->prox = NULL; Lista->ultimo->prox = aux; Lista->tamanho++; Lista->ultimo = aux ; cout << "Disciplina Cadastrada com sucesso"<<endl; system("pause"); system("cls"); } void grava_arquivo_alunos(TListadosAlunos Lista, TitemdosAlunos *item){ TceluladosAlunos *aux; aux = Lista.primeiro->prox; FILE *arq = fopen("alunos.txt", "w"); if(arq == NULL){ cout <<"\nErro na gravacao do arquivo!\n"; }else{ while (aux != NULL){ fprintf(arq, "%s\n", aux->item.nome); fprintf(arq, "%d\n", aux->item.matricula); fprintf(arq, "%d\n", aux->item.telefone); fprintf(arq, "%d/%d/%d\n", aux->item.diaN, aux->item.mesN, aux->item.anoN); fprintf(arq, "%s\n", aux->item.endereco); aux = aux ->prox; } } fclose(arq); } void grava_arquivo_disciplinas(TListadasMaterias Lista, TitemdasMaterias *item){ TceluladasMaterias *aux; aux = Lista.primeiro->prox; FILE *arq = fopen("disciplinas.txt", "w"); if(arq == NULL){ cout <<"\nErro na gravacao do arquivo!\n"; }else{ while (aux != NULL){ fprintf(arq, "%s\n", aux->item.nomedisciplina); fprintf(arq, "%d\n", aux->item.codigodisciplina); fprintf(arq, "%s\n", aux->item.descricaodisciplina); aux = aux ->prox; } } fclose(arq); } void le_arquivo_alunos(TListadosAlunos Lista, TitemdosAlunos *item){ TceluladosAlunos *aux; aux = Lista.primeiro->prox; FILE *arq = fopen("alunos.txt", "r"); if(arq == NULL){ cout <<"\nErro na gravacao do arquivo!\n"; }else{ while (aux != NULL){ fscanf(arq, "%s\n", aux->item.nome); fscanf(arq, "%d\n", aux->item.matricula); fscanf(arq, "%d\n", aux->item.telefone); fscanf(arq, "%d/%d/%d\n", aux->item.diaN, aux->item.mesN, aux->item.anoN); fscanf(arq, "%s\n", aux->item.endereco); } } fclose(arq); } int pesquisaAluno(TListadosAlunos Lista, TitemdosAlunos *item) { TceluladosAlunos *aux; aux = Lista.primeiro->prox; while(aux!=NULL) { if(aux->item.matricula == item->matricula) { // strcmp(aux->item.nome,item->nome) *item = aux->item; return 1; } aux = aux ->prox; } return 0 ; } int pesquisaDisciplina(TListadasMaterias Lista, TitemdasMaterias *item) { TceluladasMaterias *aux; aux = Lista.primeiro->prox; while(aux!=NULL) { if(aux->item.codigodisciplina == item->codigodisciplina) { // strcmp(aux->item.nome,item->nome) *item = aux->item; return 1; } aux = aux ->prox; } return 0 ; } int RemoveAluno(TListadosAlunos *Lista,TitemdosAlunos *item) { TceluladosAlunos *aux,*ant; ant = Lista->primeiro; aux = Lista->primeiro->prox; while(aux != NULL) { if(aux->item.matricula==item->matricula) { *item = aux ->item; ant->prox=aux->prox; Lista->tamanho--; if(aux->prox == NULL) //aux==lista->ultimo Lista->ultimo=ant; free(aux); return 1; } ant = aux; aux = aux->prox; } return 0 ; } void ImprimeAluno(TListadosAlunos Lista) { TceluladosAlunos *aux; aux = Lista.primeiro->prox; while (aux != NULL) { cout << "Nome: " << aux->item.nome << endl ; cout << "Matricula: " << aux->item.matricula<<endl; cout << "Telefone: " << aux->item.telefone << endl ; cout << "Data de nascimento: "; printf("%d/%d/%d\n", aux->item.diaN, aux->item.mesN, aux->item.anoN); cout << "Endereço: " << aux->item.endereco << endl; cout << endl; cout << endl; aux = aux -> prox; } } void ImprimeDisciplina(TListadasMaterias Lista) { TceluladasMaterias *aux; aux = Lista.primeiro->prox; while (aux != NULL) { cout << "Nome da disciplina: " << aux->item.nomedisciplina << endl ; cout << "Codigo da disciplina: " << aux->item.codigodisciplina<<endl; cout << "Descricao da disciplina: " << aux->item.descricaodisciplina << endl ; aux = aux -> prox; } } int main(int argc, char *argv[]) { TListadosAlunos L1; TListadasMaterias L2; TitemdosAlunos Aluno; TitemdasMaterias Materia; FLVaziadosAlunos(&L1); FLVaziadasMaterias(&L2); int op; le_arquivo_alunos(L1, &Aluno); do { menu(); cout << "Informe opcao"<<endl; cin >> op; switch(op) { case 0 : break; case 1 : cout << "Digite seu nome" << endl; fflush(stdin); gets(Aluno.nome); cout << "Digite seu numero de matricula" << endl; cin >> Aluno.matricula; cout << "Digite seu numero de telefone" << endl; cin >> Aluno.telefone; cout << "Informe a sua data de nascimento na seguinte configuracao: dd/mm/aaaa\n"; scanf("%d/%d/%d", &Aluno.diaN, &Aluno.mesN, &Aluno.anoN); cout << "Endereço: " << endl; fflush(stdin); gets(Aluno.endereco); InsereAluno(&L1, Aluno); break; case 2 : cout << "Informe o matricula"<<endl; cin >> Aluno.matricula; if(pesquisaAluno(L1,&Aluno)) { cout << "Nome \t" << Aluno.nome << endl; cout <<"Matricula\t"<< Aluno.matricula << endl; cout<< "Telefone\t" << Aluno.telefone << endl; cout << "Data de nascimento \t"; printf("%d/%d/%d\n", Aluno.diaN, Aluno.mesN, Aluno.anoN); cout << "Endereco:\t" << Aluno.endereco << endl; system("pause"); system("cls"); } else { cout << "Inexistente" << endl; system("pause"); system("cls"); } break; case 3 : if(VaziadosAlunos(L1)) cout << "A lista esta vazia" << endl; ImprimeAluno(L1); system("pause"); system("cls"); break; case 4: cout << "Informe o seu numero de matricula"<<endl; cin >> Aluno.matricula; if(RemoveAluno(&L1,&Aluno)) { cout << "Removeu " << endl; cout << "Matricula: " << Aluno.matricula<<endl; cout << "Telefone: " << Aluno.telefone<<endl; cout << "Nome: " << Aluno.nome<<endl; cout << "Data de nascimento \t"; printf("%d/%d/%d\n", Aluno.diaN, Aluno.mesN, Aluno.anoN); cout << "Endereco: " << Aluno.endereco; system("pause"); system("cls"); } else { cout << "Inexistente" << endl; system("pause"); system("cls"); } break; case 5 : cout << "Digite o nome da disciplina: " << endl; fflush(stdin); gets(Materia.nomedisciplina); cout << "Digite o codigo da disciplina" << endl; cin >> Materia.codigodisciplina; cout << "Descricao da disciplina: " << endl; fflush(stdin); gets(Materia.descricaodisciplina); InsereDisciplina(&L2, Materia); break; case 6 : if(VaziadasMaterias(L2)) cout << "A lista esta vazia" << endl; ImprimeDisciplina(L2); system("pause"); system("cls"); break; case 7: cout << "Informe o codigo da disciplina"<<endl; cin >> Materia.codigodisciplina; if(pesquisaDisciplina(L2,&Materia)) { cout << "Nome da disciplina\t" << Materia.nomedisciplina << endl; cout <<"Codigo da Disciplina\t"<< Materia.codigodisciplina << endl; cout << "Descricao:\t" << Materia.descricaodisciplina << endl; system("pause"); system("cls"); } else { cout << "Inexistente" << endl; system("pause"); system("cls"); } break; case 8 : FLVaziadosAlunos(&L1); cout << "Lista vazia" << endl; system("pause"); system("cls"); break; case 9: break; case 10: break; default : cout << "Opcao não existe" << endl; } } while(op != 0 ); grava_arquivo_alunos(L1, &Aluno); grava_arquivo_disciplinas(L2, &Materia); return 0; } Bom, explicando o meu problema e o que já tem no código: As funções básicas de uma lista eu peguei do código do meu professor. O que eu fiz até agora foi cadastrar as informações dos alunos e as informações das disciplinas em duas listas separadas, uma para alunos outra para as materias. Porém, eu estou com problema na Leitura dos dados que eu cadastrei. A minha função "le_arquivo_alunos" não funciona. Ela não está lendo os dados do arquivo. Há a função no inicio do Main do código que se chama FLVaziaDosAlunos, essa função no código do meu professor deixa a lista vazia (suspeito que seja por isso que a função de ler não está lendo os dados), porém, sem essa função de esvaziar a lista, o programa não roda. Preciso de ajuda para fazer a leitura desses dados sem esvaziar a lista. E preciso de ajuda para cadastrar as respectivas notas junto as suas disciplinas, que eu não faço nem ideia de como fazer. Alguém pode me dar uma luz? Sou muito iniciante em c++
×
×
  • Criar Novo...