Ir para conteúdo
Fórum Script Brasil

AlessandraFord

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que AlessandraFord postou

  1. Se alguém tiver qualquer código que adiciona, lista, altera e apaga objetos de uma classe sem utilizar retorno, agradeceria. Caso contrário, gostaria de saber como faço para não utilizar retorno (apontador para o próximo objeto a ser criado) no meu código, que segue: Função main.cpp: int main() { //Declaração de variáveis Database *primeiro = NULL; char opcao; //Artifício para repetir o programa. while(opcao!='s') { //Menu de opcoes system("cls"); cout << "MENU PARA CADASTRO DE CHAMADAS"; cout << endl << "A - Novo cadastro"; cout << endl << "B - Listar cadastros"; cout << endl << "C - Excluir todos os cadastros"; cout << endl << "D - Alterar potencia de chamada ja cadastrada"; cout << endl << "S - Sair" << endl << endl; //Lendo a opcao do menu fflush(stdin); opcao = getch(); //Menu de opcoes switch(opcao) { case 'A': case 'a'://Inserindo chamada system("cls"); cout << "NOVO CADASTRO" << endl; primeiro = inserir_call(primeiro); getch(); break; case 'B': case 'b'://Listando chamadas system("cls"); cout << "CHAMADAS CADASTRADAS" << endl; listar_call(primeiro); getch(); break; case 'C': case 'c'://Excluindo chamada da lista. system("cls"); cout << "EXCLUIR TODOS OS CADASTROS" << endl; while (primeiro != NULL){ primeiro = excluir_calls(primeiro); } cout << endl << "Todas chamadas cadastradas foram excluidas"; getch(); break; case 'D': case 'd'://Alterando chamada da lista. system("cls"); cout << "ALTERAR POTENCIA DE CHAMADA CADASTRADA" << endl; alterar_call(primeiro); getch(); break; case 'S': case 's'://Artifício para sair do programa. system("cls"); opcao='s'; break; default://Artifício que previne de um usuário digitar uma opcão inexistente no menu. system("cls"); break; } } return 0; } Função inserir chamada: Database* inserir_call(Database *primeiro){ Database call; Database *atual = primeiro; char identificador = 'F'; int auxInt; double auxDouble; //Lendo as informações do restaurante. cout << "Node Origem: "; cin >> auxInt;//call.nodeOr;// scanf("%d",&call.nodeOr); call.setNodeOr(auxInt); cout << "Node Destino: "; cin >> auxInt;//call.nodeOr;// scanf("%d",&call.nodeOr); call.setNodeDe(auxInt); cout << "Pot entrada (W): "; cin >> auxDouble;//call.nodeOr;// scanf("%d",&call.nodeOr); call.setPin(auxDouble); //Verificando se o cadastro já existe. for(atual=primeiro; atual!=NULL; atual=atual->prox){ if( (atual->getNodeOr()==call.getNodeOr()) && (atual->getNodeDe()==call.getNodeDe()) && (atual->getPin()==call.getPin()) ){ identificador = 'V'; //já há chamada igual break; } } if(identificador != 'V'){ //Alocando os espaços e guardando as informações do restaurante. Database* NovaChamada = (Database*) malloc (sizeof(Database)); NovaChamada->setNodeOr(call.getNodeOr()); NovaChamada->setNodeDe(call.getNodeDe()); NovaChamada->setPin(call.getPin()); NovaChamada->prox = primeiro; cout << endl << "Cadastro realizado com sucesso"; cout << endl << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; return NovaChamada; }else{ cout << endl << "Cadastro invalido - chamada cadastrada anteriormente"; cout << endl << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; return primeiro; } } Função listar chamadas: void listar_call (Database* primeiro){ Database* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista. //Imprimindo os restaurantes da lista, e suas repectivas informações. for(atual = primeiro; atual != NULL; atual = atual->prox){ cout << "________________________________" << endl; cout << "Node origem: " << atual->getNodeOr() << endl; cout << "Node destino: " << atual->getNodeDe() << endl; cout << "Pot entrada (W): " << atual->getPin() << endl; } if(primeiro == NULL) cout << endl << "Nenhuma chamada cadastrada" << endl; cout << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; } Função excluir chamadas: Database* excluir_calls(Database *primeiro){ Database *anterior = NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista. Database *atual = primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista. if(atual == NULL){ return primeiro; } //Excluindo o primeiro restaurante da lista. if(anterior == NULL){ primeiro = atual->prox; //Excluindo um restaurante do meio da lista. } else{ anterior->prox = atual->prox; } //Desalocando o espaço da memória. free(atual); return primeiro; } Função alterar potência de chamada: void alterar_call(Database* primeiro){ Database* atual = primeiro; int nOr, nDe; double power; cout << endl << "Dados da chamada a ser alterada: " << endl << endl; cout << "Noh origem: "; cin >> nOr; cout << "Noh destino: "; cin >> nDe; //Procurando chamada a ser alterada while( (atual!= NULL) && (atual->getNodeOr() != nOr) && (atual->getNodeDe() != nDe) ){ atual = atual->prox; } //Alterando os dados do restaurante. if(atual != NULL){ cout << "NOVA potencia: "; cin >> power; atual->setPin(power); cout << endl << "Potencia alterada com sucesso"; } else{ cout << endl << "Chamada nao encontrada"; } cout << endl << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; } Class Database: class Database{ public: void setNodeOr(int); void setNodeDe(int); void setPin(double); int getNodeOr(); int getNodeDe(); double getPin(); class Database* prox; private: int nodeOr; int nodeDe; double pIn; };
  2. Provavelmente a resposta é: Crie uma classe! Ok... mas eu não sei criar uma! Vamos lá... Minha rede está funcionando certinha, tendo em vista que eu já peguei o bonde andando e apenas fiz ajustes nas classes já existentes! Entretanto, quero criar uma classe que: - armazene uma potência para chamadas com as seguintes características: essa chamada terá uma taxa, um formato de modulação e uma rota - essas potências poderão ser atualizadas quando for encontrada uma potência menor para as respectivas chamadas com mesmas características, entretanto com QoT menor, mas que ainda satisfaz Essa classe será preenchida em uma primeira simulação, e será utilizada para demais simulações. Não tendo de calcular uma potência, mas apenas buscando nessa classe (tabela). Apenas. Obrigada.
×
×
  • Criar Novo...