Ir ao conteúdo
  • Cadastre-se

Vinicius78

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

1
  1. Bom dia, alguém poderia me dar uma luz de como faço a busca em uma arvores, de valores menores que um determinado numero e somar quantos desses valores tem, por exemplo: A arvores possui os números 5 6 7 10 e o usuário digita 8, a função deve procurar todos os numero menores que 8 e retornar a quantidade deles que nesse caso seria 3. Meu código ae * 3) Implemente um método árvore que indique quantos elementos da árvore são menores do que um determinado valor. Você deve ler um determinado valor e contar quantos são menores que ele (5 pts). */ //DEFININDO OS PONTEIROS PARA ARVORES typedef struct no { int v; struct no *esq, *dir; } no; no* inserir (no *raiz, int valor){ //DEFININDO O NO PAI(PRIMEIRO NO) if(raiz == NULL){ no *novo = (no*) malloc (sizeof(no)); novo->v = valor; novo->dir = NULL; novo->esq = NULL; raiz = novo; }else{//DEFININDO OS NOS FILHOS(NOS APOS O PRIMEIRO NO) if(valor == raiz->v){ printf("\n VALOR JÀ INSERIDO\n"); system("pause"); } if(valor > raiz->v){ raiz->dir = inserir(raiz->dir,valor);//FUNÇÂO RECURSIVA PARA INSERIR A DIREITA } if(valor < raiz->v){ raiz->esq = inserir(raiz->esq,valor);//FUNÇÂO RECURSIVA PARA INSERIR A ESQUERDA } } return(raiz); } //CONTAR OS NUMEROS MENORES int count_value(no *raiz, int number,int flag){ no *aux = (no*) malloc (sizeof(no)); aux = raiz; if(raiz != NULL) { if(number>aux->v){ flag++; } count_value(aux->dir,number,flag); count_value(aux->esq,number,flag); } return (flag); return flag; } int main() { no *raiz = (no*) malloc(sizeof(no)); int flag =0,valor = 0,op = 0; raiz = NULL; do{ system("cls"); printf("\n SELECIONE A OPCAO DESEJADA: "); printf("\n 1 - INSERIR"); printf("\n 2 - PROCURAR NUMEROS MENORES"); printf("\n 3 - SAIR\n"); scanf("%d",&op); switch(op){ case 1:{ printf("\n INFORME O VALOR: "); scanf("%d",&valor); raiz = inserir(raiz,valor); break; } case 2: { printf("\n INFORME O VALOR: "); scanf("%d",&valor); flag = count_value(raiz,valor,flag); printf("%d\n",flag); system("pause"); break; } case 3:{ printf("\nENCERRANDO"); op = 3; break; } } }while(op != 3); printf("\n"); return 0; }
  2. Alguem poderia me mostrar como eu transformo o código abaixo da lista duplamente encadeada em uma lista duplamente encadeada circular? main.c #include <stdio.h> #include <stdlib.h> #include "lista.h" void menu(){ lista *l=(lista*)malloc(sizeof(lista)); create_lista(l); int op; //opção recursiva do{ system("cls"); printf("\n lista: "); mostra_lista(l); printf("\n\n"); printf("1 - Inserir inicio lista \n"); printf("2 - Inserir fim lista \n"); printf("3 - Remover inicio Lista \n"); printf("4 - Remover fim Lista \n"); printf("5 - Sair \n"); printf("\n\n Informe a opcao :>_"); scanf("%d",&op); switch(op){ case 1:{ int x; printf("Informe o valor: "); scanf("%d",&x); inserir_ini_lista(l,x); break; } case 2:{ int x; printf("Informe o valor: "); scanf("%d",&x); inserir_fim_lista(l,x); break; } case 3:{ remove_ini_lista(l); break; } case 4:{ remove_fim_lista(l); break; } case 5: op=5; } }while(op != 5); } int main() { menu(); printf("\n\n"); return 0; } lista.h #ifndef LISTA_H_INCLUDED #define LISTA_H_INCLUDED typedef struct no{ int dado; struct no *prox; //ponteiro do próximo struct no *ant; //ponteiro do anterior }no; typedef struct lista{ no *inicio; no *fim; }lista; void create_lista(lista *l); int lista_vazia(lista *l); void inserir_ini_lista(lista *l, int valor); void inserir_fim_lista(lista *l, int valor); int remove_ini_lista(lista *l); int remove_fim_lista(lista *l); void mostra_lista(lista *l); #endif // LISTA_H_INCLUDED lista.c #include <stdio.h> #include <stdlib.h> #include "lista.h" void create_lista(lista *l){ l->inicio = NULL; l->fim = NULL; } int lista_vazia(lista *l){ if(l->inicio ==NULL){ return 1; }else{ return 0; } } void inserir_ini_lista(lista *l, int valor){ //criar um novo nó no *novo=(no*)malloc(sizeof(no)); novo->dado = valor; novo->prox =NULL; novo->ant =NULL; if(l->fim ==NULL){ //Primeiro no lista l->inicio = novo; l->fim = novo; }else{ l->fim->ant = novo; novo->prox =l->inicio; l->inicio = novo; } novo->ant = l->fim; } void inserir_fim_lista(lista *l, int valor){ //criar novo no no *novo=(no*)malloc(sizeof(no)); novo->dado = valor; novo->prox = NULL; novo->ant = NULL; if(l->inicio == NULL){ //Primeira vez no lista l->inicio = novo; l->fim = novo; }else{ l->fim->prox = novo; novo->ant = l->fim; l->fim = novo; //ajusta o ponteiro fim } l->fim->prox = l->inicio; } int remove_ini_lista(lista *l){ int y; //aux no *aux =(no*)malloc(sizeof(no)); if(lista_vazia(l)==1){ printf("Nao e possivel remover ----"); printf("Lista Vazia!! \n"); free(aux); return 0; }else{ if(l->inicio == l->fim){ //só tenho um no na lista aux=l->inicio; y =aux->dado; l->fim = NULL; l->inicio = NULL; free(aux); }else{ aux=l->inicio; y=aux->dado; l->inicio = l->inicio->prox; //ou l->inicio= aux->prox aux->prox =NULL; l->inicio->ant = l->fim; free(aux); } } return y; } void mostra_lista(lista *l){ if(lista_vazia(l)){ printf("Lista vazia!!!"); }else{ no *aux=(no*)malloc(sizeof(no)); aux=l->inicio; while(aux!=NULL){ printf("| %d",aux->dado); aux=aux->prox; //incrementa o ponteiro } free(aux); } } int remove_fim_lista(lista *l){ no *aux=(no*)malloc(sizeof(no)); //ponteiro auxiliar int y; if(lista_vazia(l)){//se so tem um unico nó aux=l->fim; //aponta para o nó final y =aux->dado; //passa o valor da struc para a variável l->fim=NULL; l->inicio=NULL; free(aux); return y; }else{ aux = l->fim; y=aux->dado; l->fim = aux->ant; //passa o final para o anterior l->fim->prox = l->inicio; //desconect ao final aux->ant =NULL; free(aux); //free último elemento return y; } }
  3. Como faço para acessar uma lista dentro de uma classe no dart? Código a baixo: Main.dart import 'dart:io'; import 'SRC/membro.dart'; import 'SRC/projeto.dart'; import 'SRC/tarefa.dart'; void main(List<String> arguments) { List<Membro> membro = []; String nm; String ct; String ap; List<String> h = []; int c = 0; int c2 = 0; int opc = 0; while (opc != 9) { print("---- BEM VINDO ----"); print("DIGITE A OPÇÂO DESEJADA MEU REI"); print("1 - CADASTRAR NOVO MEMBRO"); print("2 - CADASTRAR PROGETO"); print("3 - CADASTRAR TAREFA"); print("4 - MOSTRAR MEMBROS CADASTRADOs"); print("5 - MOSTRAR PROGETOS CADASTRADOs"); print("6 - MOSTRAR TAREFAS CADASTRADAS"); print("7 - PROGETO COM MAIOR PRAZO DE DURAÇÂO"); print("8 - PESQUISAR PROGETO"); print("9 - FINALIZAR"); opc = int.parse(stdin.readLineSync()); if (opc == 1) { print("CADASTRO DE MEMBRO"); print("NOME: "); nm = stdin.readLineSync(); print("APELIDO: "); ap = stdin.readLineSync(); print("TELEFONE: "); ct = stdin.readLineSync(); c = 0; while (c != 1) { print("Digite 0 para adicionar habilidade e 1 para sair"); c = int.parse(stdin.readLineSync()); if (c == 0) { print("HABILIDADES: "); h.add(stdin.readLineSync()); } else { c = 1; } } membro.add(Membro(nm, ap, ct, h)); for (Membro m in membro) { print(m); } } else if (opc == 2) {} } } Membro.dart import 'dart:io'; class Membro extends Object { String nome; String apelido; String contato; List<String> tec_do; Membro(this.nome, this.apelido, this.contato, this.tec_do); @override String toString() { return "membro | Nome: $nome, Apelido: $apelido, Contao: $contato, Habilidades: $tec_do"; } }
  4. @arfneto Muito obrigado eu realmente não tinha prestado atenção, passei para estrutura de dados faz pouco tempo, ainda estou aprendendo, no caso o que poderia substituir pelo conio.h?
  5. Pessoal, alguém poderia me ajudar a entender o por que de meu código estar dando esses erros, verifiquei e tenho quase certeza que fechei todos os parênteses. main.c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <locale.h> #include "fila.h" int main() { srand(time(NULL));//FUNÇÂO PARA NÂO REPEtIR A FILA setlocale(LC_ALL, "Portuguese");//FUNÇÂO PARA ACEITAR OS CARACTERES DO PORTUGUES int opc=0, e; pilha *p = (pilha*) malloc(sizeof(pilha)); fila *f = (fila*) malloc(sizeof (fila)); creatfila(f);//CRIANDO FILA creatpilha(p);//CrIANDO ILHA //CHAMANDO MENUS DE OPÇÔES while(opc != 3) { system("cls"); mostra(f, p); printf("\n----ESCOLHA A OPÇÂO DESEJADA----"); printf("\n1-ENFILERA"); printf("\n2-EMPILHA"); printf("\n3-FINALIZAR"); scanf("%d",&opc); switch (opc){ case 1:{//ENFILEIRANDO e = rand() % 1000; //DEFININDO UM NUMERO ALEATORIO PARA FILA printf("\n|%d|",e); enfilera(f, e); system("pause"); break; } case 2:{//EMPILHANDO if(f->ini == NULL)//CASO NÂO HAJA NENHUM VALOR NA FIlA { printf("\nPOR VAFOR INSIRA UM VALOR A FILA PARA DEPOIS EMPILHAR"); } else{ e = desenfilera(f); printf("\nO valor |%d| será adicionado a pilha\n",e); system("pause"); empilha(p,e); } break; } case 3:{//ENCERRANDO opc =3; printf("\nENCERRANDO"); break; } } } printf("\n"); return 0; } fila.h #ifndef FILA_H_INCLUDED #define FILA_H_INCLUDED //DEFININDO PILHA typedef struct Tpilha{ int item; struct Tpilha *ant; }Tpilha; typedef struct pilha{ Tpilha *topo; }pilha; //DEFININDO FILA typedef struct Tfila{ int dado; struct Tfila *prox; }Tfila; typedef struct fila{ Tfila *ini; Tfila *fim; }fila; //FUNÇÔES PARA LIDAR COM A PILHA void creatpilha(pilha *p); int pilha_vazia(pilha *p); void empilha (pilha *p,int e); //FUNÇÔES PARA LIDAR COM A FILA int fila_vazia(fila *f); void creatfila(fila *f); void enfilera (fila *f, int e); int desenfilera (fila *f); void mostra(fila *f, pilha *p) #endif // FILA_H_INCLUDED fila.c #include <stdio.h> #include <stdlib.h> #include "fila.h" //INICIALIZANDO PILHA COM NULL void creatpilha(pilha *p) { p->topo=NULL; } //INICIALIZANDO FILA COM NULL void creatfila(fila *f) { f->ini = NULL; f->fim = NULL; } //VERIFICANDO SE A PILHA ESTÀ VAZIA int pilha_vazia(pilha *p) { if(p->topo == NULL) return 1; else return 0; } //VERIFICANDO SE A FILA ESTÀ VAZIA int fila_vazia(fila *f) { if(f->ini == NULL) return 1; else return 0; } //EMPILHANDO VAOR DA FILA void empilha (pilha *p,int e) { Tpilha *novo = (Tpilha*) malloc(sizeof(Tpilha)); novo->ant = p->topo; novo->item = e; p->topo =novo; } //ENFILEIRANDO VALOR ALEATORIO void enfilera (fila *f, int e) { Tfila *novo = (Tfila*) malloc(sizeof(Tfila)); novo->dado = e; novo->prox = NULL; if(fila_vazia(f) == 1) { f->ini = novo; f->fim= novo; } else{ f->fim->prox = novo; f->fim= novo; } } //DESENFILEIRANDO PARA JOGAR NA PILHA int desenfilera(fila f) { int valor; Tfila *aux = (Tfila*) malloc(sizeof(Tfila)); aux = f->ini; valor = aux->dado; f->ini= aux->prox; aux->prox=NULL; if(f->ini==NULL) { f->fim = NULL; free(aux); } else free(aux); return valor; } //MOSTRANDO A FILA E A PILHA void mostra(fila *f, pilha *p) { //FILA printf("\n"); Tfila *aux = (Tfila*)malloc(sizeof(Tfila)); aux = f->ini; while(aux != NULL) { printf("| %d ",aux->dado); aux=aux->prox; } //PILHA printf("\n"); Tpilha *auxp=(Tpilha*)malloc(sizeof(Tpilha)); auxp=p->topo; while(auxp!=NULL){ printf("%d \n",auxp->item); auxp=auxp->ant; } } main.c e fila.c estão na pasta sources e o arquivo fila.h esta na pasta headhers
  6. @arfneto Muito obrigado pelas dicas o problema foi resolvido, esse é somente um código para responder um trabalho em c, utilizei variáveis menores para economizar tempo, antes de entregar irei fazer os comentários em cada parte do código, a partir de agora quando nomear uma struct utilizarei a primeira letra maiúscula, na linha 47 havia esquecido de colocar o \n, ainda irei corrigir a amostragem do programa na tela só não o fiz ainda porque estava tentando resolver esse problema que alias você foi de grande ajuda tinha esquecido completamente do strcpy.
  7. Pessoal, alguém poderia me ajudar a entender o porque do meu código estar sando pau nas linhas 34,35,37? Segue o código a baixo /* 2) Escreva uma função que recebe uma pilha p1 e os dados dos alunos (nome, rua, idade, sexo). Você deve inserir os dados na pilha seguindo os parâmetros da Struct. Lembre-se das aulas de ponteiros e como serão inseridos os dados dentro da pilha. VINICIUS GABRIEL DATA 15/04/2020 */ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct aluno{ char nm[40]; char rua[40]; int idade; char sx[10]; }aluno; typedef struct Tpilha{ struct aluno item; struct Tpilha *ant; }Tpilha; typedef struct pilha{ Tpilha *t; }pilha; void creatpilha (pilha *p){ p->t = NULL; } void empilha (pilha *p,aluno e) { Tpilha *novo =(Tpilha*)malloc(sizeof(Tpilha)); novo->item.nm=e.nm; novo->item.rua=e.rua; novo->item.idade=e.idade; novo->item.sx=e.sx; novo->ant=p->t; p->t=novo; } void mostra_pilha(pilha *p){ Tpilha *aux = (Tpilha*)malloc(sizeof(Tpilha)); aux=p->t; while(aux!=NULL){ printf("\nNome: %s",aux->item.nm); printf("\nRua: %s",aux->item.rua); printf("\Idade: %d",aux->item.idade); printf("\nSexo: %s",aux->item.sx); aux=aux->ant; } } int main() { int i=5; pilha *p = (pilha*)malloc(sizeof(pilha)); aluno e; creatpilha(p); while(i!=0) { printf("\nDigite a opção desejada"); printf("\n1-Empilhar"); printf("\n2-Mostrar pilha"); printf("\n3-Sair\n"); scanf("%d", &i); switch(i){ case 1:{ printf("\nDigite o nome: "); fflush(stdin); gets(&e.nm); printf("\nDigite a rua: "); fflush(stdin); gets(&e.rua); printf("%s",e.rua); printf("\nDigite o sexo(F ou M): "); fflush(stdin); gets(&e.sx); printf("\nDigite a idade: "); fflush(stdin); scanf("%d",&e.idade); empilha(p,e); break; } case 2:{ mostra_pilha(p); break; } case 3:{ i =0; break; } } } printf("\n"); return 0; }

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!