Ir para conteúdo
Fórum Script Brasil

renan_j

Membros
  • Total de itens

    9
  • Registro em

  • Última visita

Sobre renan_j

renan_j's Achievements

0

Reputação

  1. Pessoal, estou implementando uma Lista Circular Dinâmica (com lista ligada). As minhas funções de inicializar a fila e enfileirar (enque) estão Ok. O problema é quando eu fiz uma função teste, que possui o objetivo de mudar o endereço da Lista. Acontece que ele não muda. Alguém consegue me dizer o porque? typedef struct reg{ int content; struct reg *next; }cell; cell* init_queue(int y){ cell* NEW; NEW = malloc(sizeof(cell)); NEW->content = y; NEW->next = NEW; return NEW; } int empty_queue(cell* p){ return(p == NULL); } int enque(cell* p, int y){ cell* NEW = malloc(sizeof(cell)); NEW -> content = y; if(p == NULL){ p = NEW; NEW->next = NEW; return 1; } NEW->next = p; cell* ULT; ULT = p; while(ULT->next != p){ ULT = ULT->next; } p = NEW; ULT->next = p; return 1; } void teste(cell* p){ p = p->next; printf("P CONTENT = %d\n", p->content); } int main () { cell* lista; lista = init_queue(10); enque(lista, 20); printf("1 = %d\n", lista->content); teste(lista); printf("1 = %d\n", lista->content); } As outputs do programa são: 1 = 10 P CONTENT = 20 1 = 10 No meu entendimento, o segundo printf deveria dar os 20!!
  2. Oi Aristoteles, Obrigado pela resposta. Vou testar o seu código. Eu revi minha lógica e consegui chegar em um consenso. O "5" foi apenas para testar o código, mas é só mudar os parâmetros. O teste pode ser feito com uma matriz completa, que não aceita repetição. #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int M[5][5], i,j,k,z,aux = 1; srand(time(NULL)); for(i=0;i<5;i++){ for(j=0;j<5;j++){ aux = 1; M[i][j] = rand() % 100; for(k=0;k<5;k++){ for(z=0;z<5;z++){ if((i == k && j == z) || (((k*5)+z) > ((i*5)+j))){ aux = 1; } else if(M[i][j] == M[k][z]){ aux = 0; break; } } if(aux == 0){ j = j -1; break; } } } } printf("Matriz Completa:\n"); for(i=0;i<5;i++){ for(j=0;j<5;j++){ printf("%d\t", M[i][j]); } printf("\n"); } return 0; }
  3. Eu acredito, vangodp! O que não acredito é o meu mac querendo me trollar >-<... Obrigado pela sua ajuda!!
  4. Oi pessoal, boa tarde. Fiz um código para o problema abaixo, mas parece que minha lógica está com algum furo. Já revisei, e não entendo o porque ainda tenho números repetidos. Alguém consegue me dar uma força? Obrigado!! A lógica que eu pensei do código é a seguinte: Eu preencho um campo da matriz, com "i" e "j" e comparo com os anteriores, com "k" e "z". Caso este campo que acabei de preencher seja igual a um campo anterior, eu volto uma posição e começo o FOR novamente. Para isso, eu utilizei 4 variáveis i,j,k,z & um "aux" que serve como minha condicional para parada. Importante: Eu fiz o código com uma matriz 4x4 para testá-lo. Depois vou replicar para uma matriz 99x99. Segue o problema: Faça um programa para gerar automaticamente números entre 0 e 99 de uma cartela de bingo. Sabendo que cada cartela deverá conter 5 linhas e 5 números, gere estes dados de modo a não ter números repetidos dentro da cartela. Segue o Código: #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int M[4][4], i,j,k,z, aux = 0; srand(time(NULL)); for(i=0;i<4;i++){ for(j=0;j<4;j++){ aux = 0; M[i][j] = 1+ rand() % 16; for(k = i; k >= 0; k--){ if(aux == 1){ j = j - 1; break; } for(z = j; z >= 0; z--){ if((M[k][z] == M[i][j] && k != i && z != j)){ aux = 1; break; } } } } } printf("\n\n\n\n"); for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("%d\t", M[i][j]); } printf("\n"); } return 0; }
  5. Obrigado pela resposta, Vangop. Na verdade, eu achei que os copiadores atualmente não exigiam o cast, mas sempre o farei a partir de agora. Infelizmente, mesmo fazendo o cast, ainda não deu certo. O que mais pode ser? Obrigado!! #include <stdio.h> #include <stdlib.h> int main () { int *temp, n; int *v = (int*)malloc(2 * sizeof(int)); v[0] = 0; v[1] = 1; printf("Digite o n: "); scanf("%d", &n); printf("%d, %d,", v[0], v[1]); for(int i = 2; i > 1; i++){ temp = (int*) realloc(v, (i+1) * sizeof(int)); if( temp != NULL){ v[i] = (v[i-1] + v[i-2]); printf("%d,", v[i]); if(v[i] >= n){ i = 0; } } else { printf("Error allocating memory\n"); return 1; } } printf("\n"); return 0; }
  6. Boa tarde, pessoal! Já li diversas coisas a respeito de Alocação Dinâmica com realloc e mesmo assim não consigo entender o porque meu código não estar dando certo. O meu objetivo fazer uma alocação dinâmica de um vetor com a relloc. Eu aloquei ele no inicio do código e a medida que preciso de mais espaço usei um laço (FOR) para ir alocando cada bloco. O programa é o seguinte: "Leia um número positivo do usuário, então, calcule e imprima a sequencia de Fibonacci até o primeiro número superior lido. Exemplo: se o usuário informou o número 30, a sequência a ser impressa será 0 0 1 2 3 4 8 13 21 34. O meu código funciona com números menores. Por exemplo, quando digito "10", ele vai até o 13. Tudo Ok. MacBook-Pro-de-Renan:Lista_3 renan$ ./PD_L_3_44.out Digite o n: 10 0, 1, 1,2,3,5,8,13, Mas quando digito "30", ele quebra com a seguinte mensagem: MacBook-Pro-de-Renan:Lista_3 renan$ ./PD_L_3_44.out Digite o n: 30 0, 1, PD_L_3_44.out(2696,0x7fff782be000) malloc: *** error for object 0x7fbada401390: pointer being realloc'd was not allocated *** set a breakpoint in malloc_error_break to debug 1,2,3,5,8,13,21,Abort trap: 6 Alguém consegue me ajudar o porque dá esse problema? #include <stdio.h> #include <stdlib.h> int main () { int *temp, n; int *v = malloc(2 * sizeof(int)); v[0] = 0; v[1] = 1; printf("Digite o n: "); scanf("%d", &n); printf("%d, %d,", v[0], v[1]); for(int i = 2; i > 1; i++){ temp = realloc(v, (i+1) * sizeof(int)); if( temp != NULL){ v[i] = (v[i-1] + v[i-2]); printf("%d,", v[i]); if(v[i] >= n){ i = 0; } } else { printf("Erro na Alocação da Memória\n"); return 1; } } free(v); printf("\n"); return 0; } Muito obrigado!!
  7. Cara, eu fiz as modificações que você falou mas não o motivo qd coloco "Dia[COLCHETES i COLCHETES]" aqui ele dá pau, só aparece "Dia"aqui no site... Eu arrumei no código mas tive que colocar um espaço para não sumir (NÃO PODE COPIAR E COLAR O CÓDIGO sem arrumar este espaço)... Aqui no site ficou assim, exemplo: "Dia[ i]" Enfim, fiz todas as modificações que você falou em relação ao ponteiro e referenciais ao dia com o i... Mas continua dando o erro de saída...
  8. ****Mudei um pouco o printf para ficar fácil de ver a saída!!! ..........CÓDIGO 1 (OK).......... # include <stdlib.h> # include <stdio.h> int main () { int dia[30]; dia[0] = 11; dia[1] = 23; dia[2] = 54; dia[3] = 77; dia[4] = 13; dia[5] = 2; dia[6] = 26; dia[7] = 8999992; dia[8] = 40; dia[9] = 218; dia[10] = 2319; dia[11] = 3438; dia[12] = 99995; dia[13] = 3; dia[14] = 23; dia[15] = 23; dia[16] = 23; dia[17] = 23; dia[18] = 23; dia[19] = 23; dia[20] = 23; dia[21] = 23; dia[22] = 23; dia[23] = 23; dia[24] = 23; dia[25] = 23; dia[26] = 23; dia[27] = 23; dia[28] = 23; dia[29] = 23; for (int i = 0; i < 30; i++){ printf("%d_%d",i, dia[ i]); } int i =0; int qtd_venda = 0; int dia_venda = 0; printf("\n\ni: %d\n", i); printf("qtd_venda: %d\n", qtd_venda); printf("dia_venda: %d\n\n\n", dia_venda); for (int i; i < 30; i++){ if (dia[ i] > qtd_venda){ dia_venda = (i + 1); qtd_venda = dia[ i]; } } printf("O dia de maior venda foi o %d, com a quantidade de %d\n", dia_venda, qtd_venda); return 0; } ..........CÓDIGO 2 (PROBLEMA).......... # include <stdlib.h> # include <stdio.h> int main () { int dia[26]; dia[0] = 11; dia[1] = 23; dia[2] = 54; dia[3] = 77; dia[4] = 13; dia[5] = 2; dia[6] = 26; dia[7] = 8999992; dia[8] = 40; dia[9] = 218; dia[10] = 2319; dia[11] = 3438; dia[12] = 99995; dia[13] = 3; dia[14] = 23; dia[15] = 23; dia[16] = 23; dia[17] = 23; dia[18] = 23; dia[19] = 23; dia[20] = 23; dia[21] = 23; dia[22] = 23; dia[23] = 23; dia[24] = 23; dia[25] = 23; for (int i = 0; i < 26; i++){ printf("%d_%d", i, dia[ i]); } int i =0; int qtd_venda = 0; int dia_venda = 0; printf("\n\ni: %d\n", i); printf("qtd_venda: %d\n", qtd_venda); printf("dia_venda: %d\n\n\n", dia_venda); for (int i; i < 26; i++){ if (dia[ i]> qtd_venda){ dia_venda = (i + 1); qtd_venda = dia[ i]; } } printf("O dia de maior venda foi o %d, com a quantidade de %d\n", dia_venda, qtd_venda); return 0; } ====================================================== ====================================================== SAÍDA DO 1 CÓDIGO: 0_11 1_23 2_54 3_77 4_13 5_2 6_26 7_8999992 8_40 9_218 10_2319 11_3438 12_99995 13_3 14_23 15_23 16_23 17_23 18_23 19_23 20_23 21_23 22_23 23_23 24_23 25_23 26_23 27_23 28_23 29_23 i: 0 qtd_venda: 0 dia_venda: 0 O dia de maior venda foi o 8, com a quantidade de 8999992 SAÍDA DO 2 CÓDIGO: 0_11 1_23 2_54 3_77 4_13 5_2 6_26 7_8999992 8_40 9_218 10_2319 11_3438 12_99995 13_3 14_23 15_23 16_23 17_23 18_23 19_23 20_23 21_23 22_23 23_23 24_23 25_23 i: 0 qtd_venda: 0 dia_venda: 0 O dia de maior venda foi o 0, com a quantidade de 0 ====================================================== ====================================================== Obrigado!!!
  9. Pessoal, fiz um código com a informação de vendas de uma loja, no período de 30 dias. O código varre todos os valores e imprime o i) DIA e ii) Maior QTD desse período. A dúvida: - quando eu altero de 30 para 29 dias, o código roda normalmente; - quando eu altero de 29 para 28 dias, o código roda normalmente; - quando eu altero de 28 para 27 dias, o código roda normalmente; - quando eu altero de 27 para 26 dias, o código roda normalmente; - quando eu altero de 26 para 25 dias, o código tem um PROBLEMA na SAIDA! No 1 caso (com 30 dias) ele mostra a seguinte saída: i: 0 qtd_venda: 0 dia_venda: 0 O dia de maior venda foi o 8, com a quantidade de 8999992 No 2 caso (com 25 dias) ele mostra a seguinte saída: i: 0 qtd_venda: 0 dia_venda: 0 O dia de maior venda foi o 32767, com a quantidade de 0 Tentei rodar diversas vezes para encontrar a resposta mas não achei. Parece ser alguma coisa em relação e memória. Eu até mandei imprimir os valores para saber o que acontece quando eu altero de 26 pata 25 e na variável "dia_venda"aparece o valor 32767 (nos anteriores aparecia 0!). Alguém consegue me ajudar nessa? -------------------- CÓDIGO 1 (OK)-------------------- # include <stdlib.h> # include <stdio.h> int main () { int dia[30]; dia[0] = 11; dia[1] = 23; dia[2] = 54; dia[3] = 77; dia[4] = 13; dia[5] = 2; dia[6] = 26; dia[7] = 8999992; dia[8] = 40; dia[9] = 218; dia[10] = 2319; dia[11] = 3438; dia[12] = 99995; dia[13] = 3; dia[14] = 23; dia[15] = 23; dia[16] = 23; dia[17] = 23; dia[18] = 23; dia[19] = 23; dia[20] = 23; dia[21] = 23; dia[22] = 23; dia[23] = 23; dia[24] = 23; dia[25] = 23; dia[26] = 23; dia[27] = 23; dia[28] = 23; dia[29] = 23; for (int i = 0; i < 30; i++){ printf("%d_", dia); } int i =0; int qtd_venda = 0; int dia_venda; printf("\n\ni: %d\n", i); printf("qtd_venda: %d\n", qtd_venda); printf("dia_venda: %d\n\n\n", dia_venda); for (int i; i < 30; i++){ if (dia > qtd_venda){ dia_venda = (i + 1); qtd_venda = dia; } } printf("O dia de maior venda foi o %d, com a quantidade de %d\n", dia_venda, qtd_venda); return 0; } -------------------- CÓDIGO 2 (PROBLEMA)-------------------- # include <stdlib.h> # include <stdio.h> int main () { int dia[25]; dia[0] = 11; dia[1] = 23; dia[2] = 54; dia[3] = 77; dia[4] = 13; dia[5] = 2; dia[6] = 26; dia[7] = 8999992; dia[8] = 40; dia[9] = 218; dia[10] = 2319; dia[11] = 3438; dia[12] = 99995; dia[13] = 3; dia[14] = 23; dia[15] = 23; dia[16] = 23; dia[17] = 23; dia[18] = 23; dia[19] = 23; dia[20] = 23; dia[21] = 23; dia[22] = 23; dia[23] = 23; dia[24] = 23; for (int i = 0; i < 25; i++){ printf("%d_", dia); } int i =0; int qtd_venda = 0; int dia_venda; printf("\n\ni: %d\n", i); printf("qtd_venda: %d\n", qtd_venda); printf("dia_venda: %d\n\n\n", dia_venda); for (int i; i < 25; i++){ if (dia > qtd_venda){ dia_venda = (i + 1); qtd_venda = dia; } } printf("O dia de maior venda foi o %d, com a quantidade de %d\n", dia_venda, qtd_venda); return 0; }
×
×
  • Criar Novo...