Ir ao conteúdo

Junior Conceição

Membro Júnior
  • Posts

    18
  • Cadastrado em

  • Última visita

Tudo que Junior Conceição postou

  1. @Luiz Gouvea Cara, não entendi muito bem esse jeito que você falou. Como eu coloco o link pro método desse jeito?
  2. Estou tendo um problema ao adicionar um botão para excluir dados de um sistema. Tudo funciona perfeitamente, menos esse botão. Se eu tiro ele do código a página carrega normalmente, mas quando eu coloco, mostra uma página de erro. O 'EC' no código, são as iniciais de uma classe que controla o sistema, já o 'deletarConvidado' é o método a ser executado quando o botão for clicado, porém não há nada de errado neles por dois motivos: 1. a página toda não carrega, mesmo sem o botão ter sido clicado, só pelo fato de estar lá. 2. eu criei um botão da mesma forma em outra página html do mesmo projeto e ele funcionou normalmente. Anexei um pdf com o erro que dá na página. <!DOCTYPE html> <html xmlns:th="http://thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <head> <title>EventosApp</title> <!--Import Google Icon Font--> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/> <!--Import materialize.css--> <link type="text/css" rel="stylesheet" href="materialize/css/materialize.min.css" media="screen,projection"/> <!--Let browser know website is optimized for mobile--> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <link rel="stylesheet" href="styles/style.css"/> </head> <body> <header> <nav> <div class="nav-wrapper"> <a href="#" class="brand-logo">Evento</a> <ul id="nav-mobile" class="right hide-on-med-and-down"> <li><a href="/eventos" class="waves-effect waves-light btn"><i class="material-icons left">dehaze</i>Lista de Eventos</a></li> </ul> </div> </nav> </header> <h3></h3> <div th:each="evento : ${evento}" class="container detalhesEvento"> <h5>Detalhes do Evento</h5> <div class="row"> <p>Nome: <span th:text="${evento.nome}"></span></p> <p>Local: <span th:text="${evento.local}"></span></p> <p>Data: <span th:text="${evento.data}"></span></p> <p>Horário: <span th:text="${evento.horario}"></span></p> </div> </div> <th:block th:include="MensagemValidacao"></th:block> <div class="container formConvidado"> <form method="post" th:object="${convidado}"> Nome: <input type="text" value="" name="nomeConvidado"/> RG: <input type="text" value="" name="rg"/> <button class="waves-effect waves-light btn" type="submit">Adicionar</button> </form> </div> <table class="container tabelaConvidado"> <thead> <tr> <th>Nome do Convidado</th> <th>Rg</th> <th>Deletar</th> </tr> </thead> <tbody> <tr th:each="convidado : ${convidados}"> <td><span th:text="${convidado.nomeConvidado}"></span></td> <td><span th:text="${convidado.rg}"></span></td> <!--O erro ocorre na linha abaixo: --> <td><a class="waves-effect waves-light btn-small" th:href="${(#mvc.url('EC#deletarConvidado').arg(0, convidado.rg)).build()}"><i class="material-icons left">delete</i></a></td> </tr> </tbody> </table> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="materialize/js/materialize.min.js"></script> </body> </html> localhost_8080_11.pdf
  3. cara, tem muita coisa errada no código. vamos lá: isso não serve pra nada, pode tirar: x== main(a); na main, você tá declarando y como int e atribuindo o valor da função verif a ele, mas a função é do tipo float, então y tem que ser um float também. o parametro que você usa na função deve ser o mesmo na lógica, portanto, se: float verif(float a){ então: if (a >= 0) id = 1; else id = 0; lembrando que dentro do IF e ELSE você usa atribuição: "=" e não igualdade: "==". Na main você tá colocando o id como parâmetro da função verif, mas o parâmetro tem que ser o número que você digitou, logo: y = verif(a); corrija isso aí e veja se funciona.
  4. Estou fazendo um programa simples que simula um labirinto, e preciso checar quando a minha "peça" está na posição da matriz que é a saída do labirinto. Porém, quando eu tento checar, por exemplo, se a peça está na posição matriz[linha, coluna+1], se essa posição não existir o programa retorna: IndexOutOfRangeException. Alguém sabe uma forma de checar se ainda há movimentos possíveis sem cair nessa exceção?
  5. Por padrão, uma matriz em C# começa pela posição (0,0), então se ela for uma matriz 5x8 por exemplo, ela vai da linha 0 até a 4 e da coluna 0 até a 7, certo? Eu queria saber se tem um jeito de fazer ela começar pelo 1, porque eu preciso imprimir a posição de um elemento, e na resposta esse elemento está na posição (4,1), mas na minha matriz está na (3,0), mesmo as matrizes estando iguais. Alguém sabe como fazer isso?
  6. esses ; depois da condição do IF nao deveriam estar aí, o certo é: if (condição) { comandos; } e você está colocando: if (condição); { } além disso tem dois ; no printf da condição if (idade < 11) e você deve usar idade <= 11, senão o programa vai ignorar o 11
  7. Cara, ao invés de colocar a imagem, copie e cole o código no post, fica mais fácil de te ajudar. Primeiro, você ta comparando soma com maior, mas o maior não tem valor nenhum, você nem sequer iniciou ele, então você tem que colocar o maior como o valor que você quer comparar entre os times pra ver qual é o melhor. Ex: Pvit = vit * 3; Pemp = emp * 1; Pder = der * 0; soma = Pvit + Pemp + Pder; maior = soma; Daí você compara os outros com esse maior. E outra coisa, no final você colocou soma = maior_ponto e time = time_campeao, sendo que as variáveis time_campeao e maior_ponto não tem valor nenhum, então tem que ser ao contrário: maior_ponto = soma e time_campeao = time, para atribuir o valor de soma a maior_ponto e de time a time_campeao, e assim imprimir o que você quer no final. Espero ter ajudado.
  8. @Lucca Rodrigues o problema é esse getchar(), é desnecessário. Tirei ele e funcionou normalmente no meu codeblocks.
  9. sem o código fica difícil saber, mas pode ser o local onde você colocou o comando, pode ser que não tenha nada pra limpar ainda nesse local, por isso não dá pra ver o resultado
  10. @arfneto sim, se eu inserir inteiros na árvore ao invés da estrutura, ele exibe normalmente. Você diz se eu tirar as variáveis de dentro da estrutura Node e colocar uma variável (void*)? Dessa forma pode funcionar?
  11. Pessoal, estou tendo problemas para exibir dados de um funcionário cadastrado numa árvore AVL, consigo exibir se a árvore tiver apenas inteiros, mas se for uma árvore de estruturas o programa não exibe os dados, alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #define tam 0 typedef struct Funcionario{ char nome[50]; int id; int idade; struct Funcionario *prox; struct Funcionario *ant; } func; typedef struct fil{ int id; func *prim; func *ult; } Fila; struct Node{ int key; char nome[50]; int idade; struct Node *left; struct Node *right; int height; }; Fila *fila; int id_avl = 0; //inicializa fila void iniciafila(){ fila = (Fila *) malloc(sizeof(Fila)); fila->prim = NULL; fila->ult = NULL; } //libera fila void liberafila(){ free(fila); } int height(struct Node *N) { if (N == NULL) return 0; return N->height; } int max(int a, int b) { return (a > b)? a : b; } struct Node* newNode(func *f){ struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->key = f->id; strcpy(node->nome, f->nome); node->idade = f->idade; node->left = NULL; node->right = NULL; node->height = 1; return(node); } struct Node *rightRotate(struct Node *y) { struct Node *x = y->left; struct Node *T2 = x->right; x->right = y; y->left = T2; y->height = max(height(y->left), height(y->right))+1; x->height = max(height(x->left), height(x->right))+1; return x; } struct Node *leftRotate(struct Node *x) { struct Node *y = x->right; struct Node *T2 = y->left; y->left = x; x->right = T2; x->height = max(height(x->left), height(x->right))+1; y->height = max(height(y->left), height(y->right))+1; return y; } int getBalance(struct Node *N) { if (N == NULL) return 0; return height(N->left) - height(N->right); } struct Node* insert(struct Node* node, func *f) { int key = f->id; if (node == NULL) return(newNode(f)); if (key < node->key) node->left = insert(node->left, f); else if (key > node->key) node->right = insert(node->right, f); else return node; node->height = 1 + max(height(node->left), height(node->right)); int balance = getBalance(node); if (balance > 1 && key < node->left->key) return rightRotate(node); if (balance < -1 && key > node->right->key) return leftRotate(node); if (balance > 1 && key > node->left->key){ node->left = leftRotate(node->left); return rightRotate(node); } if (balance < -1 && key < node->right->key){ node->right = rightRotate(node->right); return leftRotate(node); } return node; } void preOrder(struct Node *root){ if(root != NULL){ printf("Id: %d\n", root->key); printf("Nome: "); puts(root->nome); printf("Idade: %d\n", root->idade); preOrder(root->left); preOrder(root->right); } } //fila de funcionarios void enfileira(func *f){ fila->id++; if (fila->prim == NULL){ fila->prim = f; fila->ult = f; }else{ fila->ult->prox = f; f->ant = fila->ult; fila->ult = f; fila->ult->prox = fila->prim; } } //insere funcionário func *novofunc(char *nome, int idade){ id_avl++; func *f = (func *)malloc(sizeof(func)); strcpy(f->nome, nome); f->idade = idade; f->prox = NULL; f->ant = NULL; f->id = id_avl; return f; } //rotacionar fila de funcionarios void rotacionaFila(){ func *aux = fila->prim; if (aux->prox != NULL){ fila->prim = fila->prim->prox; fila->prim->ant = NULL; fila->ult->prox = aux; aux->ant = fila->ult; aux->prox = fila->prim; fila->ult = aux; }else return; } void menu(){ printf("Escolha uma opcao:\n"); printf("1. Cadastrar funcionario\n"); printf("2. Exibir Funcionários\n"); } int main(){ int opcao, idade; char nome[50]; iniciafila(); struct Node *raiz = NULL; menu(); while (opcao != 0){ scanf("%d", &opcao); switch (opcao){ case 1: printf("Digite o nome do funcionario que deseja cadastrar:\n"); setbuf(stdin, NULL); scanf("%s", nome); printf("Digite a idade:\n"); scanf("%d", &idade); enfileira(novofunc(nome, idade)); insert(raiz, novofunc(nome, idade)); break; case 2: printf("\nArvore AVL - Pré Ordem:\n"); preOrder(raiz); break; default: break; } } liberafila(); return 0; }
  12. Galera, preciso fazer um simulador de estacionamento utilizando estrutura de pilha para estacionar os carros e fila para armazenar os funcionários, só que no código o número de carros nunca sai de zero, não importa quantos carros eu adicione, e quando tento mudar alguma coisa na variável que recebe o número de carros, eu obtenho um Segmentation Fault (Core dumped). O código completo é bem grande, por isso separei apenas essa parte: #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Funcionario { char nome[50]; int id; int idade; struct Funcionario *prox; struct Funcionario *ant; } func; typedef struct Carro { char placa[7]; struct Carro *prox; } carro; typedef struct pi { int capacidade; carro *ult; } Pilha; typedef struct fila { int id; func *prim; func *ult; } Fila; Fila *fila; Pilha *pilha; int funcid = 0; //inicializa pilha de carros Pilha *iniciapilha(){ Pilha *nova_pilha; nova_pilha = (Pilha *)malloc(sizeof(Pilha)); nova_pilha->ult = NULL; return nova_pilha; } //libera pilha void liberapilha(){ carro *temp1 = pilha->ult; while (temp1 != NULL){ carro *temp2 = temp1->prox; free(temp1); temp1 = temp2; } free(pilha); } //inicializa fila void iniciafila(){ fila = (Fila *)malloc(sizeof(Fila)); } //libera fila void liberafila(){ func *temp1 = fila->prim; while (temp1 != NULL){ func *temp2 = temp1->prox; free(temp1); temp1 = temp2; } free(fila); } //fila de funcionarios void enfileira(func *f){ fila = (Fila *)malloc(sizeof(Fila)); fila->id++; if (fila->prim == NULL){ fila->prim = f; fila->ult = f; }else{ fila->ult->prox = f; f->ant = fila->ult; fila->ult = f; fila->ult->prox = fila->prim; }} //insere funcionário func *novofunc(char *nome, int idade){ funcid++; func *f = (func *)malloc(sizeof(func)); strcpy(f->nome, nome); f->idade = idade; f->prox = NULL; f->ant = NULL; f->id = funcid; return f; } //insere carro carro *novocarro(char *placa){ carro *car = (carro *)malloc(sizeof(carro)); strcpy(car->placa, placa); car->prox = NULL; return car; } //rotacionar fila de funcionarios void rotacionaFila(){ func *aux = fila->prim; if (aux->prox != NULL){ fila->prim = fila->prim->prox; fila->prim->ant = NULL; fila->ult->prox = aux; aux->ant = fila->ult; aux->prox = fila->prim; fila->ult = aux; }else return; } //chamar funcionário char chamarFuncionario(){ if (fila->prim == NULL){ printf("Nenhum funcionário cadastrado!\n"); return 0; }else{ char nome[50]; strcpy(nome, fila->prim->nome); rotacionaFila(); puts(nome); } return 0; } void push(carro *car, Pilha *nova_pilha){ if (nova_pilha == NULL) { nova_pilha->capacidade++; if (nova_pilha->ult == NULL){ nova_pilha->ult = car; } else { carro *aux = nova_pilha->ult; nova_pilha->ult = car; car->prox = aux; } } else { if (nova_pilha->ult == NULL) nova_pilha->ult = car; else { carro *aux = nova_pilha->ult; nova_pilha->ult = car; car->prox = aux; } } printf("Funcionário "); chamarFuncionario(); printf("colocou o carro "); puts(car->placa); printf("Total de carros no estacionamento: %d\n", nova_pilha->capacidade); } int main(){ int opcao, idade; char nome[50], placa[7]; iniciafila(); iniciapilha(); printf("Escolha uma opcao:\n"); printf("1. Cadastrar funcionario\n"); printf("2. Estacionar carro\n"); while (opcao != 0){ scanf("%d", &opcao); switch (opcao){ case 1: printf("Digite o nome do funcionario que deseja cadastrar:\n"); setbuf(stdin, NULL); scanf("%s", nome); printf("Digite a idade:\n"); scanf("%d", &idade); enfileira(novofunc(nome, idade)); break; case 2: printf("Digite a placa do carro que deseja estacionar:\n"); scanf("%s", placa); push(novocarro(placa), iniciapilha()); break; default: break; } } liberafila(); liberapilha(); return 0; }
  13. Galera to fazendo um código pra uma disciplina de Estruturas de Dados, e ta dando uns problemas, o código completo ficou muito grande, então eu separei uma parte pra ter uma ideia do problema. Não dá nenhum erro na hora de compilar, mas quando eu executo, ele pede os valores de entrada e logo em seguida o programa para de funcionar. #include <stdio.h> #include <stdlib.h> typedef struct Funcionario{ char nome[50]; int id; int idade; struct Funcionario *prox; struct Funcionario *ant; } func; typedef struct filar{ int id; func *prim; func *ult; } Fila; Fila *fila; int id; void iniciafila(){ fila = (Fila *) malloc(sizeof(Fila)); } func *novofunc(char nome[50], int idade){ id++; func *f = (func *) malloc(sizeof(func)); f->nome[50] = nome[50]; f->idade = idade; f->prox = NULL; f->ant = NULL; f->id = id; return f; } void enfileira(func *f){ fila->id++; if (fila->prim == NULL){ fila->prim = f; fila->ult = f; } else{ fila->ult->prox = f; f->ant = fila->ult; fila->ult = f; fila->ult->prox = fila->prim; } } //libera fila void liberafila(){ func* temp1 = fila->prim; while(temp1 != NULL){ func* temp2 = temp1->prox; free(temp1); temp1 = temp2; } free(fila); } int main(){ iniciafila(); char nome[50]; int idade; printf("Insira o nome do funcionario:\n"); scanf("%s", nome); printf("Insira a idade do funcionario:\n"); scanf("%d", &idade); enfileira(novofunc(nome, idade)); liberafila(); return 0; }
  14. é só você iniciar a matriz normalmente e depois pedir pro usuário digitar o valor de N. int n; int matrix[n][n]; scanf("%d", &n);
  15. @allanxd Muito obrigado cara, ajudou mesmo!
  16. Galera, estou com um problema que quando vou ler um valor na opção 1 na função main, ele entra em loop e fica lendo vários valores que eu digito, ao invés de continuar o código normalmente, alguém sabe dizer o que pode ser? Nesse mesmo código, também estou tendo um problema ao ler a string na função novofunc, sempre dá o erro segmentation fault (core dumped). Podem haver outros erros no código mas é porque ainda não revisei ele completamente, queria saber como resolver esses primeiro. Desde já agradeço. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Funcionario{ char nome[50]; int idfunc; struct Funcionario *prox; } func; typedef struct Carro{ int idcarro; struct Carro *prox; } carro; carro *head; func *prim; //criar pilha de carros void criapilha(){ head = malloc(sizeof(carro)); head->prox = NULL; } //criar lista de funcionários void crialista(){ prim = malloc(sizeof(func)); prim->prox = NULL; } //conta quantos funcionários estão cadastrados int contafunc(){ func *aux; int cont = 0; for(aux = prim; aux != NULL; aux++) cont++; return cont; } //conta quantos carros estão cadastrados int contacarros(){ carro *aux; int cont = 0; for (aux = head; aux != NULL; aux++) cont++; return cont; } //compara id dos funcionários int comparafunc(int id){ int i, num; func *p; p = prim; num = contafunc(); for(i = 0; i < num; i++){ if (id == p->idfunc) return 1; p = p->prox; } return 0; } //insere funcionário void novofunc(){ func *novo; novo = malloc(sizeof(func)); char nome[50]; int idf; int c = comparafunc(idf); printf("Digite o nome do funcionário\n"); fgets(nome, 50, stdin); printf("Digite o id do funcionário\n"); scanf("%d", &idf); if (c == 1) printf("Funcionário já cadastrado!\n"); else{ novo->idfunc = idf; novo->prox = prim->prox; prim->prox = novo; } } //remove funcionario void removefunc(){ func *p; p = prim->prox; prim->prox = p->prox; free(p); } //compara id dos carros int compara(int id){ int i, num; carro *p; p = head; num = contacarros(); for(i = 0; i < num; i++){ if (id == p->idcarro) return 1; p=p->prox; } return 0; } //insere carro void push(int idc){ carro *novo; novo = malloc(sizeof(carro)); novo->idcarro = idc; novo->prox = head->prox; head->prox = novo; } //exibir carros estacionados void exibecarros(){ carro *p = head; if (p->prox == NULL) printf("Estacionamento vazio\n"); else{ printf("Os carros estacionados são:\n"); while(p){ printf("\nCarro %d", p->idcarro); p = p->prox; } } } //Exibe funcionários void exibefunc(){ func *p = prim; if (p->prox == NULL) printf("Nenhum funcionário cadastrado\n"); else while(p){ printf("\nNome: %s\nId: %d\n", p->nome, p->idfunc); p = p->prox; } } //remove carro int pop(int id){ int i, num, a; num = contacarros(); carro *p; int c = compara(id); for(i = 0; i < num; i++){ if (c == 1){ p = head->prox; a = p->idcarro; head->prox = p->prox; free(p); return a; } } return 0; } int main(){ int opcao, idc; criapilha(); printf("Entre com a opção desejada:\n"); printf("1. Adicionar carro\n"); printf("2. Retirar carro\n"); printf("3. Mostrar carros estacionados\n"); printf("4. Cadastrar funcionário\n"); printf("5. Remover funcionário\n"); printf("6. Mostrar funcionários\n"); scanf("%d", &opcao); switch(opcao){ case 1: printf("Qual o id do carro que deseja estacionar?\n"); scanf("%d", &idc); if (compara(idc) == 1) printf("ID já existe!"); else{ push(idc); printf("Carro estacionado!\n"); } printf("Total de carros: "); contacarros(); break; case 2: printf("Qual o id do carro que deseja retirar?\n"); scanf("%d", &idc); pop(idc); break; case 3: exibecarros(); printf("\n"); break; case 4: novofunc(); break; case 5: removefunc(); break; case 6: exibefunc(); break; default: printf("Opção inválida!"); } return 0; }
  17. @Flávio Pedroza Certinho, muito obrigado!
  18. E ai galera, preciso fazer um pequeno editor de texto, que deve parar quando o usuário digitar determinada tecla, só que não consigo fazer isso funcionar, alguém pode me dar uma ajuda? #include <stdio.h> #include <stdlib.h> int notepad(){ int i, j, aux, l, c; char **txt; printf("Digite o número de linhas e colunas\n"); scanf("%d%d", &i, &j); //aloca as linhas txt = (char **) calloc(i, sizeof(char *)); //aloca colunas for (aux = 0; aux < i; aux++) txt[aux] = (char *) calloc(j, sizeof(char)); //leitura da matriz printf("Escreva qualquer coisa.\nPara interromper, digite '!' e dê enter.\n"); do{ for(l = 0; l < i; l++) for(c = 0; c < j; c++) scanf("%c", &txt[l][c]); }while (txt[l][c] != '!'); //exibe matriz for(int l = 0; l < i; l++) for(int c = 0; c < j; c++) printf("%c", txt[l][c]); //liberar memória alocada for(aux = 0; aux < l; aux++) free(txt[aux]); free(txt); return 0; } int main(){ notepad(); return 0; } Esse é o código, ele funciona só até a parte de escrever o texto, mas o ponto de parada não funciona.

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