Ir ao conteúdo
  • Cadastre-se

Gabriel_Moro

Membro Pleno
  • Posts

    102
  • Cadastrado em

  • Última visita

Tudo que Gabriel_Moro postou

  1. pelo que vi na descrição deseja-se saber as detalhes das operações
  2. vi esse exemplo e achei bem pobre void insereNodo(struct nodoArv * atual, struct nodoArv * novo) { if (novo->info < atual->info) { if (atual->esq == NULL) { atual->esq = novo; atual->esq->pai = atual; //seta o pai } else insereNodo(atual->esq, novo); } else { if (atual->dir == NULL) { atual->dir = novo; atual->dir->pai = atual; } else insereNodo(atual->dir, novo); } } void insere(int dado) { struct nodoArv * novo; novo = (struct nodoArv *) malloc(sizeof(elemento)); novo->info = dado; novo->esq = NULL; novo->dir = NULL; novo->pai = NULL; if (raiz == NULL) raiz = novo; else insereNodo(raiz, novo); } te passei um exemplo de inserção tente implementar funções para mostrar in-order pre-order e pos-order utilize sempre recurção
  3. implemente usando recurção, se torna mais simples
  4. https://www.youtube.com/watch?v=iLvpaqAoVD8&amp;list=PL8iN9FQ7_jt7LwqmdiyhVVu2J4jQQ9uRW como esta seu entendimento dos conceitos básicos de árvores? no papel consegue construir uma árvore, e fazer operações do tipo remover, mostrar pre-ordem - pós-ordem - in-ordem?
  5. fale suas duvidas... a disciplina é estrutura de dados? suas duvidas são só em árvores?
  6. dica: todo numero primo depois do 2 não é par
  7. assim tu esta pegando o soma maior pela coluna primeiro toda coluna 0 mat[c][0] depois mat[c][1] o l tem a coluna com a maior soma também esta atualizando certo Soma Do Numero |189| na posição 1
  8. printf("Digite cpf: "); fflush(stdin); gets(cpf); geralmente assim resolve senão tu pode usar scanf("%s",cpf) também
  9. for(i=0;i<2;i++){ for(j=0;j<2;j++){ if(mat[i][j]<0){ negativo=mat[i][j]+negativo;//soma os negativos da linha i } } printf("|%i|",negativo);//mostra a soma da linha i if(verifica o maior negativo < negativo){//tem q iniciar o maior negativo com um numero menor negativo possivel troca maior negativo } negativo=0;//zera para somar da proxima linha }
  10. tu quer saber qual é maior número negativo? if(mat[i][j]<0){ negativo=mat[i][j]-negativo; printf("|%i|",negativo); } assim tu esta subtraindo os números negativos (-1-(-1)=0) maior=maior+mat[i][j]; if(maior > *tr){ *lin=i; *tr=maior; } ou tu quer fazer algo parecido com isso?
  11. printf("Digite o numero do assento desejado: "); fflush(stdin); scanf("%d", &ncadeira); precisa limpar o buffer ->fflush(stdin) assim tu esta mostrando um caractere %c -> assim uma string ("%s ", nomeptc) nomeptc é um vetor acho que tu quer uma matriz
  12. tu suprimiu esse if então as atualizações lin e tr não são validas
  13. inverte essas 2 linhas verifica as { do teu código
  14. for(i=0; i<55; i++) { cadeiras[i] = i+1; status[i]=0; } o erro é causado por falta de inicialização do vetor cadeiras
  15. o código tem case repetido tente organizar o código em funções, facilita o entendimento, a identificação de erros e deixa ele mais estruturado
  16. #include <stdio.h> #include <stdlib.h> void menorvalor(int vet[][2]){ int lin,col,menor = vet[0][0]; for(lin=0;lin<2;lin++){ for(col=0;col<2;col++){ if(vet[lin][col]<menor){ menor = vet[lin][col]; } } } printf("%i",menor); } int main(){ int var[2][2],linha,coluna; for(linha=0;linha<2;linha++){ for(coluna=0;coluna<2;coluna++){ printf("Digite o valor da posicao de linha :%i coluna : %i\n\n",linha,coluna); scanf("%i",&var[linha][coluna]); } } menorvalor(var); } o código tinha uma referencia incompleta da matriz, faltava um ; e tinha } a mais e na função menorvalor tu não entendeu muito bem menor = vet[0][0]; //inicia menor com um valor possível existente na matriz for(int i=0;i<2;i++) for(int j=0;j<2;j++) if(vet[j]<menor) troca
  17. variáveis não podem ter o mesmo nome de funções e menor deve ser iniciado menor = vet[0][0] //primeiro valor da matriz
  18. L*linhas*C essa formula funciona para matrizes quadradas 75X75 é uma matriz quadrada 57*75+22 = 4297 (contando com o 0) -> +1 contando sem o 0
  19. int main() { ListaFREQ l; cria_listaFREQ(&l); insere_listaFREQ(&l, 22); impressao_listaFREQ_CRESC(l); insere_listaFREQ(&l, 10); insere_listaFREQ(&l, 8); insere_listaFREQ(&l, 33); impressao_listaFREQ_CRESC(l); impressao_listaFREQ_DECRESC(l); return 0; } void cria_listaFREQ(ListaFREQ *l) { l->ini = NULL; l->fim = NULL; } int esta_vazia_listaFREQ(ListaFREQ l) { return l.ini == NULL ? 1 : 0; } void insere_listaFREQ(ListaFREQ *l, elem x) { No_LFREQ *p = (No_LFREQ*)malloc(sizeof(No_LFREQ)); p->info = x; p->prox = NULL; p->ant = NULL; if (l->ini == NULL){ p->prox= p; p->ant = p; l->ini = p; l->fim = p; }else { p->prox = l->ini; l->ini->ant = p; p->ant = l->fim; l->ini = p; } } void impressao_listaFREQ_DECRESC(ListaFREQ l) { No_LFREQ *aux = l.fim; if(l.ini == NULL) return; while (aux != l.ini) { printf("%d ", aux->info); aux = aux->ant; } printf("%d ", aux->info); printf("\n"); } void impressao_listaFREQ_CRESC(ListaFREQ l) { No_LFREQ *aux = l.ini; if(l.ini == NULL) return; while (aux != l.fim) { printf("%d ", aux->info); aux = aux->prox; } printf("%d ", aux->info); printf("\n"); } tinha apontamentos errados na inserção
  20. Gabriel_Moro

    C criar fila em c

    #include <stdio.h> #include <stdlib.h> #define LIM 10 void inserir(int n, int *inicio, int *fim, int fila[], int *q){ if(*q == LIM){ printf("Fila cheia\n"); return; } fila[*fim] = n; *fim = (*fim + 1) % LIM; (*q)++; } int retirar(int *inicio, int *fim, int fila[], int *q){ int n; if (*q==0){ printf("Fila vazia\n"); return; } n = fila[*inicio]; *inicio = (*inicio + 1) % LIM; (*q)--; return n; } void listar(int inicio, int fim, int fila[], int q){ if (q==0){ printf("Fila vazia\n"); return; } for (int i = inicio, j = 0; j<q; i = (i + 1) % LIM, j++){ printf("%d, ", fila[i]); } printf("\n"); } int main(){ int inicio = 0, fim = 0, q = 0; int *fila=(int*)malloc(LIM*sizeof(int)); listar(inicio, fim, fila, q); inserir(1, &inicio, &fim, fila, &q); inserir(2, &inicio, &fim, fila, &q); inserir(3, &inicio, &fim, fila, &q); inserir(4, &inicio, &fim, fila, &q); inserir(5, &inicio, &fim, fila, &q); inserir(6, &inicio, &fim, fila, &q); inserir(7, &inicio, &fim, fila, &q); inserir(8, &inicio, &fim, fila, &q); inserir(9, &inicio, &fim, fila, &q); inserir(10, &inicio, &fim, fila, &q); inserir(11, &inicio, &fim, fila, &q); listar(inicio, fim, fila, q); printf("Retirado %d\n", retirar(&inicio, &fim, fila, &q)); printf("Retirado %d\n", retirar(&inicio, &fim, fila, &q)); printf("Retirado %d\n", retirar(&inicio, &fim, fila, &q)); inserir(11, &inicio, &fim, fila, &q); listar(inicio, fim, fila, q); return 0; } assim é mais simples a unica coisa importante que tu realmente deve entender disso é como o código utiliza o resto da divisão *inicio = (*inicio + 1) % LIM; *fim = (*fim + 1) % LIM; LIM = 5; 0%LIM = 0; 1%LIM = 1; 2%LIM = 2; 3%LIM = 3; 4%LIM = 4; 5%LIM = 0; // como tu esta utilizando uma fila em vetor, tu deve entender que ela tem um comportamento circular

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