Ir ao conteúdo

donutLukke

Membro Pleno
  • Posts

    23
  • Cadastrado em

  • Última visita

Tudo que donutLukke postou

  1. Boa noite pessoal! Estou tentando rodar uma aplicação Maven no Eclipse IDE for Enterprise Java and Web Developers, mas o resultado que aparece na interface gráfica não condiz com o que é mostrado no site do PrimeFaces. Tem esse código .xhtml: <h:form> <h:panelGrid id="grid" cellpadding="5" columns="2" style="margin-bottom:10px"> <f:facet name="header"> <p:messages id="msgs" /> </f:facet> <p:outputLabel for="firstname" value="Firstname:" /> <p:inputText id="firstname" value="#{userView.firstname}" /> <p:outputLabel for="surname" value="Surname:" /> <p:inputText id="surname" value="#{userView.lastname}" required="true" requiredMessage="Surname is required." /> </h:panelGrid> <h:panelGrid columns="6" cellpadding="5"> <p:commandButton value="All" id="btnAll" process="@all" update="grid" action="#{userView.save}" /> <p:commandButton value="Form" id="btnForm" process="@form" update="grid" action="#{userView.save}" /> <p:commandButton value="This" id="btnThis" process="@this" update="grid" action="#{userView.save}" /> <p:commandButton value="None" id="btnNone" process="@none" update="grid" action="#{userView.save}" /> <p:commandButton value="Parent" id="btnParent" process="@parent" update="grid" action="#{userView.save}" /> <p:commandButton value="This Surname" id="btnSurname" process="@this,surname" update="grid" action="#{userView.save}" /> </h:panelGrid> </h:form> E esse código Java: @Named @RequestScoped public class UserView { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public void save() { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Welcome " + firstname + " " + lastname)); } } Quando apertasse o botão "All", o desejável seria que aparecesse isso na tela: Mas o meu não aparece nada quando aperto: Estou usando esse código no arquivo process.xhtml: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> </h:head> <body> <h:form> <h:panelGrid id="grid" cellpadding="5" columns="2" style="margin-bottom:10px"> <f:facet name="header"> <p:messages id="msgs" /> </f:facet> <p:outputLabel for="firstname" value="Firstname:" /> <p:inputText id="firstname" value="#{userView.firstname}" /> <p:outputLabel for="surname" value="Surname:" /> <p:inputText id="surname" value="#{userView.lastname}" required="true" requiredMessage="Surname is required." /> </h:panelGrid> <h:panelGrid columns="6" cellpadding="5"> <p:commandButton value="All" id="btnAll" process="@all" update="grid" action="#{userView.save}" /> <p:commandButton value="Form" id="btnForm" process="@form" update="grid" action="#{userView.save}" /> <p:commandButton value="This" id="btnThis" process="@this" update="grid" action="#{userView.save}" /> <p:commandButton value="None" id="btnNone" process="@none" update="grid" action="#{userView.save}" /> <p:commandButton value="Parent" id="btnParent" process="@parent" update="grid" action="#{userView.save}" /> <p:commandButton value="This Surname" id="btnSurname" process="@this,surname" update="grid" action="#{userView.save}" /> </h:panelGrid> </h:form> </body> </html> E esse no UserView.java: import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.context.FacesContext; @RequestScoped @ManagedBean(name = "userView") public class UserView { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public void save() { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Welcome " + firstname + " " + lastname)); } } O que poderia estar errado para não aparecer a mensagem de "Surname is required."? Tenho essas dependências no meu projeto: Site do PrimeFaces com o componente que estou tentando utilizar: PrimeFaces Showcase
  2. Muito obrigado amigo, excelente ajuda.
  3. Mas como seria feito isso? Eu baixaria a versão antiga na minha máquina e já poderia abrir o arquivo HTML? Ou tenho que baixar também esse "Appletviewer" mencionado por você? Tenho a versão do Java 20 instalada, teria que desinstalá-la para rodar o applet?
  4. Desculpa por não ter colocado o link, foi daqui: https://www.grc.nasa.gov/www/k-12/VirtualAero/BottleRocket/airplane/kiteprog.html O botão no final da página escrito "Download Aplet" que você consegue o arquivo zipado, a diferença dos dois arquivos (o que eu coloquei aqui e o do site) é um arquivo HTML que eu exclui que abre o site do download, não interfere no outro arquivo HTML.
  5. Boa noite pessoal! Recentemente baixei um arquivo zipado e as instruções para rodar o programa contido nele, só dizia que era necessário abrir o arquivo HTML em algum navegador que eu poderia ver a aplicação, mas não aconteceu. A pasta depois de criada possuia esses arquivos: Vocês saberiam me dizer como deveria prosseguir para poder abrir o arquivo HTML e ver a aplicação esperada? (Estarei colocando o arquivo .zip para baixarem e tentarem compilar) KiteModeler.rar
  6. Não saberia responder sua pergunta, estou bem no início da programação Java, acredito que talvez possa ser o compilador que eu esteja usando, que fica no Replit, porque quando compilei o código em um compilador online não apresentou erros. Você já usou o Replit ou conhece um ambiente melhor para programar em Java?
  7. Bom dia, boa tarde ou boa noite pessoal! Comecei a me aventurar na programação em Java há pouco tempo e tenho algumas dúvidas. 1° O código abaixo possui algum erro de sintaxe no início? Estou usando um compilador e ele emite a seguinte mensagem antes de "public class Student": "Student.java is not on the classpath of project myartifactid, only syntax errors are reported". 2° Como eu faço para que na impressão, as médias das notas que seria o "Average" saia com duas casas decimas de precisão? public class Student { String Name; int Registration; String Cpf; String DateOfBirth; double Height; int Age; double Note[] = new double[5]; double Average; String SituationEvidence; public Student(String Name, int Registration, String Cpf, String DateOfBirth, double Height, int Age, double Note1, double Note2, double Note3, double Note4, double Note5) { this.Name = Name; this.Registration = Registration; this.Cpf = Cpf; this.DateOfBirth = DateOfBirth; this.Height = Height; this.Age = Age; this.Note[0] = Note1; this.Note[1] = Note2; this.Note[2] = Note3; this.Note[3] = Note4; this.Note[4] = Note5; CalculateAverage(); } public void SetNote(int Registration, double Note) { if ((Registration < 1) || (Registration > this.Note.length)) return; this.Note[Registration-1] = Note; CalculateAverage(); } public double GetNote(int Registration) { if ((Registration < 1) || (Registration > Note.length)) return 0; return Note[Registration-1]; } private void CalculateAverage() { double Sum = 0; for (int i = 0; i < Note.length; i++) { Sum += Note[i]; } Average = Sum / Note.length; SituationEvidence(); } private void SituationEvidence() { if (Average > 7) { this.SituationEvidence = "Approved!"; } else if (Average > 5) { this.SituationEvidence = "In exam."; } else { this.SituationEvidence = "Disapproved."; } } public String toString() { String out = ""; out += "\nName: " + Name + " \n"; out += "Registration: " + Registration + " \n"; out += "Cpf : " + Cpf + " \n"; out += "Date of birth: " + DateOfBirth + " \n"; out += "Height: " + Height + " \n"; out += "Age: " + Age + " \n"; out += "Average: " + Average + " \n"; out += "Bimonthly situation: " + SituationEvidence + " \n"; return out; } public static void main(String[] args) { Student student[] = new Student[3]; student[0] = new Student("Lucas", 1, "111", "15/05/2001", 1.80, 21, 5.8, 9.2, 4.1, 7.8, 8); student[1] = new Student("Luan", 2, "222", "15/05/2001", 1.79, 21, 9, 9.3, 8, 7, 6); student[2] = new Student("Letícia", 3, "333", "21/10/2002", 1.68, 20, 5, 4, 6, 3, 6.2); for (int i = 0; i < student.length; i++) { System.out.println(student[i]); } } } Desde já, agradeço pela atenção.
  8. Teria como você me explicar qual seria a função do void *info? typedef struct st_AVL { void* info; struct st_AVL* esquerdo; struct st_AVL* direito; short altura; } AVL;
  9. Fiz esse, mas está em linguagem C. #include <stdio.h> #define N 10 void inicializaVendas(int tab_vendas[]){ int v; for(v = 0; v <= N; v++) tab_vendas[v] = 0; } void preencheVendas(int codigo, int tab_vendas[]){ tab_vendas[codigo]++; } int main(){ int vendas[N]; int menos_vendido, mais_vendido, codigo; int temp; inicializaVendas(vendas); printf("\n"); do{ printf("Digite o código do produto: "); scanf("%d", &codigo); preencheVendas(codigo, vendas); }while(codigo != 0); temp = vendas[1]; for( codigo = 1; codigo <= N; codigo++){ if(temp > vendas[codigo]){ menos_vendido = codigo; temp = vendas[codigo]; } } temp = vendas[1]; for( codigo = 1; codigo <= N; codigo++){ if(temp < vendas[codigo]){ mais_vendido = codigo; temp = vendas[codigo]; } } printf("\nCódigo do produto menos vendido: %d\nQuantidade de vezes que foi vendido: %d", menos_vendido, vendas[menos_vendido]); printf("\n\nCódigo do produto mais vendido: %d\nQuantidade de vezes que foi vendido: %d\n", mais_vendido, vendas[mais_vendido]); for( codigo = 1; codigo <= N; codigo++) printf("\n%d --> %d", codigo, vendas[codigo]); return 0; }
  10. Consegui encontrar o erro, a invasão de memória deve ter ocorrido por falha do compilador ou do buffer, como disse anteriormente, o erro estava na função "compareAluno", as condições colocadas estavam dando conflito por causa da seguinte condição "else if(strlen(variavel) <= (CANOME-1))", dessa forma, ao cair uma string de tamanho igual ou maior que "char cpf[CACPF]" , o código fazia a comparação da string "cpf" digitada com a string "nome" já adicionada. Forma errada do código: int compareAluno(stc_Aluno **a, char variavel[]){ int i, j, aux = 0; if(*a != NULL){ if(strlen(variavel) == (CAID-1)){ if(strcmp(variavel, (*a)->id) == 0) return 1; else if(atof(variavel) < atof((*a)->id)) i = compareAluno(&(*a)->esquerdo, variavel); else if(atof(variavel) > atof((*a)->id)) j = compareAluno(&(*a)->direito, variavel); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(strlen(variavel) <= (CANOME-1)){ // erro nesta linha if(strcmp(variavel, (*a)->nome) == 0){ return 1; } int i = compareAluno(&(*a)->esquerdo, variavel); int j = compareAluno(&(*a)->direito, variavel); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(strlen(variavel) == (CACPF-1)){ if(strcmp(variavel, (*a)->cpf) == 0) return 1; int i = compareAluno(&(*a)->esquerdo, variavel); int j = compareAluno(&(*a)->direito, variavel); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } } else{ if(aux == 1) return aux; } return aux; } Forma correta do código: int compareAluno(stc_Aluno **a, char variavel[], int opcao){ int i, j, aux = 0; if(*a != NULL){ if(opcao == 1){ if(strcmp(variavel, (*a)->id) == 0) return 1; else if(atof(variavel) < atof((*a)->id)) i = compareAluno(&(*a)->esquerdo, variavel, opcao); else if(atof(variavel) > atof((*a)->id)) j = compareAluno(&(*a)->direito, variavel, opcao); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(opcao == 2){ if(strcmp(variavel, (*a)->nome) == 0) return 1; int i = compareAluno(&(*a)->esquerdo, variavel, opcao); int j = compareAluno(&(*a)->direito, variavel, opcao); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(opcao == 3){ if(strcmp((*a)->cpf, variavel) == 0) return 1; int i = compareAluno(&(*a)->esquerdo, variavel, opcao); int j = compareAluno(&(*a)->direito, variavel, opcao); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } } else{ if(aux == 1) return aux; } return aux; } Desde já, agradeço pelo aprendizado de como formular um tópico seguindo as diretrizes do fórum para explicitar minha dúvida.
  11. Muito obrigado. Uma pessoa aparentemente encontrou o problema, na função "compareAluno" a condição para procurar pelo ID, NOME ou CPF é o tamanho da string, como na condição que verifica o NOME há um "<=", sempre que eu colocar um número >= 12 (que é o tamanho da string do CPF), o código não passará na condição do CPF. Vou dar uma formulada no código, se conseguir resolver encerro o tópico.
  12. Você rodou o código que mandei e fez o exemplos que tem nas imagens? Consegue dar um panorama do que possa estar acontecendo?
  13. Compreendi agora, para mim colocar o código todo aqui no site (ainda mais com tantas linhas) seria tipo uma "poluição do post". Obrigado novamente.
  14. Em relação a isto: Acredito que me pronunciei da forma errada, na verdade é quando igualo ou sobreponho o tamanho da string nome[ ] em relação a string cpf[ ], por exemplo: quando CANOME é <= 11, o código roda corretamente. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define CAID 10 #define CANOME 11 // <= 11 o código funciona #define CACPF 12 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo; struct A *direito; short altura; }stc_Aluno; Já quando CANOME >= 12 o código não consegue mais detectar se o CPF digitado já existe no banco de dados. #include <string.h> #include <ctype.h> #define CAID 10 #define CANOME 12 // >= 12 o código não funciona #define CACPF 12 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo; struct A *direito; short altura; }stc_Aluno; Abaixo estarei enviando o código em arquivo.txt, tirei os caracteres emojis para uma melhor visualização nos compiladores. Código.txt Eu aceito qualquer crítica, levo como aprendizado, sua opinião importa muito para mim.
  15. Ok, vou reconfigurar o código e daqui a pouco posto aqui, desculpe a minha burrice ou ingenuidade.
  16. Ok, o passo a passo. 1º passo: clicar na opção 1 (tbl_Aluno) que te direcionará para o menu de 6 opções onde você escolherá a opção 1 novamente (Adicionar Aluno). { // Funcionalidades para a tabela aluno. case 1: do{ fprintf(stdout, "\nO que você deseja fazer na tabela ALUNO?\n\n Adicionar aluno\n Procurar aluno\n Remover aluno\n Alterar informação do aluno\n Imprimir alunos\n Voltar\n\nR ▶ "); fscanf(stdin, "%d", &a); printf("\n"); switch(a) { case 1: do{ strcpy(aluno.id, idAluno(student, 1)); strcpy(aluno.nome, nomeAluno(student)); strcpy(aluno.cpf, cpfAluno(student, 1)); // Adiciona os dados na AVL. student = adicionaAluno(student, aluno.id, aluno.nome, aluno.cpf); remove("aluno.bin"); salvarAluno(&student); printf("\nAluno salvo com sucesso\n\n"); printf("\nGostaria de adicionar outro aluno?\n\n✔ SIM\t\t✖ NÃO\n\nR ▶ "); scanf(" %c", &b); printf("\n"); }while(b == 'V' || b == 'v'); break; ... } ... } ... } 2° passo: adicione dois alunos como ilustrado na imagem 1, mas seguindo essas configurações que estão no início do código, dessa forma o código consegue detectar se o cpf digitado já existe no banco de dados: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define CAID 10 #define CANOME 11 #define CACPF 12 #define CCID 4 #define CCNOME 25 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo; struct A *direito; short altura; }stc_Aluno; 3° passo: adicione dois alunos como ilustrado na imagem 2, mas seguindo essas configurações que estão no início do código, dessa forma o código não consegue detectar se o cpf digitado já existe no banco de dados: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define CAID 10 #define CANOME 12 #define CACPF 12 #define CCID 4 #define CCNOME 25 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo; struct A *direito; short altura; }stc_Aluno; Até se CANOME > 12 o código também não funciona direito. No momento de adicionar os alunos, o código percorre as seguintes funções respectivamente: int main(void); char* idAluno(stc_Aluno *a, int opcao); int compareAluno(stc_Aluno **a, char variavel[ ]); char* nomeAluno(stc_Aluno *a); int compareAluno(stc_Aluno **a, char variavel[ ]); char* cpfAluno(stc_Aluno *a, int opcao); int compareAluno(stc_Aluno **a, char variavel[ ]); stc_Aluno* adicionaAluno(stc_Aluno *a, char id[], char nome[], char cpf[]); void salvarAluno(stc_Aluno **a); No caso do id ou cpf serem iguais, a função "compareAluno" deve/deveria retornar 1. E sempre que for fazer um teste, apague o "arquivo.bin" criado anteriormente, ele fica abaixo da "main.c", é só clicar nos 3 pontinhos que aparece as opções.
  17. Acho que não expliquei direito: o código só roda certo quando a string nome[ ] tem o tamanho de 11 caracteres ou menos, acima disso ele fica roubando o espaço de memória da string cpf[ ], mas não consigo enxergar o motivo. Se tiver tempo, vá no meu código, entre na "tbl_aluno" e escolha a opção de adicionar, primeiro você roda o código com o "CANOME = 11" e depois "CANOME = 12", adicone dois alunos em ambos os casos, e quando for adicionar o segundo aluno, repita o "cpf" que colocou para o primeiro. No caso "CANOME = 11" ele vai rodar como o desejado, já no "CANOME = 12" ele vai ignorar que você colocou o mesmo "cpf" para ambos os alunos.
  18. Boa noite pessoal, gostaria da ajuda de vocês. Estou fazendo um código que pega informações do usuário, coloca em uma AVL e depois passa os dados dessa AVL para um arquivo. O problema é que quando igualo ou sobreponho as posições da string nome[ ] em relação a string cpf[ ] (ambas da struct "stc_Aluno"), parece haver uma invasão de memória da string nome[ ] em cima da string cpf[ ]. Por exemplo: se uso... #define CAID 10 #define CANOME 11 #define CACPF 12 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo, *direito; short altura; }stc_Aluno; O código consegue detectar se o CPF digitado já está na lista de dados. Já quando coloco assim... #define CAID 10 #define CANOME 12 #define CACPF 12 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo, *direito; short altura; }stc_Aluno; O código não consegue detectar se o CPF digitado já está na lista de dados. Primeiro o código vai para a função de "idAluno", depois "nomeAluno" e por final a "cpfAluno". Dentro das funções "idAluno" e "cpfAluno", há a função "compareAluno", que é responsável por identificar se o dado digitado já está contido na nossa AVL. No primeiro aluno adicionado, o código roda corretamente, já quando insiro os dados do segundo aluno, no momento da comparação de cpfs, a função ignora se o "cpf" digitado e o "cpf" que está na AVL são iguais. Vou deixar o link do código logo abaixo, pode fazer a modificação que achar necessária e se possível, coloque aqui nesse post, o que você usou para resolver o problema. https://replit.com/join/snrbwfcatk-lucasverissimo1
  19. Boa noite pessoal! Estou tendo dificuldades para rodar esse trecho de código, tenho quase certeza que ontem consegui rodar e deu certo, mas hoje quando compilo o arquivo é criado mas o contéudo não está lá. Estou compilando pelo Replit, poderiam me ajudar falando o que poderia estar errado? void salvarAluno(stc_Aluno **a){ FILE *arq_aluno; stc_Aluno aluno; int temp; if(*a!=NULL){ salvarAluno(&(*a)->esq); arq_aluno = fopen("aluno.bin","ab"); strcpy(aluno.id, (*a)->id); strcpy(aluno.nome, (*a)->nome); strcpy(aluno.cpf, (*a)->cpf); temp = fwrite(&aluno, 1, sizeof(stc_Aluno), arq_aluno); if (!temp) printf ("Erro ao salvar\n"); salvarAluno(&(*a)->dir); } } Consegui achar o erro pessoal, desculpa pela incoviniência.
      • 1
      • Obrigado
  20. Linguagem C.
  21. Boa tarde pessoal! Estou querendo fazer a aplicação de um programa mas quero também fazer sua interface gráfica, vocês sabem algum programa que eu consiga fazer isso? Programar os comandos e depois compilar, para ver como está ficando a forma gráfica? Att, Lucas Veríssimo.
  22. Boa tarde pessoal, nesse código abaixo estou enfrentando o problema de não conseguir executar o ciclo abaixo. Logo após que a variável "N" lê um valor, o programa ignora o ciclo e pula para a instrução final, como poderia resolver esse problema? Desde já, agradeço pela atenção. #include <stdio.h> int main(){ char comando, posicao = 'Norte'; int N, i; scanf("%d",&N); for( i=0 ; i>N ; i++ ){ scanf("%c",&comando); if(comando == 'Direita'){ if(posicao == 'Norte') posicao = 'Leste'; else if(posicao == 'Leste') posicao = 'Sul'; else if(posicao == 'Sul') posicao = 'Oeste'; else if(posicao == 'Oeste') posicao = 'Norte'; } else if(comando == 'Esquerda'){ if(posicao == 'Norte') posicao = 'Oeste'; else if(posicao == 'Leste') posicao = 'Norte'; else if(posicao == 'Sul') posicao = 'Leste'; else if(posicao == 'Oeste') posicao = 'Sul'; } } printf("%c\n", posicao); return 0; }
  23. Boa tarde pessoal! Estou tentando fazer um código que imprima uma frase inversa ao que o usuário digitou, mas não estou conseguindo mostrar essa frase, o código só mostra a primeira palavra invertida e para. Vocês sabem o que está errado? #include<stdio.h> #include<string.h> int inversao(char *frase,int i){ int j=0,k; char frase2[100]; k=i-1; for(int l=0;l<=i-1;l++){ frase2[l]=frase[k]; k--; } frase2[i]= '\0'; printf("\nA frase inversa é: "); while(frase2[j] != '\0'){ printf("%c",frase2[j]); j++; } return 0; } int main(void){ char palavra[100]; printf("\nEscreva uma frase: "); scanf(" %s",palavra); inversao(palavra,strlen(palavra)); 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!