iagoac / mc202 Goto Github PK
View Code? Open in Web Editor NEWDisciplina MC202 - Estruturas de Dados
License: GNU General Public License v3.0
Disciplina MC202 - Estruturas de Dados
License: GNU General Public License v3.0
Boa noite! Após horas tentando resolver diversos erros no meu código do LAB2, fiquei com uma dúvida referente a entrega dos LABs pelo sistema Susy. Como funciona o desconto de nota para laboratórios entregues com atraso? Ainda há como entregar? O desconto é total, automático?
Agradecido!
Boa noite,
Estou com dificuldades em utilizar de forma correta a função realloc() para aumentar o tamanho do vetor que contêm as informações de idade e contágio.
Minha ideia para resolver o lab é usar um vetor casos[]; cada posição se refere a idade, e os valores ao contágio, ou seja, casos[15] = 20 são 20 casos em indivíduos com 15 anos.
Estou usando o realloc sempre que a idade excede uma idade pré definida. E sempre que eu uso essa função defino o valor "0" como sendo o conteúdo dos novos endereços.
int ult_num = 5;
if (ult_num < y) {
casos = realloc(casos, (y * sizeof(int)) + 1);
//Limpa as novas posições
for (int i = ult_num + 1; i < y; i++){
casos[i] = 0;
}
//Guarda um novo valor da maior idade
ult_num = y;
}
O problema que eu to enfrentando é que tem vezes que o conteúdo do endereço não é "limpo", e é imprimido coisas como:
casos[85] = 18885022
Há outra maneira de realocar memória e ao mesmo tempo limpá-la?
@iagoac gostaria de saber se algum laboratório for entregue após a data limite se ainda vai ter aquele lance de ele valer no máximo 7, porém ainda poder entregar
oi estou com duvida no lab2 e preciso de ajuda, gostaria de saber se tem alguma monitoria. eu ja foi em uma mas a pessoa em questão não apareceu no dia.
Bom dia, tudo bem?
Com relação ao Lab 02, diz que X deve ser menor que Y, mas não é explicito o que deve acontecer caso Y seja maior que X. O que devo fazer nesse caso?
dentre os slides passados, até qual usamos como apoio para fazer essa primeira atividade?
Olá, estou inicializando meu vetor que guardará as informações como:
int *lista = NULL
depois alocando a memoria inicial de tamanho 5 assim (current_size é igual a 5):
lista = calloc(current_size, sizeof(int));
e logo na segunda linha do primeiro teste ("0 194 9") onde eu preciso dobrar o tamanho do array, eu faço da seguinte forma:
while (Y > current_size) { current_size = 2 * current_size; lista = realloc(lista, (current_size * sizeof(int))); }
no entanto olhando no gdb, ao executar a linha
lista = realloc(lista, (current_size * sizeof(int)));
eu recebo o seguinte erro:
não sei dizer em que parte do código eu errei, alguém pode me ajudar?
Bom dia! No lab 2 as funções adicionar e consultar precisam possuir exatamente dois parâmetros, X e Y, ou podem possuir mais?
@iagoac como funciona a nota do susy? A cada submissão feita diminui a nota, ou a nota é baseada só na ultima submissão e dessa forma se tem testes errados isso que tiraria a nota
O meu programa está dando certo para o primeiro teste mas para os outros não. Ele só está retornando a mensagem "[Program exited with exit code -11]". Posso colocar o me código aqui para alguém pelo menos me dar uma dica de qual seria o erro?
Gente, alguém poderia me passar o link de acesso para submissão do primeiro ex?
Boa noite professor, tudo bem?
Com relação ao Lab1, a matriz precisa ser alocada dinamicamente ou posso estabelecer um máximo para o tamanho? Outro questionamento, existe algum método específico que devo utilizar para separar os valores dados no input para uma linha da matriz (ex: "10 20 30") ou posso utilizar qualquer alternativa como as possíveis na biblioteca string.h?
Nos últimos dois labs (03 e 04), o comando make preparar_ambiente está baixando o pdf do lab 01 e não do lab correspondente.
Não lembro meu login e senha do Susy, última vez que usei foi em 2017, como posso recuperar esses dados?
Por favor, alguëm pode me passar o link do Susy para a turma D de MC202. Só encontrei das turma A B C e acredito ser bem diferente dos labs dessa turma.
Professor, como vai ficar a entrega dos laboratórios? Vão ter data?
Professor, faz muito tempo que não logava no susy. Não lembro minha senha, felizmente ela esta salva, mas não da para ver qual é, ela só acessa. No caso de o cookie ser limpo, qual o procedimento que devo tomar para recuperar essa senha???
Boa noite,
"Quantas linhas possuem uma soma com valor par", ficou vago essa explicação para mim, não consegue entender muito bem. É para contabilizar a quantidade de linhas que a soma de todos os elementos da linha tem que dar par? Precisa ter pelo menos uma soma par na linha dos elementos? Tem que ter apenas uma soma? Queria entender melhor que ficou um pouco vago para mim essa explicação
Boa noite professor!
Fiz o LAB02 e rodei no terminal do meu computador como os testes do susy e passei em todos os eles. No entanto, quando fui submeter o código no susy, apareceu uma mensagem de erro logo abaixo de cada teste:
Exemplo:
"Teste 05: erro de processamento
provavelmente memória corrompida (código 134)"
Poderia, por favor, me ajudar a solucionar esse problema?
Atenciosamente,
Igor
Olá,
Meu código apresenta dois problemas que não sei como solucionar.
for (k=0;k<5; k++)
armazena[k] = malloc(2* sizeof(int));
Alocação extra:
if( cont_linha +1 > cont) {
cont = 2*cont;
armazena = malloc(cont*sizeof(int *)); /*aloca o dobro de memoria caso precise*/
for (m=0; m<cont; m++)
armazena[m] = malloc(2* sizeof(int));
}
em que cont_linha é o contador de número de linhas da minha matriz iniciado em 0 e cont inicia em 5.
O erro que apresenta nos 3 últimos testes do Susy é: Tamanho máximo da pilha ou da memória dinâmica excedido, ou talvez apontador inválido (código 139).
O segundo é referente aos valores incorretos de saída. Alguns são corretos porém outros são nulos e outros errados. O que estou fazendo é varrer a matriz de casos e idade e guardar em uma variável o número de casos no range de idade da função consulta e imprimir esse valor e zerá-lo para a nova interação. Porém coloquei para imprimir a matriz armazenada a cada interação e descobri que ela preenche corretamente as linhas da função adicionar porém coloca zeros nas linhas correspondentes a função consultar, e não sei o porque, já que atribuo o valor na matriz apenas para a função adicionar, desta forma, dentro do laço principal:
if(operacao==0){ /* Operacao Adiciona*/
for(l=0;l<cont_linha;l++){ /* confere se a idade é repetida */
if(y==armazena[l][1])
armazena[l][0]=armazena[l][0] + x;
}
armazena[i][0] = x; /*casos de corona */
armazena[i][1] = y; /* idade */
}
else if (operacao==1){ /* Operacao Consulta */
/*printf("entrou\n");*/
x_c = x; /* inicio do intervalo de idade */
y_c = y; /* fim do intervalo de idade x<y */
for(j=0;j<cont_linha;j++){
if( armazena[j][1] >= x_c && armazena[j][1] <= y_c ) {
/*printf("%d\n", soma);*/
soma = soma + armazena[j][0];
}
}
printf("%d\n", soma);
soma = 0;
}
Não estou vendo o que está de errado. Qualquer ajuda será bem vinda.
Ela pode ser uma lista dupla circular? Ou ela deve ser apenas duplamente ligada?
Vamos supor a seguinte expressäo:
"
return NULL;
Professor, no resultado pedido pelo susy nos teste, creio que tenha algo errado. No teste 1, por exemplo:
5
95 21 93 86 96
29 67 33 4 76
47 34 77 45 82
38 67 3 19 48
9 48 1 96 70
só a ultima linha tem soma par, mas o resultado do susy diz que há 3 linhas com soma par.
você poderia verificar, por favor?
Bom dia,
É uma dúvida bem simples, mas que nao ficou claro no enunciado. Se X !< Y, é pra fazer o que?
Ignorar os valores mas contar uma iteracao, iterar de novo... ?
Teoricamente, é para estarmos em qual aula/ parte da matéria agora?
Há algo de errado com os valores de saída (itens 3 e 4) do laboratório 1 no susy. Por exemplo, teste 1 aberto:
5
95 21 93 86 96
29 67 33 4 76
47 34 77 45 82
38 67 3 19 48
9 48 1 96 70
item 3:
95 + 21 + 93 + 86 + 96 = 391
29 + 67 + 33 + 4 + 76 = 209
47 + 34 + 77 + 45 + 82 = 285
38 + 67 + 3 + 19 + 48 = 175
9 + 48 + 1 + 96 + 70 = 224
Portanto, têm apenas 1 linha com soma par e não 3.
item 4:
95+29+47+38+9 = 218
21+67+34+67+48 = 237
93+33+77+3+1 = 207
86+4+45+19+96 = 250
96+76+82+48+70 = 372
Portanto, têm apenas 3 linhas com soma impar e não 4.
Eu tenho algumas dúvidas:
tanto pelo makefile quanto pelo metodo manual de se gerar um arquivo "cliente", depois de já ter "bla.o", obtive o seguinte erro:
"
gcc cliente.o complexo.o -lm -o cliente
cliente.o: In function main': cliente.c:(.text+0x8a): undefined reference to
complexo_imprime'
cliente.c:(.text+0xa1): undefined reference to `complexo_absoluto'
collect2: error: ld returned 1 exit status
Makefile:4: recipe for target 'cliente' failed
make: *** [cliente] Error 1
"
creio que o arquivo näo está reconhecendo a pasta "complexo.h", visto que as funcoes que dao problemas sao desssa pasta.
O que posso fazer?
Atte,
No susy o título do Lab 3 está como Lab 2
O SuSy redireciona para
https://github.com/iagoac/mc202/blob/master/exercicios_laboratorio/Lab_1_202.pdf
mas a página não está disponível
Eu devo fechar uma issue que já foi respondida?
Aqui no repositório existe um arquivo contendo os testes abertos do Susy para serem usados com o script test.sh?
Tentei copiar do Susy e salvar o arquivo com a extensão .in e .res mas esta dando o erro:
root@eduardo-VirtualBox:/home/eduardo/Documentos/MC202/lab1# ./test.sh lab1 tests
--- begin of tests ---
--- in tests/arq01.in --- INCORRECT
<<<< diff result: >>>>
1c1
< ./test.sh, linha 58: 19967 Falha de segmentação (imagem do núcleo gravada) $cmd./"$program" >< $test_case328 253 3 4
\ Nenhum caractere de nova linha no final do arquivo--- end of tests ---
correct results (0):
incorrect results (1):
arq01.in
Quando eu digito uma matriz no arquivo funciona normalmente. Alguém sabe o que ocorre e pode me ajudar?
Ou tem os arquivos aqui no repositório para baixar e colocar na pasta <lab1/tests> dentro do diretório do projeto?
Fiz o lab1 e fui realizar os testes do Susy, aparetemente os arquivos de resposta estão como saída: (soma da diagonal principal) (soma da diagonal secundária) (número de colunas pares) (número de linhas ímpares). Alguém poderia conferir, por favor?
Está dando este erro no teste 3 quando rodo no meu computador mais quando tentei no susy está correto:
free(): double free detected in tcache 2 Aborted make: *** [Makefile:30: testar_programa] Error 134
No meu código tem a função free() depois de todo o procedimento, tenho que coloca-la durante o procedimento ou pode ser apenas no final mesmo?
Nos testes 4,6,7 apenas alguns valores estão dando errado no susy,
No teste 5 quando rodei no susy está dando erro de processamento
provavelmente memória corrompida (código 134).
Alguma ideia do problema no meu código?
Estou usando a função Realloc, tem algum problema?
Bom dia,
teve alguma atualização em como vai se dar prosseguimento na disciplina depois das resoluções liberadas pela reitoria?
Bom dia, uma dúvida quanto ao enunciado do lab 2.
Nas restrições, fala que a memória realocada deve duplicar a capacidade de memória anterior, mas não podemos só realocar a quantidade necessária de memória, de acordo com a idade da operação?
Descrição da duvida
Professor, qual a diferença de compilar usando o make, e compilar apenas o arquivo main?
Eu já submeti o código ao Susy e todos os testes deram corretos, porém eu esqueci de liberar o espaćo de memória alocado usando o comando free() ao final do programa.
Devo submeter novamente com essa modificação ou é desnecessário?
Nas aulas, foi mostrada a seguinte struct:
typedef struct No {
int dado;
struct No *prox;
} No;
typedef struct No * p_no;
Näo entendi completamente do porquê é necessário escrever outro typedef de struct No.
Qual seria a diferenca caso näo tivesse o 1° typedef?
No meu algorítimo, fiz a implementação de tal forma que inicialmente eu tenho uma variável apontando para lista (semelhante aos slides), mas mais para frente no código, eu abandono essa variável (deixo de usá-la, e dou o valor de NULL a ela), e passo a usar duas outras variáveis para rodar a lista.
Há algum problema com esse método, ou eu devo implementar que nem um tipo padrão, onde o ponto de acesso é um endereço constante (tipo um array)?
Boa noite! Estou com uma dúvida em relação à função realloc em meu código (linha 24
abaixo) na qual ele aloca o dobro da memória anterior, caso seja necessário. Meu código está funcionando corretamente até um limite máximo de 14 linhas de dados de entrada (portanto 42 elementos no vetor). Caso o usuário digite mais uma linha, o programa para durante o scanf e retorna o erro "Realloc () invalid next size".
Alguém poderia me auxiliar, por favor?
Obs: Caso eu defina o realloc para o triplo de memória anterior, não ocorre mais esse problema, mesmo com os últimos testes do susy.
Obrigado!
Obs 2: i inicia com valor 0 e j inicia com valor 4.
Testando o código do primeiro exemplo da aula 10
#include <stdlib.h>
#include <stdio.h>
typedef struct No {
int dado;
struct No *prox;
} No;
typedef struct No * p_no;
p_no criar_lista(){
return NULL;
}
void destruir_lista(p_no lista){
if (lista != NULL){
destruir_lista(lista -> prox);
free (lista);
}
}
p_no adicionar_elemento(p_no lista, int x){
p_no novo;
novo = malloc(sizeof(No));
novo -> dado = x;
novo -> prox = lista;
return novo;
}
void imprime(p_no lista){
p_no atual;
for(atual = lista; atual != NULL; atual = atual -> dado)
printf("%d \n", atual -> dado);
}
int main() {
int num;
p_no lista;
lista = criar_lista();
do {
scanf("%d", &num);
if (num > 0)
lista = adicionar_elemento(lista,num);
} while (num > 0);
imprime(lista);
return 0;
}
Apareceu a mensagem:
main.c: In function 'imprime':
main.c:32:45: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
for(atual = lista; atual != NULL; atual = atual -> dado)
^
O que fazer para corrigir esse problema?
Teria como nesse e nos próximos labs disponibilizar um único arquivo <.zip> contendo todos os testes abertos (<.in> e <.res>)? Facilitaria muito, especialmente para labs mais complexos, na hora de testar antes de submeter para o Susy.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.