Leiam!!!! nos próximos trabs quero ver todo mundo com nota 10. isso facilita a correção!!!! e nunca vcs vão encontrar um PAE tão bonzinho como eu: mas não aproveita, pq nos próximos trabs vou tirar nota de td isso abaixo especificado e não ficar escrevendo este texto gigante. Para isso existe blog, q eu alias não tenho pq odeio escrever. OBS ++IMPORTANTE quem ficou com ZERO NÃO me procure. teremos um dia para conversar sobre a nota de vocês que está pendente NA PRESENÇA DO PROFESSOR. todos os outros alunos, que tenham dúvidas neste trabalho, por favor me procurem na próxima monitoria (18/10 as 17h00) na sala 4-001 OBS IMPORTANTE em dúvidas sobre trabalhos, o assunto do mail deve ser: [trabNumero]duvida Para entrega (caso sqtpm nao funfe novamente): [trabNumero]entrega (se arquivo nomeado diferente de numUSP.c, não será corrigido!) e (+): primeiro tento compilar, e warnings me deixam mal humorada. Segundo, vejo o fonte, programas com problemas de endentação no vim me deixam mais irritada. Corrigiria os trabs mais feliz se vcs desenvolvessem sobre linux. e (-): filhos da mãe que não acertaram nem mesmo os dois casos de teste disponibilizados (1 e 3): sua nota é com certeza menor que 5. Porque que adianta modularizar e comentar um código que não funciona?! aos ótimos trabalhos que não ficaram com 10: em geral quem ficou entre 8 e 9 foram trabalhos ótimos, mas que erraram qto ao gerenciamento de memória e passagem e retorno das funções de operação em conjuntos. Como disse em aula, não vou tirar pontos qto a documentação interna, pois isto parece que nenhum aluno sabia como fazer. Mas qto a eficiência no uso de memória e a passagem correta de parâmetros, isto foi pedido explicitamente. E isto, claro, todos tinham condições de acertar. ---------------------------------------------------------------------------------------------------------------- Memória Como disse na última aula de laboratório, era permitido fazer uso de memória estática. Mas como o programa seria rodado uma vez para cada caso de teste, podia-se ler os tamanhos dos vetores e, então, criar os vetores, utilizando-se 3(m+n) para armazenar os elementos lidos e dos conjuntos. Caso tenha utilizado alocação dinâmica, malloc casa bem com free, ne! **reconsiderei a nota dos alunos que alocaram estaticamente o máximo (30). Mas na próxima não vou aceitar!!!! concordam que a pior instância pode usar vetores de tamanho 10^x com x > 2, mas isto só poucas instâncias? então para que gastar sempre o tamanho da pior instância?! ---------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------- Modularização (capacidade de fazer uma função que vai ser útil em outras situações fortemente parecidas, não só no sistema desenvolvido em questão) Qto a passagem correta dos parâmetros, considerei errado aqueles que, ou não fizeram funções, uma para cada operação de conjunto (nota 0 em modularização). Aqueles que, nestas funções, não passaram o vetor de resposta, olhem meu comentario negativo: Funções de conjunto deveriam popular um vetor de resposta. Posso querer usar o conjunto resposta e nao imprimi-lo ne?! Da próxima vez, vou tirar pelo menos metade da nota em modularização! ---------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------- Documentação interna Para os próximos trabalhos faço as seguintes exigências: o arquivo fonte deve ser enviado da seguinte forma: numUSP.c, em arquivo único, até pq não tem como vcs submeterem mais de um arquivo no sqtpm, q talvez, por milagre, um dia, funcione. Se não funcionar e tiverem que enviar para meu mail, o assunto deve ser [trab2]entrega o fonte deve conter: /* * descrição geral do que o programa faz. * nome e numero usp do autor. (ah, se nao kiser por nome, blz, o que me importa pra passar a nota é só seu num usp) */ vcs vão aprender em POO como fazer uma documentação interna que auxilia a geração da documentação externa. Apenas passando o conceito (que será cobrado): não é necessário comentar cada linha de código! isso é perder tempo O(2^n) com documentação, onde n é o tamanho do seu programa rs antes de cada função, exceto a main, claro, deve aparecer o comentário no formato: /* * esta função faz isto isto e aquilo. (diga o q faz pq um dia alguem q for utilizar sua função não precisa ler o código, apenas este comentário.) * parâmetro x: bla bla bla * parâmetro y: bla bla bla * parâmetro z: bla bla bla * (apenas se não devolve void) return k: blo blo blo */ em todas as funções, inclusive na main, faça o comentário de cada grupo de variáveis declaradas, ex: int i, j, k; //contadores int a[n], b[m]; //vetores que receberão os elementos dos arrays de entrada No interior do código, faça comentários pertinentes que expliquem coisas mais interessantes feitas por vc, mostrando o sentido de por que vc fez akilo (o q vc pensou para decidir fazer aquele algoritmo), isso ajuda seu amigo de trabalho a dar manutenção no código qdo vc for demitido ou subir de cargo :) ---------------------------------------------------------------------------------------------------------------- Ah, IMPORTANTE, vi muita gente fazendo gerarconjunto como algo a ser chamado independentemente do cocktailsort. Concordam q é mais eficiente retirar os repetidos depois que o array já está ordenado? Concordam tb que se tenho dois conjuntos (portanto, ja ordenados), é melhor eu fazer merge do que "concatenar" e depois ordenar novamente? (uma ideia vista posteriormente no mergesort). Espero que pensem mais em eficiência nos próximos trabalhos. Até minha prima de 15 anos que ama computador e nunca viu nenhuma linguagem de programação faria algo melhor com poucos dias de estudo. Não tô tirando vcs não, só tô pedindo, pela'mor, não estamos na usp para fazer qq coisinha, fazer o óbvio. Estamos aqui para sermos os melhores da nossa área (perdendo sempre pra unicamp, pq os caras lá são bambi, mas não fo... rs). tb vi alguns alunos se preocupando com tratamento de entrada.. sim, isto é importante, mas não importa qto seja a sua criatividade, sempre haverá usuários mais burros para ferrar com seu sistema. então NÃO percam tempo com isso. vcs sabiam que o código seria corrigido por um corretor automático, portanto, com entrada e saída formatadas conforme exemplificado na coteiawiki e, ainda assim, fizeram isso. pq?! perderam tempo com algo não utilizado e perderam ponto em não serem fiéis ao formato de saída. Pensem que da próxima vez, o corretor dos casos de teste pode ser o sqtpm e, portanto, vcs ficaram com zero se errarem saída. De modo algum, haverá entradas não previstas pelo modelo de exemplo. ---------------------------------------------------------------------------------------------------- homens de preto (negrito no xls): copy paste da wikipedia. vcs leram o pdf de especificação? 'Implemente sua atividade sozinho sem compartilhar, olhar código de seus colegas, ou buscar na Internet.' e estava destacado ainda!!!!!!!!!! ---------------------------------------------------------------------------------------------------------------- pessoal, vou colocar aqui minha resposta (por mail) a um dos homens de preto: NomeX, ao meu ver, cocktailsort era a função mais importante! o resto é treinar programação. mas este curso é basicamente aprender os algoritmos de ordenação, busca e complexidade. e dai vcs vao la e copiam da wikipedia o core da materia?! nao é verdade q 90% dos alunos copiaram! pelo contrario! teve traalhos q fikei feliz em ver o codigo. dava pra ver q o aluno pensou e fez na raça. tem alunos q eu fico feliz em ter certeza q qdo terminarem a faculdade serão meus professores! tais alunos estão aqui para se dedicar.. pra mim, copiar da internet é querer dar um de esperto. isso me irrita! por quem é bom mesmo não precisa fazer as coisas de maneira "alternativa" pessoal, quero muito que vocês entendam isso logo no primeiro ano: quem tenta dar um de esperto na faculdade nunca terá a consciência limpa. reclamamos tanto dos nossos representantes políticos, mas se nós gostamos de dar um "jeitinho brasileiro", podemos criticar? comecemos nós a construir uma mentalidade de honestidade e dedicação. ---------------------------------------------------------------------------------------------------------------- Dúvidas, sugestões ou reclamações, entre em contato conosco através do atendimento online: pamela@icmc.usp.br ---------------------------------------------------------------------------------------------------- quem nao recebeu comentários, nao fique triste. leia comentários acima ---------------------------------------------------------------------------------------------------- 3165813 Comentário + Original e otimizado Comentário - Estranho ter errado função print. vc poderia me responder pq não colocou o espaço?! vc executou seu próprio código?! ou ele não é seu? fale comigo para validar sua nota. Sugestão 4546497 Comentário + Comentário - Funções de conjunto deveriam popular um vetor de resposta. Posso querer usar o conjunto resposta e nao imprimi-lo ne?! Verifique a corretude de sua função uniao. Sugestão Modulariade: concorda q a função recebe poderia ler apenas um vetor? Vc apenas chamaria 2 vezes a função. Pense como seria usar cocktail dentro de gerar conjunto. Há uma maneira mais eficiente de fazer as operações intersecção e diferença? (Pense em como vc conseguiu fazer uniao em O(n)) 4600045 Comentário + Comentário - Funções de conjunto deveriam popular um vetor de resposta. Posso querer usar o conjunto resposta e nao imprimi-lo ne?! Verifique a corretude de sua função uniao. Sugestão 5377257 Comentário + Comentário - Sugestão 5912542 Comentário + Originalidade Comentário - como assim sua união não funciona?! as outras duas operações estão ok. Por favor, entre em contato comigo. Sugestão Poderia ter feito funções menos específicas, mas mais otimizadas: há sempre um trade off entre generalidade e eficiência. Vc pensou em não ter um espaço em branco a mais no final de cada linha, mas não notou que deve ter um \n no final da diferença!! e pq tem .h?! como vc iria submeter no sqtpm? 6426600 Comentário + Comentário - getch?! biblioteca?! Primeiro de td é compilar ne?! Como assim vc usa malloc e nao sabe qual é a biblioteca?! (Só esqueci a raiva de ver mil warnings porque depois que rodei, desmaei) Se apenas inseri numero, como os conjuntos respotas podem ter letras?! E tem mais operações do que esperado?! (pq tem mais de 3 linhas) E nao tem a função gerarconjunto? (O professor colocou no pdf que exigia esta função.) Sugestão Faça os próximos trabalhos com mais carinho. Leia atentamente o formato de entrada e saída, e instruções do gerente de quais funções devem ser desenvolvidas. Isso é o mais básico em qq empresa: saber fazer o mínimo que te pedem com precisão. Se quiser ser usp, ai além de funcionar, deve ser eficiente e criativo. 6426722 Comentário + Comentário - vc nao atualiza inicio, seu cocktailsort não está seguindo o conceito.. isso é grave! pensar antes de programar.. é pra isso q estamos aqui. E memória, vc não pensou nada nela ne? próxima vez cuidado com estas coisas. Sugestão 6427059 Comentário + Comentário - Sugestão 6792109 Comentário + Comentário - E se eu quiser apenas união, o professor intersecção e o Paulo diferença?! temos que rodar tudo?! não gostei! veja com atenção o requisito modularidade. Como assim system("PAUSE")?! resposta: "sh: PAUSE: not found". Sabe o que é um system?! vc faz uma chamada de função!!!! retorna pro SO cuidar dessa doidera e depois retornar pro executável. Para que isso?! ainda sabendo que seria um corretor automático, óbvio que se usaria redirecionamento de entrada! Sugestão Esqueça o ruindows e IDEs para fazer os trabalhos de icc2. (vc se sentirá mais homem até o fim do semestre) 6792707 Comentário + Gostei da sua documentação. Está perto do ótimo! Comentário - E se os vetores pudessem ser de até 1000 elementos, mas em apenas 1% dos casos os conjuntos tivessem esta cardinalidade?! se antes de iniciar a leitura dos dados, vc sabe a qtde, pq declarar td o max possível?! Sugestão Observe as sugestões como fazer uma boa documentação interna. 6909564 Comentário + Simples e correto! Comentário - Como assim zero de documentação interna?! preste bem atenção como deve fazer isso. Sugestão pense mais em eficiência ta?! fazer certo é essencial, fazer bem é o diferencial. 7152267 Comentário + Comentário - Funções de conjunto deveriam popular um vetor de resposta. Posso querer usar o conjunto resposta e nao imprimi-lo ne?! Sugestão 7152308 Comentário + Comentário - Funções de conjunto deveriam popular um vetor de resposta. Posso querer usar o conjunto resposta e nao imprimi-lo ne?! Sugestão Pra que tanto comentário?! pense que um dia alguem que for utilizar seu código sabe programar. leia as instruções de documentação. 7152354 Comentário + Comentário - system(cls)? q falta de amor pela portabilidade. e pra q isso se vc sabe q se utilizaria redirecionamento de entrada e saida?! Sugestão 7152490 Comentário + Comentário - Sugestão se vc imprime o vetor resposta depois de cada operação, não é necessário criar um vetor para cada operação na função main ne? E no próximo, procura seguir o padrão de documentação interna, ok? 7152382 Comentário + Comentário - seu cocktailsort esta completamente errado! acessa posições de memória vetot[tam_vetor]. Sugestão Lição de icc1: pense nos limites dos vetores! e tb no conceito do algoritmo. antes de terminar o código, não pode ter restado nenhuma dúvida conceitual do q vc está implementando! 7152653 Comentário + Gostei muito da sua solução. Seus erros foram pequenos, veja o comentário aos ótimos alunos. Nos próximos trabalhos quero muito q vc tire 10. Comentário - Sugestão 7152740 Comentário + Comentário - Sugestão 7152761 Comentário + Comentário - Sugestão 7152761 Comentário + Gostei muito do seu trabalho, mas acho q vc teve muuuuito trabalho. se vc gosta de ponteiros, bom pra vc! coisa de homem ne! Comentário - Sugestão Mas não esqueça que no próximo trabalho eu considerarei errado funções que aglobam mais funções do que ela mesma (print da resposta deveria ser fora), e vc tem muito o que melhorar em documentação interna. 7152819 Comentário + idem ao comentário anterior. Parabens rs Comentário - Sugestão 7152872 Comentário + Comentário - Sugestão 7152886 Comentário + Comentário - vc só pode ter feito com má vontade. como assim não acertar nem os casos de testes que estavam na coteia?! pq não me procurou?! Sugestão 7152890 Comentário + Comentário - leia atentamente as sugestões. quero ver seu algoritmo mais eficiente nos próximos trabs, ok? e muito cuidado! seu segmentation fault neste trab simples me deixou muito triste, e sua nota merecia ser muito menor! Sugestão vc tem q decidir se quer usar: for(jfhdjhfgsd){ ou for(fhsdfgsj) { código fonte não é metamorfose! 7152980 Comentário + Comentário - Pensar em utilizar melhor processamento e memória da próxima vez, hein Sugestão 7153014 Comentário + Adorei aprender o swap sem var adicional! Comentário - Sugestão vc gosta de otimizar, na próxima quero ver algoritmos mais otimizados^^ (as vezes é melhor gastar mais linhas de código e ganhar alguma eficiência, principalmente, qdo isso tem um conceitual envolvido -- uniao e merge) 7153042 Comentário + Comentário - Sugestão 7153081 Comentário + Comentário - Sugestão Em alg avançado vc vai ser incentivada a gastar mais memória do que precisa. isto por que memória muitas vezes não é importante, mas principalmente, pq uma única execução do seu algoritmo será submetido a vários casos de teste. então vc pode declarar logo MAX e blz. Aqui não ok?! Pense em um sistema que não roda por falta de memória, por exemplo, meus modelos exatos (ainda bem, pois assim tenho o que fazer no mestrado). 7153118 Comentário + modularização: 10! documetação interna: 9.9 Comentário - caraca! o tamanho máximo era 30, vc foi logo declarando com 100. não pode tanto desperdício, onde está sua consciência ecológica?! rs Sugestão 7239072 Comentário + Comentário - Como assim vc errou o caso de teste 1? estava na coteia!!!! isso eu não entendo! Sugestão pode ficar mais light nos comentários blz? 7239090 Comentário + Comentário - Sugestão 7239131 Comentário + Comentário - não fez sentido vc passar a resposta do gerarconjunto para os vetores de entrada na função main. E 30 pode ser muito maior que max{n,m}, vc quis tanto pensar em memória, valores fixos não tendem a ser bons amigos nestas horas. Sugestão Documentação interna não é a mesma coisa que externa! não faça relatórios no código fonte! e pode ficar mais light nos comentários blz? 7239173 Comentário + Comentário - se eu fosse seu gerente, vc receberia uma advertência, como sou seu pae, o castigo é vc perder metade da nota de modularização. isso pq vc não leu com atenção o que a função gerarconjunto deveria fazer! Sugestão 7239221 Comentário + Comentário - Sugestão 7239242 Comentário + Comentário - Sugestão Quase tirei ponto de clareza, pois devido a tanto comentário fiquei perdida! 7239256 Comentário + Comentário - Sugestão 7239339 Comentário + Comentário - Erro conceitual grave!!! Se a cada iteração já sabemos que o k-esimo menor e maior elementos já estão na posição correta, para que continuar verificando tais posições?! Sugestão 7239364 e vc, entrem em contato comigo para validar a nota. 7239364 Comentário + Comentário - A menos de g e k, o cocktailsort seu esta == ao do aluno acima. na próxima colem direito. Sugestão 7239339 e vc, entrem em contato comigo para validar a nota. 7239405 Comentário + Boa documentação interna Comentário - Cuidado com suas chamadas de sistema. Próximos trabalhos posso definir ponto por portabilidade, pois eu amo padrões!!!!!!!!!! Sugestão 7239426 Comentário + Comentário - Sugestão Não há como saber qual editor vc usou, só dá pra saber que vc está contra mim. Vc sabe q vou corrigir seu fonte no vim, certo? na próxima vez não me deixe mal humorada, pq posso descontar ponto por endentação. 7277433 Comentário + Comentário - Sugestão 7277440 Comentário + Comentário - seu trabalho esta excessivamente parecido com o 7277687. Complicated. Sugestão 7277562 Comentário + Comentário - Sugestão 7277579 Comentário + Comentário - Sugestão 7277583 Comentário + Comentário - Teste melhor seu código. Não é normal errar metade dos casos de teste. vc pensou apenas em casos triviais. Da próxima vez pense bastante nas possibilidades. Vc vai ver q isso é essencial, é a diferença entre alguém que apenas programa e alguém que realmente sabe programar. Sugestão 7277652 Comentário + Comentário - Sugestão 7277666 Comentário + Comentário - Portabilidade e endentação zero! Cuidado! vc sabe q td é corrigido no linux. Sugestão 7277687 Comentário + Comentário - seu trabalho esta excessivamente parecido com o 7277440. Complicated. Sugestão 7277711 Comentário + Comentário - Sugestão 7277728 Comentário + Original :) Comentário - Muito comentário Sugestão 7295170 Comentário + Comentário - Sugestão Comentário + Comentário - Sugestão