Ir ao conteúdo
  • Cadastre-se

Lucca Dias Bertolucci

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

1
  1. Bacana o link, mas o meu problemas esta na linguagem, é meu primeiro contato com ela. A lógica eu tenho em outras linguagens
  2. Olá, preciso fazer um algoritmo na linguagem TCL para determinar o máximo divisor comum de 27648 e 20160 e 1008. Porém, é meu primeiro contato com a linguagem e não tem nenhum material disponibilizado pelo professor, pois trata-se de uma atividade par bônus de nota. Por enquanto, o que tenho é apenas isso: puts "Hello World!" set numA 27648 set numB 20160 set numC 1008 Não quero a resposta e sim uma luz sobre como prosseguir, ficarei muito grato, Obrigado!
  3. #include <iostream> #include <string.h> #include <math.h> #include <stdio.h> #include <stdlib.h> using namespace std; struct empresas; int redimensiona(); void incluir(); void excluir(); int listar(); void alterar(); void mergesort(); void merge(empresas *vet, int inicio, int meio, int fim); struct empresas{ int identificador; string nome; int anocriacao; string porte; string areanegocio; }; void mergesort(empresas *vet, int inicio, int fim){// codigo inspirado no v�deo https://www.youtube.com/watch?v=RZbg5oT5Fgw e em https://www.youtube.com/watch?v=5prE6Mz8Vh0 int meio; if (inicio < fim){ meio = floor((inicio + fim)/2); mergesort(vet, inicio, meio); mergesort(vet, meio+1, fim); merge(vet, inicio, meio, fim); } } void merge(empresas *vet, int inicio, int meio, int fim){ empresas *vet2; int p1, p2, tamanho, fim1=0, fim2=0; tamanho = fim - inicio+1; p1 = inicio; p2 = meio + 1; vet2 = new empresas[tamanho]; if (vet2 != NULL){ for(int i=0; i < tamanho; i++){ if(!fim1 && !fim2){ if(vet[p1].identificador < vet[p2].identificador){ vet2[i] = vet[p1]; p1++;} else{ vet2[i] = vet[p2]; p2++;} if (p1 > meio) fim1=1; if (p2 > fim) fim2= 1; } else{ if(!fim1){ vet2[i] = vet[p1]; p1++;} else{ vet2[i] = vet[p2]; p2++;} } } for(int j= 0; j<tamanho; j++){ vet[inicio] = vet2[j]; inicio++;} } delete[] vet2; } empresas* redimensiona(empresas *dados,int &tam){///////arrumar; int aux; aux = tam * 0.2; tam = tam + aux; empresas *novo = new empresas[tam]; memcpy(novo, dados, (sizeof(empresas) * tam)); delete [] dados; return novo; } void incluir(empresas *vet,int &tamanho, int &preenchido, int &i){ int op=1; while (op != 2){ cout << "Aperte (1) para incluir \n" << "Aperte (2) para voltar para o menu \n"; cin >> op; system("clear||cls"); if (op == 1){ int j=0; if (preenchido+1 < tamanho){ cout << "identificador da empresa (numero): \n"; cin >> vet[i].identificador; system("clear||cls"); cout << "Nome da Empresa: \n"; cin.ignore(); getline(cin, vet[i].nome); system("clear||cls"); cout << "Ano de Criacao: \n"; cin >> vet[i].anocriacao; system("clear||cls"); cout << "Porte da Empresa: \n"; cin.ignore(); getline(cin, vet[i].porte); system("clear||cls"); cout << "Area do Negocio: \n"; cin.ignore(); getline(cin, vet[i].areanegocio); system("clear||cls"); preenchido++; } else{ while((j < tamanho) and (vet[j].identificador != -1)){ j++;} if(j < tamanho){ cout << "identificador da empresa (numero): \n"; cin >> vet[j].identificador; system("clear||cls"); cout << "Nome da Empresa: \n"; cin.ignore(); getline(cin, vet[j].nome); system("clear||cls"); cout << "Ano de Criacao: \n"; cin >> vet[j].anocriacao; system("clear||cls"); cout << "Porte da Empresa: \n"; cin.ignore(); getline(cin, vet[j].porte); system("clear||cls"); cout << "Area do Negocio: \n"; cin.ignore(); getline(cin, vet[j].areanegocio); system("clear||cls"); } else{ vet = redimensiona(vet, tamanho); //vetor recebe o valor redimensionado cout << "identificador da empresa (numero): \n"; cin >> vet[i].identificador; system("clear||cls"); cout << "Nome da Empresa: \n"; cin.ignore(); getline(cin, vet[i].nome); system("clear||cls"); cout << "Ano de Criacao: \n"; cin >> vet[i].anocriacao; system("clear||cls"); cout << "Porte da Empresa: \n"; cin.ignore(); getline(cin, vet[i].porte); system("clear||cls"); cout << "Area do Negocio: \n"; cin.ignore(); getline(cin, vet[i].areanegocio); system("clear||cls"); preenchido++; } } i++; } } } void excluir(empresas *vet, int tamanho, int preenchido){ int identificador; int i=0, j=0, k=-1; cout << "Digite o identificador que voce deseja excluir: \n"; while ((i < tamanho) and (k < preenchido)){ if (vet[i].identificador != -1){ cout << vet[i].identificador << " " << vet[i].nome << endl; } i++; k++; } cin >> identificador; while (j < tamanho){ if (vet[j].identificador == identificador) vet[j].identificador = -1; j++; } } int listar(empresas *vet, int ocupado){ int i=0, k=-1, j=0; while (k < ocupado){ if(vet[i].identificador == -1){ k++; i++; } else{ cout << "Identificador: " << vet[i].identificador << endl << "Nome da Empresa: " << vet[i].nome << endl << "Ano de Criacao: " << vet[i].anocriacao << endl << "Area do Negocio: " << vet[i].areanegocio << endl << "Porte da Empresa: " << vet[i].porte << endl << "----------------------------------" << endl; k++; i++; } } while (j != 2){ cout << "Aperte 2 para voltar ao menu \n"; cin >> j; } if (j == 2){ return 7; } } void alterar(empresas *vet, int preenchido, int tamanho){ int identificador, i=0, k=0, p=0, x=-1;// indices e identificador cout << "Digite o identificador que deseja alterar \n(Caso de identificadores iguais, sera alterado aquele que aparece mais ao topo): \n"; while ((p < tamanho) and (x < preenchido)){ if (vet[p].identificador != -1){ cout << vet[p].identificador << " " << vet[p].nome << endl; } p++; x++;} cin >> identificador; while ((k < preenchido) and (vet[i].identificador != identificador)){ i++; k++; } system("clear||cls"); cout << "identificador da empresa (numero): \n"; cin >> vet[i].identificador; system("clear||cls"); cout << "Nome da Empresa: \n"; cin.ignore(); getline(cin, vet[i].nome); system("clear||cls"); cout << "Ano de Criacao: \n"; cin >> vet[i].anocriacao; system("clear||cls"); cout << "Porte da Empresa: \n"; cin.ignore(); getline(cin, vet[i].porte); system("clear||cls"); cout << "Area do Negocio: \n"; cin.ignore(); getline(cin, vet[i].areanegocio); system("clear||cls"); } int main(){ int opcao = 7, tam = 5, aux, indice = 0, inicio; int preenchido = -1; empresas *vetor = new empresas[tam]; while(opcao != 6){ system("clear||cls"); // para limpar a tela em tanto em windows quanto em linux cout << "Digite uma opcao:" << endl << "incluir (1)" << endl << "excluir (2)" << endl << "listar (3)" << endl << "alterar (4)" << endl << "ordenar (5)" << endl << "sair (6)" << endl; cin >> opcao; system("clear||cls"); // para limpar a tela em tanto em windows quanto em linux if (opcao == 1){ incluir(vetor, tam, preenchido, indice); opcao = 7; } if (opcao == 2){ excluir(vetor, tam, preenchido); opcao = 7; } if (opcao == 3){ opcao = listar(vetor, preenchido); } if (opcao == 4){ alterar(vetor, preenchido, tam); opcao = 7; } if (opcao == 5){ inicio = 0; mergesort(vetor, inicio, preenchido); } } } Meu grupo chegou até aqui, todas as funções funcionam, menos a ordenação. Alguém pode nos dar uma luz?

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...