Ir ao conteúdo

herbertbahia

Membro Pleno
  • Posts

    536
  • Cadastrado em

  • Última visita

Tudo que herbertbahia postou

  1. #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"); } } }
  2. 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
  3. como nesse exemplo que tem for (size_t i = 0; i < sizeof array / sizeof *array; i++) { // work with array[i]; }
  4. 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
  5. primeiros numeros de que? nao esta faltando algum texto ai nao?
  6. @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);
  7. mas devair porque sempre que eu provo testar com apenas 1 unico fflush no inicio de um loop sempre funciona perfeitamente?
  8. da uma pesquisada em como criar e gerenciar um novo projeto? é ótimo para voce que está iniciando.
  9. acredito que apenas o primeiro fflush seja necessario ainda que estivesee em um loop
  10. 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
  11. esse assunto foi discutido nesse tópico no dia de ontem
  12. 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; }
  13. 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);
  14. o bom de poder retornar um struct é que você pode retornar um array mas esse exercicio não precisou kkk.
  15. 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.
  16. #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"); } }
  17. 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
  18. #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); }
  19. a minha sugestão : faz uma struct cofre : int tranca 1 , int tranca 2 , int tranca 3 ...
  20. não quero ser chato mas sempre que aloca memoria o aconselhável não é usar o free para liberar a memoria?
  21. #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 ); }
  22. 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
  23. @Rodrigo Hepp como disse o arfneto voce precisa indicar encontrar o livro
  24. @Lucasalb11 para postar um código use o botão [<>] no painel para não sumir algumas partes do seu código
  25. 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!