Ir ao conteúdo
  • Cadastre-se

88games16

Membros Juniores
  • Total de itens

    17
  • Registro em

  • Última visita

  • Qualificações

    N/D

Tudo que 88games16 postou

  1. fiz um programa para inverter a ordem dos valores escritos em um vetor porém gostaria de saber como fazer usando recursividade alguém pode ajudar #include <stdio.h> void inverte_vetor(int v[], int n) { int i, j, tmp; i = 0; j = n-1; while (i < j) { tmp = v[i]; v[i] = v[j]; v[j] = tmp; i++; j--; } } int main(void) { int v[]={1,2,3,4,5,6}; int n = 6, i; inverte_vetor(v, n); for (i = 0; i < n; i++) printf("%d ", v[i]); printf("\n"); return(0); }
  2. quero escrever e ler em um arquivo binário porém quero que nas strings ocupe exatamente o tamanho da string digitada e não todo o espaço reservado escrendo esta sempre ocupando espaços a mais do que deveria não sei o porque e também estou com problemas para ler apenas o tamanho certo de cada string digitada struct Fornecedor { char cia[25]; char cnpj[15]; char tel[15]; char email[40]; }; struct Fornecedor fornecedores; //para escrever no arquivo void inputFornecedor(){ system("clear"); printf("Cadastro de fornecedores:"); quebra_linha(); int i; char resp; FILE* f; f = fopen("teste.bin", "ab"); do { preenche_fornecedor(&fornecedores); int len = strlen(fornecedores.cia); fwrite (&len ,sizeof(int),1,f); fwrite(&fornecedores.cia, sizeof(char), len, f); int len2 = strlen(fornecedores.cnpj); fwrite (&len2 ,sizeof(int),1,f); fwrite(&fornecedores.cnpj, sizeof(char), len2, f); int len3 = strlen(fornecedores.tel); fwrite (&len3 ,sizeof(int),1,f); fwrite(&fornecedores.tel, sizeof(char), len3, f); int len4 = strlen(fornecedores.email); fwrite (&len4 ,sizeof(int),1,f); fwrite(&fornecedores.email, sizeof(char), len4, f); printf("gostaria de cadastrar outro fornecedor (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); }
  3. como encontro a primeira posicao vaiza de um vetor de struct
  4. mas as informações são digitadas pelo usuário e não sei qnts diferentes cadastros serão preenchidos
  5. struct Aluno{ char nome[20]; int idade; }; int main(){ struct Aluno cadastro[50]; int i=0; while(cadastro != '\0'){ i++; } tentei assim mas não funciona
  6. // imprime os valores do vetor int i; int maior=0; int vet[10]; for (i=0; i<10; i++){ if(vet[i] > maior){ maior = vet[i]; } printf("%d",vet[i]); } printf("%d", maior);// maior valor do vetor
  7. para preencher o vetor de struct uso este codigo a dificuldade é na hora de cadastrar novos dados como faço para escreer no vetor struct a partir de onde parei na ultima vez int i=0; int n; struct Fornecedor fornecedores[40]; FILE* f; f = fopen("teste.txt", "ab"); printf("quantos fornecedores deseja cadastrar: "); scanf("%d",&n); quebra_linha(); for (i; i < n ; i++){ preenche_fornecedor(&fornecedores[i]); fwrite(fornecedores[i].cod, sizeof(char), strlen(fornecedores[i].cod)+1, f); fwrite(fornecedores[i].cnpj, sizeof(char), strlen(fornecedores[i].cnpj)+1, f); fwrite(fornecedores[i].nome, sizeof(char), strlen(fornecedores[i].nome)+1, f); } fclose(f);
  8. porque o campor cnpj virou um vetor bidimensional ? o campo id só quero armazenar até 2 caracteres mesmo não entendi opq de aumentar
  9. problema no algoritmo a função "void preenche_fornecedor" preencho os dados dos forncedores e depois escrevo no arquivo esses dados com a função "void inputFornecedor()" com a função "void preenche_produtos" eu faço o mesmo só que para produtos porém eu não queria ter que informar novamente os dados do cnpj e nome da empresa queria informar apenas o id e com esse id na hora de visualizar buscar as informações referentes a cnpj e nome da empresa ja gravadas no arquivo. Não sei como fazer isso ou se é possível alguem poderia me ajudar codigo a abaixo. #include <stdio.h> #include <string.h> #include <stdlib.h> void menu(); void opcao_menu(); void visualizar_fornecedor(); void inputEstoque(); void visualizar_Estoque(); struct Fornecedor { char cod[3]; char cnpj[15]; char cia[20]; }; struct Produto{ struct Fornecedor f; char nome[20]; int qtd; int custo; int valorc; int venda; }; struct Fornecedor fornecedores; struct Produto produtos; void quebra_linha(){ printf("\n"); } //preencher fornecedores void preenche_fornecedor (struct Fornecedor *p){ fflush(stdin); printf("codigo do fornecedor: "); scanf ("%s", p->cod); fflush(stdin); printf("informe cnpj do fornecedor: "); scanf("%s",p->cnpj); fflush(stdin); printf("nome da empresa: "); scanf("%s",p->cia); } void preenche_produtos (struct Produto *p){ preenche_fornecedor(&(*p).f); printf ("informe o produto p/ cadastrar no estoque: "); //getchar(); scanf("%s",p->nome); //fgets (p->nome,20,stdin); printf ("informe a quantidade da compra: "); scanf("%d",&p->qtd); printf("informe o preço unitario: "); scanf("%d",&p->custo); p->valorc=p->custo*p->qtd; printf("valor da mercadoria no estoque %d: ",p->valorc); p->venda = (p->valorc*1.4) - (p->valorc) ; } // cadastrar fornecedor e escrever no arquivo void inputFornecedor(){ system("clear"); int i; char resp; FILE* f; f = fopen("testeafornecedor.txt", "ab"); do { preenche_fornecedor(&fornecedores); fwrite(&fornecedores, sizeof(struct Fornecedor), 1, f); printf("gostaria de cadastrar outro fornecedor (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); } // visualizar na tela informações escritas no arquivo void visualizar_fornecedor(){ system("clear"); FILE* f; f = fopen("testeafornecedor.txt", "rb"); while (fread(&fornecedores, sizeof(struct Fornecedor), 1, f)==1){ printf("---------------------------------------------"); quebra_linha(); printf("Codigo de registro: %s\n", fornecedores.cod); printf("Cnpj: %s\n", fornecedores.cnpj); printf("Empresa %s\n", fornecedores.cia); printf("---------------------------------------------"); quebra_linha(); } fclose(f); getchar(); getchar(); menu(); } void inputEstoque(){ char resp; system("clear"); FILE* f; f = fopen("testeaestoque.txt", "ab"); do { preenche_produtos (&produtos); fwrite(&produtos, sizeof(struct Produto), 1, f); quebra_linha(); printf("gostaria de cadastrar outro produto (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); } void visualizar_Estoque(){ system("clear"); FILE* f; f = fopen("testeaestoque.txt", "rb"); while (fread(&produtos, sizeof(struct Produto), 1, f)==1){ printf("---------------------------------------------"); quebra_linha(); printf("Codigo de registro: %s\n", produtos.f.cod); printf("Cnpj: %s\n", produtos.f.cnpj); printf("Empresa %s\n", produtos.f.cia); printf ("Produto %s\n", produtos.nome); printf ("Quantidade %d\n", produtos.qtd); printf("preco unidade %d\n", produtos.custo); printf("valor do estoque %d\n", produtos.valorc); printf("lucro esperado %d\n", produtos.venda); printf("---------------------------------------------"); quebra_linha(); } fclose(f); getchar(); getchar(); menu(); } // menu void menu (){ system("clear"); printf (" --------------ESTOQUE EMPRESA ABC--------------\n"); quebra_linha(); printf("Menu:\n"); printf("1 - Consultar estoque cadastrado: \n"); printf("2 - Consultar fornecedores cadastrados: \n"); printf("3 - Cadastrar novo item no estoque: \n"); printf("4 - Cadastrar novo fornecedor: \n"); printf("5 - sair\n"); opcao_menu(); } void opcao_menu(){ int opcao; scanf("%d",&opcao); switch (opcao){ case 1: visualizar_Estoque(); break; case 2: visualizar_fornecedor(); break; case 3: inputEstoque(); break; case 4: inputFornecedor(); break; case 5: system("clear"); printf (" --------------EMPRESA ABC--------------\n"); quebra_linha(); quebra_linha(); break; default: printf("valor invalido"); quebra_linha(); menu(); } } int main(){ menu(); return 0; }
  10. era uma questão de prova seria um arquivo pronto já com varias dessas matérias e os dias de aula no formato do exemplo ali de cima eu pensei que poderia ser algo assim struct grade{ char materia[26]; char dias[50]; }; int main(){ struct grade grade[100]; int i=0; int num=0; char l; char str[1000]; char url[]="arquivo.txt" FILE *arq; arq = fopen(url, "r"); while( (fgets(str, sizeof(char), arq))!=NULL ){ grade[i] = fgetc(arq) i++ } l = fegtc(arq); while ( l != EOF){ if(l == '\n'){ num++; // numero de linhas do arquivo } } fclose(arq); for (i=0; i<num; i++){ printf("%s", grade[i]); } return 0;
  11. tenho um arquivo txt na formatação calculo, segunda , quarta algera, segunda, quarta, sexta .... quero ler o arquivo txt e guarda em um vetor no formato da struct alguuem pode dar uma luz struct grade{ char materia[26]; char dias[50] };
  12. mas tem varias linhas com diferentes matérias e diferentes dias eu tenho q fazer um loop mas como faço para parar de ler no final do arquivo
  13. problema na void inputEstoque() está esta preenchendo o arquivo com vários 0000000, preciso de ajuda não sei o problema uma vez que o outro arquivo foi preenchido corretamente (void inputFornecedor() ) grato por qualquer ajuda ou apontamento de algum erro. #include <stdio.h> #include <string.h> #include <stdlib.h> void menu(); void opcao_menu(); void visualizar_fornecedor(); void inputEstoque(); void visualizar_Estoque(); struct Fornecedor { char cod[2]; char cnpj[15]; char cia[20]; }; struct Produto{ struct Fornecedor f; char nome[20]; int qtd; int custo; int valorc; int venda; }; struct Fornecedor fornecedores; struct Produto produtos; void quebra_linha(){ printf("\n"); } //preencher fornecedores void preenche_fornecedor (struct Fornecedor *p){ fflush(stdin); printf("\ncodigo do fornecedor: "); scanf ("%s", p->cod); fflush(stdin); printf("\ninforme cnpj do fornecedor: "); scanf("%s",p->cnpj); fflush(stdin); printf("\nnome da empresa: "); scanf("%s",p->cia); } void preenche_produtos (struct Produto *p){ preenche_fornecedor(&(*p).f); printf ("informe o produto p/ cadastrar no estoque: "); //getchar(); scanf("%s",p->nome); printf ("informe a quantidade da compra: "); scanf("%d",&p->qtd); printf("informe o preço unitario: "); scanf("%d",&p->custo); p->valorc=p->custo*p->qtd; printf("valor da mercadoria no estoque %d: ",p->valorc); p->venda = (p->valorc*1.4) - (p->valorc) ; } // cadastrar fornecedor void inputFornecedor(){ system("clear"); struct Fornecedor fornecedores; char resp; FILE* f; f = fopen("fornecedores.txt", "ab"); do { preenche_fornecedor(&fornecedores); fwrite(&fornecedores, sizeof(struct Fornecedor), 1, f); /*fwrite(&fornecedores.cnpj, sizeof(char), strlen (fornecedores.cnpj), f); fwrite(&fornecedores.cia, sizeof(char), strlen (fornecedores.cia), f);*/ printf("gostaria de cadastrar outro fornecedor (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); } void visualizar_fornecedor(){ system("clear"); struct Fornecedor fornecedores; FILE* f; f = fopen("fornecedores.txt", "rb"); while (fread(&fornecedores, sizeof(struct Fornecedor), 1, f)==1){ printf("---------------------------------------------"); quebra_linha(); printf("Codigo de registro: %s\n", fornecedores.cod); printf("Cnpj: %s\n", fornecedores.cnpj); printf("Empresa %s\n", fornecedores.cia); printf("---------------------------------------------"); quebra_linha(); } fclose(f); getchar(); getchar(); menu(); } void inputEstoque(){ char resp; system("clear"); struct Produto produtos; FILE* f; f = fopen("estoque.txt", "ab"); do { preenche_produtos (&produtos); fwrite(&fornecedores, sizeof(struct Produto), 1, f); quebra_linha(); printf("gostaria de cadastrar outro produto (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); } void visualizar_Estoque(){ system("clear"); struct Produto produtos; FILE* f; f = fopen("estoque.txt", "rb"); while (fread(&fornecedores, sizeof(struct Produto), 1, f)==1){ printf("---------------------------------------------"); quebra_linha(); printf("Codigo de registro: %s\n", produtos.f.cod); printf("Cnpj: %s\n", produtos.f.cnpj); printf("Empresa %s\n", produtos.f.cia); printf ("Produto %s\n", produtos.nome); printf ("Quantidade %d\n", produtos.qtd); printf("preco unidade %d\n", produtos.custo); printf(" valor do estoque %d\n", produtos.valorc); printf("lucro esperado %d\n", produtos.venda); printf("---------------------------------------------"); quebra_linha(); } fclose(f); getchar(); getchar(); menu(); } // menu void menu (){ system("clear"); printf (" --------------ESTOQUE EMPRESA ABC--------------\n"); quebra_linha(); printf("Menu:\n"); printf("1 - Consultar estoque cadastrado: \n"); printf("2 - Consultar fornecedores cadastrados: \n"); printf("3 - Cadastrar novo item no estoque: \n"); printf("4 - Cadastrar novo fornecedor: \n"); printf("5 - sair\n"); opcao_menu(); } void opcao_menu(){ int opcao; scanf("%d",&opcao); while(opcao <1 || opcao>5){ printf("opcao nao disponivel no menu\n"); printf("digite o menu que deseja acessar: \n"); scanf("%d",&opcao); } switch (opcao){ case 1: visualizar_Estoque(); break; case 2: visualizar_fornecedor(); break; case 3: inputEstoque(); break; case 4: inputFornecedor(); break; default: printf("valor invalido"); } } int main(){ menu(); return 0; }
  14. cara muito obrigado o system("cls") não funcionou talvez por ser linux mas eu tirei a linha que declarava a struct dentro da função e deu certo
  15. Boa tarde pessoal sou novo com programação estou com problema no programa na função preenche_produtos na hora de ler o nome do produto da erro #include <stdio.h> #include <string.h> struct Fornecedor { int id; char cia[20]; }; struct Produto{ char nome[20]; int qtd; int custo; int venda; int valorc; struct Fornecedor f; }; struct Fornecedor fornecedores[100]; struct Produto produtos[100]; void quebra_linha(){ printf("\n"); } //preencher dados dos fornecedores void preenche_fornecedor (struct Fornecedor *p){ printf("\ncodigo do fornecedor: "); scanf ("%d", &((*p).id)); printf("nome da empresa: "); scanf("%s",p->cia); } // preenche produtos void preenche_produtos (struct Produto *p){ preenche_fornecedor(&(*p).f); printf ("informe o produto p/ cadastrar no estoque: "); getchar(); fgets ((&(*p.nome),20,stdin); printf ("informe a quantidade da compra: "); scanf("%d",&p->qtd); printf("informe o preço unitario: "); scanf("%d",&p->custo); p->valorc=p->custo*p->qtd; printf("valor da mercadoria no estoque %d: ",p->valorc); p->venda = p->valorc*1.4; } int main(){ printf (" --------------ESTOQUE EMPRESA ABC--------------\n"); quebra_linha(); int opcao; printf("Menu:\n"); printf("1 - Consultar estoque cadastrado: \n"); printf("2 - Consultar lista de fornecedores cadastrados: \n"); printf("3 - Cadastrar novo item no estoque: \n"); printf("4 - Cadastrar novo fornecedor: \n"); scanf("%d",&opcao);
  16. Valeu obrigado mas por alguma razão não compila direito quando uso o fgets acabei tendo que usar a scanf duvida no código abaixo faço o cadastro dos fornecedores condigo listar eles na tela porém na hora de fazer do estoque da erro não sei se é na hora de criar o arquivo ou na hora de ler que tem algo errado se alguem puder ajudar fico grato #include <stdio.h> #include <string.h> #include <stdlib.h> void menu(); void opcao_menu(); void visualizar_fornecedor(); void inputEstoque(); void visualizar_Estoque(); struct Fornecedor { char cod[2]; char cnpj[15]; char cia[20]; }; struct Produto{ struct Fornecedor f; char nome[20]; int qtd; int custo; int valorc; int venda; }; struct Fornecedor fornecedores; struct Produto produtos; void quebra_linha(){ printf("\n"); } //preencher fornecedores void preenche_fornecedor (struct Fornecedor *p){ fflush(stdin); printf("\ncodigo do fornecedor: "); scanf ("%s", p->cod); fflush(stdin); printf("\ninforme cnpj do fornecedor: "); scanf("%s",p->cnpj); fflush(stdin); printf("\nnome da empresa: "); scanf("%s",p->cia); } void preenche_produtos (struct Produto *p){ preenche_fornecedor(& p->f); printf ("informe o produto p/ cadastrar no estoque: "); scanf("%s",p->nome); printf ("informe a quantidade da compra: "); scanf("%d",&p->qtd); printf("informe o preço unitario: "); scanf("%d",&p->custo); p->valorc=p->custo*p->qtd; // preço pago pelo pela quantidade comprada printf("valor da mercadoria no estoque %d: ",p->valorc); p->venda = (p->valorc*1.4) - (p->valorc) ;// lucro esperado com a venda } // cadastrar fornecedor void inputFornecedor(){ system("clear"); struct Fornecedor fornecedores; char resp; FILE* f; f = fopen("fornecedores.txt", "ab"); do { preenche_fornecedor(&fornecedores); fwrite(&fornecedores, sizeof(struct Fornecedor), 1, f); printf("gostaria de cadastrar outro fornecedor (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); } void visualizar_fornecedor(){ // lista os fornecedores cadastrados system("clear"); struct Fornecedor fornecedores; FILE* f; f = fopen("fornecedores.txt", "rb"); while (fread(&fornecedores, sizeof(struct Fornecedor), 1, f)==1){ printf("---------------------------------------------"); quebra_linha(); printf("Codigo de registro: %s\n", fornecedores.cod); printf("Cnpj: %s\n", fornecedores.cnpj); printf("Empresa %s\n", fornecedores.cia); printf("---------------------------------------------"); quebra_linha(); } fclose(f); getchar(); getchar(); menu(); } void inputEstoque(){ //cadastrar o estoque char resp; system("clear"); struct Produto produtos; FILE* f; f = fopen("estoque.txt", "ab"); do { preenche_produtos (&produtos); fwrite(&fornecedores, sizeof(struct Produto), 1, f); quebra_linha(); printf("gostaria de cadastrar outro produto (s/n) ? \n"); getchar(); scanf("%c",&resp); }while(resp =='s'); fclose(f); system("clear"); menu(); } void visualizar_Estoque(){ // listar estoque cadastrado system("clear"); struct Produto produtos; FILE* f; f = fopen("estoque.txt", "rb"); while (fread(&fornecedores, sizeof(struct Produto), 1, f)==1){ printf("---------------------------------------------"); quebra_linha(); printf("Codigo de registro: %s\n", produtos.f.cod); printf("Cnpj: %s\n", produtos.f.cnpj); printf("Empresa %s\n", produtos.f.cia); printf ("Produto %s\n", produtos.nome); printf ("Quantidade %d\n", produtos.qtd); printf("preco unidade %d\n", produtos.custo); printf(" valor do estoque %d\n", produtos.valorc); printf("lucro esperado %d\n", produtos.venda); printf("---------------------------------------------"); quebra_linha(); } fclose(f); getchar(); getchar(); menu(); } // menu void menu (){ system("clear"); printf (" --------------ESTOQUE EMPRESA ABC--------------\n"); quebra_linha(); printf("Menu:\n"); printf("4 - Consultar estoque cadastrado: \n"); printf("2 - Consultar fornecedores cadastrados: \n"); printf("3 - Cadastrar novo item no estoque: \n"); printf("1 - Cadastrar novo fornecedor: \n"); printf("5 - sair\n"); opcao_menu(); } void opcao_menu(){ int opcao; scanf("%d",&opcao); while(opcao <1 || opcao>5){ printf("opcao nao disponivel no menu\n"); printf("digite o menu que deseja acessar: \n"); scanf("%d",&opcao); } switch (opcao){ case 1: getchar(); inputFornecedor(); break; case 2: visualizar_fornecedor(); break; case 3: inputEstoque(); break; case 4: visualizar_Estoque(); break; default: printf("valor invalido"); } } int main(){ menu(); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×