-
Autor:
-
aulas de Ensino: 005
-
Projeto Endereço: https://github.com/JordenQiao/SE_Homework_Personal
projeto | conteúdo |
---|---|
Este trabalho pertence cursos | Primavera 2020 Computer Software Engineering Institute (Roger Ren Jian) |
Onde esta exigência no trabalho | trabalho de projecto individual |
Meu objetivo neste curso é | Desenvolver o conhecimento aprender engenharia de software, treinamento de capacidades de engenharia e desenvolvimento |
O trabalho que aspectos específicos me ajudar a alcançar objetivos | PSP desenvolvido pelo mestre funcionamento prático básica |
PSP2.1 | Estágios Personal Software Process | Tempo estimado de consumo (minutos) | As demoradas reais (minutos) |
---|---|---|---|
Planejamento | plano | 10 | 10 |
· Estimativa | • Estimativa quanto tempo esta tarefa requer | 10 | 10 |
Desenvolvimento | desenvolver | 280 | 520 |
· Análise | · Análise de Necessidades (incluindo a aprendizagem de novas tecnologias) | 30 | 40 |
· Projeto Spec | Gerar documentos de projeto | 30 | 40 |
· Revisão do projeto | · Design Review (e seus colegas revisaram os documentos de projeto) | 10 | 20 |
· Padrão de Codificação | · Especificações de código (desenvolvimento de normas apropriadas para o desenvolvimento atual) | 10 | 20 |
· Projeto | · O projeto específico | 60 | 100 |
· Codificação | · Específica de codificação | 60 | 120 |
· Revisão de código | · Revisão de código | 20 | 60 |
· Teste | · Test (autoteste, modificar o código, submeter modificações) | 60 | 120 |
Comunicando | relatório | 70 | 70 |
· Relatório de teste | · Relatório de Ensaio | 40 | 40 |
· Medição Tamanho | · Carga de trabalho Computing | 10 | 10 |
· Postmortem & Plano de Melhoria de Processos | · Hindsight, e propor plano de melhoria de processos | 20 | 20 |
total | 360 | 600 |
A. Resolução de problemas descrição ideias
pesquisa na Internet
Tente encontrar a complexidade da rede é menor do que o (n ^ 2) algoritmo para encontrar o (nlogn) diz respeito a um cruzamento segmento de linha e, na linha reta busca infrutífera
idéias de solução de problemas
Antes de escrever o código, o algoritmo não encontrar bom, então ele escolheu violência para resolver que lê uma linha, imediatamente antes do cruzamento com a resolução de linhas n retas, resolvido para cada ponto precisa ser processamento de duplicação, vetor processamento ainda olhando para o mesmo ponto, um elevado grau de complexidade.
melhorar
As coordenadas horizontais e verticais da cadeia pontos composição, formando chave, selecionando um armazenamento da mistura, isto é, coordenadas horizontais e verticais tornam-se valor de chave, ponto valor desta estrutura é um hash da lista, que é a ideia de escrever o código antes
II. Projeto de implementação
Porque é relativamente simples código C ++, não deliberadamente usar o pensamento orientado a objeto
-
classe: Function (ou seja, todo o corpo do programa, quando facilitar o teste, a interface chamada direta
-
set <o Nó, cmp> Nodes : Use definida ao escrever código em vez de hashmap, por causa da hashmap é muito maior do que o custo do conjunto, o processo requer mais do que uma série de duplo sua vez, pode haver perda de precisão, o custo também é grande
-
getLinePara vazio : ax + b = cy usando um representante forma linear de, em vez de usar o y originais = kx + b é para reduzir o uso da divisão, a máxima precisão e exatidão de retenção de dados, ao ler uma linha reta, esta função é chamada, obter o valor de ABC, linear estrutura em espécies
-
readFile vazio : Esta função é utilizada para leitura de arquivos e armazenar toda a linha de Vector < Line> Lines em
-
L2LIsCross BOOL : Esta função é usada para resolver a intersecção da reta e da linha reta, ou seja, soluções de equações lineares definido antes de resolver o linear primeiro determina se há um cruzamento, nós armazenados no imediatamente resolvido para o foco, e retorna verdadeiro, caso contrário, o cruzamento não existe, return false
-
C2LIsCross BOOL : Esta função é usada para resolver o círculo de intersecção com a linha recta, o declive do centro, e uma perpendicular à linha dada, obtida através da linha de centro vertical no dado, o ponto de intersecção das duas linhas rectas obtidas pelo ponto de intersecção da distância do centro, estreitamente determinada a partir da intersecção, se a fase de, falso é retornado; de outra forma, para se obter uma dada linha positiva e negativa unidade vector, multiplicado pela linha transversal semi-círculo, o medidor pode obter as coordenadas de dois cruzamentos, retornos verdadeiro
-
C2LIsCross BOOL : Esta função é usado para resolver a intersecção de dois círculos, a equação círculo em primeiro lugar subtraindo a equação linear obtido através do ponto focal, para o fim de simplificar o problema intersecção da linha recta e o círculo, a função de chamada directa
-
Resolver o int : chamar a função acima, para completar o processo de obtenção do ponto de intersecção é lido no número de interface de teste conveniente
-
-
par: O nó (não typedef ponto de armazenamento, não usar a estrutura, mas com o par)
-
struct: Linha (estrutura de armazenamento de linha que compreende coordenadas horizontais e verticais de dois pontos, o uso de armazenamento longo, e ax + b = CY de a, b, c)
-
struct: círculo (estrutura de armazenamento redonda, compreendendo um nó central e um raio r)
truques pequenos:
-
Use o SET < par>, sem ter que virar corda dupla, reduzir a quantidade de carga de trabalho
-
função par conjunto de substituição comparativa para assegurar a precisão de 12 decimal
O teste de unidade
-
Consideremos o caso extremo, uma linha recta paralela à linha recta vertical, a linha recta que intersecta o círculo, uma recta tangente ao círculo, o círculo com uma linha recta a partir do círculo intersecta o círculo, de um círculo que contém o círculo, o círculo tangente ao círculo
-
Os testes de estresse, 2000 linhas, teste
III. Teste de Desempenho
A dotação total tempo de CPU, a função pode ser visto que o tempo de ocupação principal
Set.insert função pode ser visto, o consumo máximo pode ser entendido, a primeira versão do código hashmap utilizado, devido à necessidade de virar dupla cadeia, que consome grande, mesmo mais do que a inserção na hashmap consumido, melhorando, assim, o uso set, árvore vermelha-preta armazenados, tanto para garantir a não-duplicação, mas também pode reduzir o consumo desnecessário, enquanto o conjunto método de inserção par, eu não tenho muito boa maneira de otimizar.
IV. Código Descrição
Código quadro de análise de qualidade
O teste de unidade
As funções-chave para alcançar
-
Resolver linear e intersecção circular
-
Rodada e volta a intersecção de resolução
-
Resolver linear e intersecção linear