Ir ao conteúdo
  • Cadastre-se

Amanda04

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

7
  1. @isrnick, muito obrigada, muito mesmo. adicionado 1 minuto depois Obrigada
  2. Boa tarde! Estou tentado resolver essa questão: "Programa recebe nome da OS e nome do contêiner e adiciona e remove itens de acordo com as linhas da OS no contêiner informado. Entrada de item da OS que ultrapassar a capacidade do contêiner não deve ser executada e saída de item da OS que deixam quantidade negativa do item no contêiner também não podem ser executada. Informe quais ações tiveram problema". Mas o programa não está imprimindo nenhum dado na pasta. segue o programa: #include <stdio.h> #include <string.h> int total_C(char nome[]) { char pasta[]="container\\", myString[100], nome_item[100]; int quantidade, cont=0; FILE *container=fopen(strcat(pasta, strcat(nome, ".txt")), "r"); while (fgets(myString, 100, container)!=NULL) { sscanf(myString, "%s %d", nome_item, &quantidade); cont +=quantidade; } fclose(container); return cont; } void item_in(char item[], char arq[], int q) { int chave=0, qtd; char pasta[]="container\\", myString[100], nome_C[100]; FILE *ctr=fopen(strcat(pasta,strcat(arq, ".txt")), "w"); while(fgets(myString, 100, ctr)!=NULL) { sscanf(myString, "%s %d", nome_C, &qtd); if (strcmp(item, nome_C)==0) { fprintf(ctr, "%s %d", item, qtd+q); chave=1; } } if (chave==0) { fprintf(ctr, "%s %d", item, q); } fclose(ctr); } void item_out(char item[], char arq[], int q) { int qtd; char pasta[]="container\\", myString[100], nome_C[100]; FILE *container=fopen(strcat(pasta,strcat(arq, ".txt")), "a+"); while(fgets(myString, 100, container)!=NULL) { sscanf(myString, "%s %d", nome_C, &qtd); if (strcmp(item, nome_C)==0) { fprintf(container, "%s %d", item, (qtd-q)); } } fclose(container); } int main(void) { char pasta[]="container\\", nome_OS[100], nome_C[100], myString[100], es[10], item[100]; int q, capacidade_C; scanf("%s %s", nome_OS, nome_C); FILE *lista_C=fopen("container.txt", "r"); while(fgets(myString, 100, lista_C)!=NULL) { int q; char c[100]; sscanf(myString, "%s %d", c, &q); if(strcmp(nome_C, c)==0) { capacidade_C=q; } } fclose(lista_C); FILE *os=fopen(strcat(nome_OS, ".txt"), "r"); FILE *container=fopen(strcat(pasta,strcat(nome_C, ".txt")), "a+"); while(fgets(myString, 100, os)!=NULL) { sscanf(myString, "%s %s %d", es, item, &q); if(strcmp(es, "in")==0) { if ((total_C(nome_C)+q)<=capacidade_C && q>=0) { item_in(item, nome_C, q); fprintf(container, "%s %d", item, q); break; } } else { if ((total_C(nome_C)+q)<=capacidade_C && q>0) { item_out(item, nome_C, q); break; } } } fclose(container); fclose(os); 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!