-
Posts
536 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que herbertbahia postou
-
C Um programa para uma livraria na linguagem em c
herbertbahia respondeu ao tópico de Larissa Firmino em C/C#/C++
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #define max 2 typedef struct Livro { char titulo[200]; char autor[200]; char editora[200]; int edicao; } Livro; Livro Livro_biblioteca[max]; void menu(); void cadastrar(); void consultar(); int main() { setlocale(LC_ALL,"portuguese"); menu(); return 0; } void menu() { int opcao; do { printf(" \n Opções: "); printf(" \n 1. Cadastrar" ); printf(" \n 2. Consultar" ); printf(" \n 3. Sair" ); printf(" \n Digite a opção desejada: "); scanf("%d", &opcao); switch(opcao) { case 1: cadastrar(); break; case 2: consultar(); break; case 3: exit(0); default: printf(" \n Opção não existente. "); break; } } while(opcao!=3); } void cadastrar() { for(int i=0;i<max;i++){ fflush(stdin); printf(" Digite o título do livro: "); gets( Livro_biblioteca[i].titulo); printf(" Digite o nome do autor: "); gets( Livro_biblioteca[i].autor); printf(" Digite a editora do livro: "); gets( Livro_biblioteca[i].editora); printf(" Digite o número da edição: "); scanf("%d", &Livro_biblioteca[i].edicao); } } void consultar() { char aux[100]; printf("Digite o título\n"); fflush(stdin); gets(aux); for(int i=0;i<max;i++){ if (strcmp(aux,Livro_biblioteca[i].titulo)==0){ printf(" \n O Título do livro é: %s ",Livro_biblioteca[i].titulo); printf(" \n O nome da autora é: %s ",Livro_biblioteca[i].autor); printf(" \n A editora é: %s ",Livro_biblioteca[i].editora); printf("\n"); } else{ printf("Titulo nao encontrado"); printf("\n"); } } } -
voce entendeu que aquilo é uma funcao que recebe por parametro um ponteiro de char? tenta escrever esse programa aí se tiver errado a galera ajuda
-
como nesse exemplo que tem for (size_t i = 0; i < sizeof array / sizeof *array; i++) { // work with array[i]; }
-
cara a função strlen retorna o tamanho veja esse artigo que fala sobre quando e como usar o size_t eu nunca usei aprendir agora https://pt.stackoverflow.com/questions/59369/quando-usar-size-t
-
C++ Algoritmo e Linguagem de Programação:Recursividade
herbertbahia respondeu ao tópico de Alex Jhonson em C/C#/C++
primeiros numeros de que? nao esta faltando algum texto ai nao? -
@vini.alves o vetor é declarado para o novo tipo da struct já que estamos falando desse assunto veja um pouco sobre os tipos //Existem quatro tipos de struct: //Struct com tipo logo apos a chave. (apenas uma unica estrutura) struct estrutura1{ int a; int b; }var1; //aqui cria-se um novo tipo, poderia ser vetor. var1.a=3; printf("%d\n",var1.a); //Struct com a variável depois. (apenas uma unica estrutura) struct estrutura2{ int a; int b; }; struct estrutura2 var2;//aqui cria-se o novo tipo var2, poderia ser vetor. var2.a=5; var2.b=7; printf("%d %d\n",var2.a,var2.b); //Struct typedef com o tipo logo apos a chave. typedef struct{ int a; int b; }var3; //aqui cria-se um novo tipo //Observe que nao pode fazer var1 x,y; nem var2 x,y; mas com struct typedef pode. //ou seja cada variavel que criar sera outra estrutura. var3 x,y;//aqui foi criado 2 variavel do tipo var3 cada variavel representa 1 struct. x.a=1; y.a=2; printf("%d %d\n",x.a,y.a); //Struct com typedef na variavel struct estrutura4{ int a; int b; }; typedef struct estrutura4 novo;//tipo e variavel na mesma linha. //observe que agora podemos declarar novas variaveis para a mesma estrutura. novo struct1, struct2, struct3; struct1.a=8; struct2.a=10; struct3.a=20; printf("%d %d %d\n",struct1.a,struct2.a,struct3.a);
-
C O programa compila mas não executa
herbertbahia respondeu ao tópico de Rayane Parreira Resende em C/C#/C++
mas devair porque sempre que eu provo testar com apenas 1 unico fflush no inicio de um loop sempre funciona perfeitamente? -
da uma pesquisada em como criar e gerenciar um novo projeto? é ótimo para voce que está iniciando.
-
C O programa compila mas não executa
herbertbahia respondeu ao tópico de Rayane Parreira Resende em C/C#/C++
acredito que apenas o primeiro fflush seja necessario ainda que estivesee em um loop -
faltou uma virgula depois do \n printf("%i\n",valdigitado); adicionado 4 minutos depois e nesse caso aí você tem que usar do while porcausa que primeiro deve executar o comando para depois verificar a codicao #include <stdio.h> int main() { int valdigitado =0 ; printf ("Digite o valor desejado:\n"); do{ scanf( "%i", &valdigitado); printf("%i\n",valdigitado); }while (valdigitado > 0); } agora que tem isso pode partir para os proximos requisitos do exercicio
-
esse assunto foi discutido nesse tópico no dia de ontem
-
porque em pilha o ultimo a entrar e o primeiro a sair essa e a regra @Rafael LXP veja esse exemplo #include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct pilha{ int topo; int dado; struct pilha *prox; ; } Tno_ls; int inicializa (Tno_ls **p); int empilha (Tno_ls **p, int info); int desempilha (Tno_ls **p); int estado(Tno_ls *p); int listar(Tno_ls *p); int obter_topo(Tno_ls *p, int *dado); int transfere(Tno_ls *p, Tno_ls **p2); /* ----------------------------------------------------------------------------- */ int main(void) { int info; int erro; /* valor de erro retornado pelas funcoes */ Tno_ls *s, *s2; inicializa(&s); inicializa(&s2); int q; /* receber a opcao do usuario */ do { printf("1 -> Inicializa \n"); printf("2 -> Insere\n"); printf("3 -> Remove\n"); printf("4 -> Verifica Estado de Vazio\n"); printf("5 -> Lista \n"); printf("6 -> Obter Topo \n"); printf("7 -> Transferir para outra pilha \n"); printf("8 -> Listar pilha 2! \n:"); printf("9 -> Sair \n:"); scanf("%d", &q); /* Ler a opcao do usuario */ switch(q) { case 1: erro=inicializa (&s); printf("\nInicializacao realizada com sucesso !\n"); printf("\nPilha VAZIA \n"); break; case 2: printf("Dado para insercao: "); scanf("%d",&info); erro=empilha(&s,info); if (erro==1) printf("\nPilha cheia. Overflow\n"); break; case 3: erro=desempilha(&s); if (erro==1) printf("\nPilha Vazia. Underflow\n"); if(erro == 0) printf("\nRemocao realizada com sucesso!\n"); break; case 4: erro=estado(s); if (erro == 0) printf("\nA pilha esta vazia.\n"); if (erro == 2) printf("\nA pilha esta em condicoes de uso\n"); if(erro == 1){ printf("\nPilha com apenas 1 item.\n"); } break; case 5: erro= listar(s); if (erro == 1) printf("\nA pilha esta vazia.\n"); break; case 6: erro=obter_topo(s, &info); if (erro == 0) { printf("Dado no topo: %d\n", info); }else printf("Pilha vazia. Sem topo\n"); break; case 7: erro= transfere(s, &s2); if (erro == 0) { printf("Transferencia realizada\n"); listar(s2); } else printf("erro na transferencia"); break; case 8: erro= listar(s2); if (erro == 1) printf("\nA pilha esta vazia.\n"); break; case 9: break; default: printf("\n\n Opcao nao valida"); } getchar(); /* Limpa o buffer de entrada */ } while ((q != 9) ); } /* ---------------------------------------------------------------------- */ int inicializa(Tno_ls **p){ *p = NULL; return 0; } /* ---------------------------------------------------------------------- */ int empilha (Tno_ls **p, int info){ Tno_ls *celula_nova, *percorre; celula_nova = (Tno_ls*)malloc(sizeof(Tno_ls)); celula_nova->dado = info; celula_nova->prox = NULL; if((*p) == NULL){ /* lista vazia */ (*p) = celula_nova; return 0; }else{ percorre = (*p); (*p) = celula_nova; (*p)->prox = percorre; return 0; } } /* --------------------------------------------------------------------------- */ int desempilha (Tno_ls **p){ Tno_ls *percorre = (*p), *aux; int erro = estado(*p); if(erro == 0){ //Lista vazia return 1; }else if(erro == 1){ //Lista com apenas 1 item inicializa(p); } else{ //lista com 2 ou mais itens aux = percorre; percorre = percorre->prox; free(aux); (*p) = percorre; return 0; } return 0; } /* --------------------------------------------------------------------------- */ int estado(Tno_ls *p){ if(p == NULL){ return 0; }else if(p->prox == NULL){ return 1; } else{ return 2; } } /* -------------------------------------------------------------------- */ int listar(Tno_ls *p){ Tno_ls *percorre = p; if(percorre == NULL){ //Lista vazia return 1; }else{ printf("\nTOPO ->"); while(percorre->prox != NULL){ printf(" %d ->", percorre->dado); percorre = percorre->prox; } printf(" %d\n", percorre->dado); return 0; } } /* ------------------------------------------------------------------- */ int obter_topo(Tno_ls *p, int *dado){ if(p == NULL){ // Lista vazia return 1; } *dado = p->dado; return 0; } /* ------------------------------------------------------------------- */ int transfere(Tno_ls *p, Tno_ls **p2){ Tno_ls *percorre = p; Tno_ls *pilhaAux; inicializa(&pilhaAux); Tno_ls **percorre2 = &pilhaAux; int erro = estado(p); if (erro >= 1) { while(percorre->prox != NULL){ empilha(&pilhaAux, percorre->dado); percorre = percorre->prox; } empilha(&pilhaAux, percorre->dado); printf("\nTransferindo: 50%%\n"); printf("\nLista da pilha auxiliar\n"); listar(pilhaAux); while((*percorre2)->prox != NULL){ empilha(p2, (*percorre2)->dado); (*percorre2) = (*percorre2)->prox; } empilha(p2, (*percorre2)->dado); printf("\nTransferindo: 100%%\n"); return 0; } return 1; }
-
não sei se entendir bem a sua duvida mas para exibir o topo não seria necessariamente tipo essa funcao que você fez? void exibe_conteudo_pilha(Pilha* pi){ if(pi == NULL || *pi == NULL) printf("\n Pilha esta vazia"); else { struct elemento* aux = *pi; printf("\n Cor do prato: %s", aux->item.cor); } } adicionado 0 minutos depois chamando no main exibe_conteudo_pilha(pilha);
-
o bom de poder retornar um struct é que você pode retornar um array mas esse exercicio não precisou kkk.
-
simrealmente tem erros nas declarações das variaveis mas não são os únicos erros, voce nao pode simplesmente enfiar uma struct assim em uma lista de inteiros é melhor declarar elas separadamente assim, struct cliente{ int cod; char nome[20]; }cliente[tam]; struct pet{ int cod; char nome[20]; char produto[20]; }pet[tam]; observou que vai precisar usar vetor para pegar mais de 1 dado com os mesmos atributos? um exemplo para a leitura nas variaveis das estruturas printf("\nCodigo : "); scanf ("%d", &cliente[i].cod); printf("\nNome: "); fflush(stdin); scanf("%s",cliente[i].nome); nesse meu exemplo tam seria uma constante voce tem um enunciado? o que realmente está pretendendo fazer? pergunto isso pois o seu menu é muito estranho. acho que deveria ler os dados do cliente e do pet do cliente juntos.
-
C Como aplicar uma mesma condição/operação para cada elemento de um vetor
herbertbahia respondeu ao tópico de Lhikki em C/C#/C++
#include <stdio.h> int main(){ int num,vet[7],i=0; printf("Caro Usuario digite x:\n"); scanf("%d", &num); printf("Caro Usuario digite os elementos do vetor:\n"); for ( i=0; i<7; i++) scanf ("%d",&vet[i]); for ( i=0; i<7; i++){ printf ("%d",vet[i]); if (vet[i]+1 == num || vet[i]+2 == num ) printf(" Sim\n"); else printf(" Nao\n"); } } -
exit é uma função da biblioteca stdlib que voce mesmo incluiu. o while(1) significa loop infinito porém se der exit ele para, e o(1) tambem éo parametro da funcao exit
-
#include <stdio.h> #include <stdlib.h> int main() { int menu; // MENU int num1, num2, soma; // SOMA int num3, num4, sub; // SUBTRAÇÃO float num5, num6, div; // DIVISÃO int num7, num8, mult; // MULTIPLICAÇÃO do{ printf("** CALCULADORINHA **\n\n"); printf("1 - Soma\n"); printf("2 - Subtracao\n"); printf("3 - Divisao\n"); printf("4 - Multiplicacao\n"); printf("5 - Sair\n\n"); printf("DIGITE UMA OPCAO DO MENU: "); scanf("%d", &menu); printf("\n"); switch(menu){ case 1: printf("Digite um Numero: "); scanf("%d", &num1); printf("Digite um Segundo Numero: "); scanf("%d", &num2); soma = num1 + num2; printf("%d + %d = %d", num1, num2, soma); break; case 2: printf("Digite um Numero: "); scanf("%d", &num3); printf("Digite um Segundo Numero: "); scanf("%d", &num4); sub = num3 - num4; printf("%d - %d = %d", num3, num4, sub); break; case 3: printf("Digite um Numero: "); scanf("%d", &num5); printf("Digite um Segundo Numero: "); scanf("%d", &num6); div = num5 / num6; printf("%f / %f = %f", num5, num6, div); break; case 4: printf("Digite um Numero: "); scanf("%d", &num7); printf("Digite um Segundo Numero: "); scanf("%d", &num8); mult = num7 * num8; printf("%d * %d = %d", num7, num8, mult); break; case 5: printf("Finalizando......\n"); printf("Programa Finalizado Com Sucesso!\n"); exit(1); } }while(1); }
-
a minha sugestão : faz uma struct cofre : int tranca 1 , int tranca 2 , int tranca 3 ...
-
C Problema para calcular media de um vetor
herbertbahia respondeu ao tópico de Sr.Bincow em C/C#/C++
não quero ser chato mas sempre que aloca memoria o aconselhável não é usar o free para liberar a memoria? -
C Adicionar um contador que mostre a quantidade de moedas coletadas, alguém pode?
herbertbahia respondeu ao tópico de Eduardo0915 em C/C#/C++
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <ctype.h> #include <conio.h> #include <windows.h> // função tem TIPO DE RETORNO, NOME, PARAMETROS, CORPO // void: tipo sem retorno // gerarMapa: nome // mapa, x, y: parametros separados por virgula int cont=0; void gerarMapa(char mapa[10][10], int x, int y); void imprimirMapa(char mapa[10][10]); void comandarHeroi(char mapa[10][10], int *x, int *y); void limparTela(); void congratulations(); main() { // variavel do mapa (matriz de caracteres) char mapa[10][10]; // posicao do heroi int horizontal = 4; int vertical = 0; int moedas = 0; gerarMapa(mapa, horizontal, vertical); while(true) { imprimirMapa(mapa); comandarHeroi(mapa, &horizontal, &vertical); limparTela(); } } // preenche o mapa com traços void gerarMapa(char mapa[10][10], int x, int y) { for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { mapa[i][j] = '-'; } } // insere o heroi no mapa mapa[x][y] = 'J'; //insere as moedas mapa[1][1] = 'O'; mapa[2][2] = 'O'; mapa[3][3] = 'O'; mapa[4][4] = 'O'; mapa[5][5] = 'O'; } // imprime o mapa void imprimirMapa(char mapa[10][10]) { for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { printf("%c", mapa[i][j]); } printf("\n"); } bool j1,j2,j3,j4,j5; if(mapa[1][1] == 'J' && j1==false){ ++cont; j1=true; Beep(2000,100); } if(mapa[2][2] == 'J' && j2==false){ ++cont; j2=true; Beep(2000,100); } if(mapa[3][3] == 'J' && j3==false){ ++cont; j3=true; Beep(2000,100); } if(mapa[4][4] == 'J' && j4==false){ ++cont; j4=true; Beep(2000,100); } if(mapa[5][5] == 'J' && j5==false){ ++cont; j5=true; Beep(2000,100); } if(cont==5)congratulations(); } void comandarHeroi(char mapa[10][10], int *x, int *y) { // insere o comando de andar do heroi (W A S D) char comando = getch(); comando = toupper(comando); // remove a posicao do heroi mapa[*x][*y] = '-'; //scanf("%c", &comando); switch(comando){ // move o heroi //printf("%c",comando); case 'W': if( *x > 0) *x -= 1; break; case 'S': if(*x < 9) *x += 1; break; case 'A': if(*y > 0) *y -= 1; break; case 'D': if( *y < 9) *y += 1; break; case 'Q': exit(0); } // atualiza a posicao do heroi mapa[*x][*y] = 'J'; } // limpa a tela (deleta o mapa anterior) void limparTela() { system("cls"); } void congratulations(){ system("cls"); printf("parabens catou %d moedas",cont ); } -
C Adicionar um contador que mostre a quantidade de moedas coletadas, alguém pode?
herbertbahia respondeu ao tópico de Eduardo0915 em C/C#/C++
acho que nem precisava abrir outro tópico mas enfim basta ver a valor que retorna quando encontrar a moedita então envez de decrementar como fiz você vai incrementar no contador então voce terá a quantidade -
@Rodrigo Hepp como disse o arfneto voce precisa indicar encontrar o livro
-
@Lucasalb11 para postar um código use o botão [<>] no painel para não sumir algumas partes do seu código
-
C++ Crie uma matriz 2 𝑥 3. Execute um dos seguintes procedimentos para a matriz: (2
herbertbahia respondeu ao tópico de Lucasalb11 em C/C#/C++
mat[2][3] onde 2 é o numero de linhas e 3 é o numero de colunas voce precisa percorrer o vetor que quer achar o maior valor seja coluna ou linha pode fazer manualmente de 1 por 1 ou entao usa um for , para achar o maior valor da matriz você percorre tudo tanto linha quanto coluna.
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