-
Posts
23 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que donutLukke postou
-
Java Como combinar um código HTML e JAVA, usando PrimeFaces e JSF
donutLukke postou um tópico em Java/Android SDK
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 -
Java Como deveria compilar a aplicação
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
Muito obrigado amigo, excelente ajuda. -
Java Como deveria compilar a aplicação
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
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? -
Java Como deveria compilar a aplicação
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
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. -
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
-
Java Erro de sintaxe e limitar casas decimais
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
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? -
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.
-
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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; -
C++ Programa que separa produto mais vendido e menos vendido
donutLukke respondeu ao tópico de Fernanderson_ em C/C#/C++
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; } -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Você rodou o código que mandei e fez o exemplos que tem nas imagens? Consegue dar um panorama do que possa estar acontecendo? -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Ok, vou reconfigurar o código e daqui a pouco posto aqui, desculpe a minha burrice ou ingenuidade. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
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. -
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
-
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
-
-
Linguagem C.
-
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.
-
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; }
-
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