Ir ao conteúdo
  • Cadastre-se

peedroroi

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

0
  1. @arfneto, vou responder um por um. Desculpe se alguma pergunta for leiga. Realmente estou no início. Como dito anteriormente, nos foi recomendado usar o system("cls") para limpar a tela (limpar tudo que aconteceu até aquele ponto para a tela não ficar poluída) e o system("Pause") é para que o Prompt de Comando não feche ao final do teste do programa e consigamos ler tudo que foi escrito/respondido. Perfeito. Usei sua recomendação e gostei. Sobre o uso de arquivos, sinceramente não sei como fazer isso. Por que desperdício ou erro? Me explique por, favor. Me dê um exemplo usando o código onde eu retornaria algo (transformando função void em return). Exemplo: o que exatamente eu retornaria e como usaria esse retorno; qual a vantagem no caso específico). Perdão. Não entendi muito bem essa parte. No caso, o ideal seria eu usar um arquivos com respostas pré-estabelecidas ao invés de eu digitar manualmente. É isso? Se sim, como eu faria isso? Poderia me explicar o que constantes e como funcionam dentro do código? Ainda não tem, mas vou colocar no futuro. Então, ao invés de uma função void para o menu, faria uma função com retorno? Quando você diz fluxo de saída está se referindo aos "printf"? Sobre o uso de arquivos, sinceramente não sei como fazer isso. Poderia me ensinar ou passar alguma referência? Obrigado por tirar um tempo e me responder. Aqui está o código novo (No momento, está armazenando e mostrando apenas um endereço por empresa). Gostaria que apontassem quais mudanças específicas preciso fazer para armazenar e depois exibir os "n" endereços de cada empresa. #include <stdlib.h> #include <stdio.h> #include <locale.h> #include <string.h> typedef struct{ char pais[80]; char estado[80]; char municipio[80]; char logradouro[80]; int numero; int cep; } Endereco; typedef struct{ int id; char nome[80]; char cnpj[80]; char proprietario[80]; int funcionarios; int qtd_endereco; Endereco endereco; } Empresa; //DECLARACAO DAS FUNCOES QUE estão ABAIXO DA MAIN void limpar(); void limpezaDados(int tam, Empresa cadastro[]); void cadastrarEmpresa(int tam, Empresa cadastro[]); void imprimirRelatorio(int tam, Empresa cadastro[]); void buscaCompara(int tam, Empresa cadastro[]); //INICIO DA MAIN int main(void) { system("clear"); setlocale(LC_ALL, "Portuguese_Brazil"); int tam; printf("Este programa cadastra e imprime informações de N empresas!\n\n"); printf("Insira o numero de empresas a serem cadastradas: "); scanf("%d",&tam); //LOCAL ONDE SÃO ARMAZENADOS OS DADOS Empresa cadastro[tam]; //INVOCO A LIMPEZA DE DADOS limpezaDados(tam, cadastro); //INVOCO A ENTRADA DE DADOS cadastrarEmpresa(tam, cadastro); //INVOCO O RELATORIO INICIAL imprimirRelatorio(tam, cadastro); //INVOCO A FUNCAO QUE BUSCA POR NOME OU CNPJ E EXIBE RELATORIO FINAL buscaCompara(tam, cadastro); printf("\n\nObrigado por utilizar o nosso programa!!!\n\n"); system("Pause"); return 0; } //FUNCAO P/ LIMPAR A TELA void limpar(){ printf("\n\n\n"); system("clear"); printf("\n\n\n"); } //FUNCAO PARA LIMPEZA DE DADOS NAS ARRAYS void limpezaDados(int tam, Empresa cadastro[]){ int i; for(i=0;i<tam;i++){ strcpy(cadastro[i].nome, "NULL"); strcpy(cadastro[i].cnpj, "NULL"); strcpy(cadastro[i].proprietario, "NULL"); cadastro[i].funcionarios = 0; cadastro[i].qtd_endereco = 0; strcpy(cadastro[i].endereco.pais, "NULL"); strcpy(cadastro[i].endereco.estado, "NULL"); strcpy(cadastro[i].endereco.municipio, "NULL"); strcpy(cadastro[i].endereco.logradouro, "NULL"); cadastro[i].endereco.numero = 0; cadastro[i].endereco.cep = 0; } } //FUNCAO PARA ENTRADA DE DADOS void cadastrarEmpresa(int tam, Empresa cadastro[]){ int i; for(i=0;i<tam;i++){ printf("\n\nCADASTRO DA EMPRESA %d\n",i+1); printf("\nInforme o ID da empresa: "); scanf("%d%*c", &cadastro[i].id); printf("\nInforme o NOME da empresa: "); fgets(cadastro[i].nome,79,stdin); printf("\nInforme o CNPJ da empresa: "); fgets(cadastro[i].cnpj,79,stdin); printf("\nInforme o PROPRIETARIO da empresa: "); fgets(cadastro[i].proprietario,79,stdin); printf("\nInforme a QUANTIDADE de funcionarios da empresa: "); scanf("%d%*c", &cadastro[i].funcionarios); printf("\nInforme a QUANTIDADE de enderecos da empresa: "); scanf("%d%*c", &cadastro[i].qtd_endereco); //USO OUTRO FOR PARA MOSTRAR OS "N" ENDEREÇOS? E COMO SERIA ESSE FOR? printf("\nInforme o ENDERECO da empresa: "); printf("\n\nPais: "); fgets(cadastro[i].endereco.pais,79,stdin); printf("\nEstado: "); fgets(cadastro[i].endereco.estado,79,stdin); printf("\nMunicipio: "); fgets(cadastro[i].endereco.municipio,79,stdin); printf("\nLogradouro: "); fgets(cadastro[i].endereco.logradouro,79,stdin); printf("\nNumero: "); scanf("%d%*c",&cadastro[i].endereco.numero); printf("\nCEP: "); scanf("%d%*c",&cadastro[i].endereco.cep); printf("\n\n"); } } //FUNCAO PARA EXIBIR INFOS DAS EMPRESAS //POR QUE EU TENHO QUE USAR DUPLA QUEBRA DE LINHA PRA SEPARAR ALGUNS? void imprimirRelatorio(int tam, Empresa cadastro[]){ int i; for(i=0;i<tam;i++){ printf("\n\nRELATORIO INICIAL DA EMPRESA"); printf("\n================================\n"); printf("\nID DA EMPRESA: %d", cadastro[i].id); printf("\n\nNOME DA EMPRESA: %s", cadastro[i].nome); printf("\nCNPJ DA EMPRESA: %s", cadastro[i].cnpj); printf("\nPROPRIETARIO: %s", cadastro[i].proprietario); printf("\nQUANT DE FUNCIONARIOS: %d", cadastro[i].funcionarios); printf("\n\nQUANT DE ENDERECOS: %d",cadastro[i].qtd_endereco); //O QUE FAZER PARA MOSTRAR 'N' ENDERECOS? USO OUTRO FOR? E COMO SERIA ESSE FOR? printf("\n\n\nENDERECO DA EMPRESA: "); printf("\n\nPais: %s", cadastro[i].endereco.pais); printf("\nEstado: %s", cadastro[i].endereco.estado); printf("\nMunicipio: %s", cadastro[i].endereco.municipio); printf("\nLogradouro: %s", cadastro[i].endereco.logradouro); printf("\nNumero: %d", cadastro[i].endereco.numero); printf("\n\nCEP: %d", cadastro[i].endereco.cep); } printf("\n"); } //FUNCAO PARA BUSCAR E COMPARAR void buscaCompara(int tam, Empresa cadastro[]){ char nome_busca[80]; int i; int controle = -1; printf("\n\nInforme o NOME ou CNPJ da empresa para busca no sistema: "); fgets(nome_busca,79,stdin); fflush(stdin); for(i=0;i<tam;i++){ if(strcmp(cadastro[i].nome,nome_busca) == 0 || strcmp(cadastro[i].cnpj,nome_busca) == 0){ controle = i; } } if(controle != -1){ printf("\n\nRELATORIO FINAL DA EMPRESA"); printf("\n================================\n"); printf("\nID DA EMPRESA: %d", cadastro[controle].id); printf("\n\nNOME DA EMPRESA: %s", cadastro[controle].nome); printf("\nCNPJ DA EMPRESA: %s", cadastro[controle].cnpj); printf("\nPROPRIETARIO: %s", cadastro[controle].proprietario); printf("\nQUANT DE FUNCIONARIOS: %d", cadastro[controle].funcionarios); printf("\n\nQUANTIDADE DE ENDEREÇOS: %d", cadastro[controle].qtd_endereco); fflush(stdin); //O QUE FAZER PARA MOSTRAR 'N' ENDERECOS? USO OUTRO FOR? E COMO SERIA ESSE FOR? printf("\n\nENDERECO"); printf("\n\nPais: %s", cadastro[controle].endereco.pais); printf("\nEstado: %s", cadastro[controle].endereco.estado); printf("\nMunicipio: %s", cadastro[controle].endereco.municipio); printf("\nLogradouro: %s", cadastro[controle].endereco.logradouro); printf("\nNumero: %d", cadastro[controle].endereco.numero); printf("\n\nCEP: %d", cadastro[controle].endereco.cep); printf("\n"); }else{ printf("\n\nA empresa não foi encontrada!\n"); } } Então, bastava eu colocar o número "10" (no caso, o máximo de endereços) no ligar do "i"? Mandei o código novamente aqui na discussão. Dá uma olhada, se puder, por favor.
  2. @arfneto Muito obrigado por tirar um tempo e responder minhas dúvidas. Até agora, tive menos de um mês em contato com a linguagem C. Sobre "ponteiros", @mauro_b e @arfneto, o professor quer que aprendamos primeiro como fazer com arrays para depois introduzir uma maneira mais fácil, no caso os pointers. Nos foi recomendado usar o system("cls") para limpar a tela e o system("Pause") é para o prompt não fechar ao final do teste do programa. Se tiverem mais alguma dica ou consideração, gostaria que me mostrassem de maneira mais ilustrativa, mostrando como a parte do código deveria ser escrita e comparando com o que escrevi previamente. De qualquer forma, irei fazer modificações no código atual. Estou iniciando, mas me esforçarei ao máximo. Mais uma vez, obrigado.
  3. Olá, pessoal. Comecei a faculdade de Sistemas recentemente e estou com dúvidas em um exercício. Meu professor pediu para que criássemos um programa onde é possível realizar o cadastro de empresas o qual, além de cadastrá-las, é possível buscar, editar e/ou excluir o cadastro das mesmas futuramente (sem usar ponteiros). Detalhe: a empresa pode ter mais de um endereço. Estou com problemas na parte de salvar e mostrar os "n" endereços que uma empresa pode ter. Poderiam me ajudar com o código? Coloquei comentários onde estou com dúvidas no código. Ficarei muito grato com a ajuda. #include <stdlib.h> #include <stdio.h> #include <locale.h> #include <string.h> //STRUCT ENDERECO typedef struct{ int qnt_endereco; char pais_endereco[80]; char estado_endereco[80]; char municipio_endereco[80]; char logradouro_endereco[80]; int numero_endereco; int cep_endereco; } Endereco; //STRUCT CADASTRO typedef struct{ //COLOCAR ID DA EMPRESA char nome_empresa[80]; char cnpj_empresa[80]; char proprietario_empresa[80]; int funcionarios_empresa; Endereco endereco; } Cadastro; //FUNCAO LIMPA void limpa(){ printf("\n\n\n"); system("Pause"); system("cls"); } //FUNCAO PARA ENTRADA DE DADOS void cadastrarEmpresa(Cadastro empresa[], int tam){ int i; for(i=0;i<tam;i++){ printf("\nInforme o NOME da empresa: "); fflush(stdin); fgets(empresa[i].nome_empresa,79,stdin); fflush (stdin); printf("\nInforme o CNPJ da empresa: "); fflush(stdin); fgets(empresa[i].cnpj_empresa,79,stdin); fflush (stdin); printf("\nInforme o PROPRIETARIO da empresa: "); fflush(stdin); fgets(empresa[i].proprietario_empresa,79,stdin); fflush (stdin); printf("\nInforme a QUANTIDADE de funcionarios da empresa: "); fflush (stdin); scanf("%d%*c", &empresa[i].funcionarios_empresa); fflush (stdin); //O QUE FAZER PARA SALVAR E MOSTRAR 'N' ENDERECOS? printf("\nInforme a QUANTIDADE de enderecos da empresa: "); scanf("%d%*c", &empresa[i].endereco.qnt_endereco); } for(i=0;i</*O QUE COLOCO AQUI???empresa[i].endereco.qnt_endereco*/;i++){ printf("\nInforme o ENDERECO da %d empresa: ",i+1); printf("\n\nPais: "); fflush(stdin); fgets(empresa[i].endereco.pais_endereco,79,stdin); fflush (stdin); printf("\nEstado: "); fflush(stdin); fgets(empresa[i].endereco.estado_endereco,79,stdin); fflush (stdin); printf("\nMunicipio: "); fflush(stdin); fgets(empresa[i].endereco.municipio_endereco,79,stdin); fflush (stdin); printf("\nLogradouro: "); fflush(stdin); fgets(empresa[i].endereco.logradouro_endereco,79,stdin); fflush (stdin); printf("\nNumero: "); fflush(stdin); scanf("%d%*c",&empresa[i].endereco.numero_endereco); fflush (stdin); printf("\nCEP: "); fflush(stdin); scanf("%d%*c",&empresa[i].endereco.cep_endereco); fflush(stdin); printf("\n\n"); } } //FUNCAO PARA EXIBIR INFOS DAS EMPRESAS void imprimirRelatorio(Cadastro empresa[], int tam){ int i; for(i=0;i<tam;i++){ printf("\n\nRELATORIO INICIAL DA EMPRESA\n"); printf("\n\nNOME DA EMPRESA: %s", empresa[i].nome_empresa); printf("\nCNPJ DA EMPRESA: %s", empresa[i].cnpj_empresa); printf("\nPROPRIETARIO: %s", empresa[i].proprietario_empresa); printf("\nQUANT DE FUNCIONARIOS: %d", empresa[i].funcionarios_empresa); printf("\n\nQUANT DE ENDERECOS: %d",empresa[i].endereco.qnt_endereco); } //O QUE FAZER PARA MOSTRAR 'N' ENDERECOS? for(i=0;i</*O QUE COLOCO AQUI??? empresa[i].endereco.qnt_endereco*/;i++){ printf("\n\nENDERECO %d: ",i+1); printf("\n\nPais: %s", empresa[i].endereco.pais_endereco); printf("\nEstado: %s", empresa[i].endereco.estado_endereco); printf("\nMunicipio: %s", empresa[i].endereco.municipio_endereco); printf("\nLogradouro: %s", empresa[i].endereco.logradouro_endereco); printf("\nNumero: %d", empresa[i].endereco.numero_endereco); printf("\n\nCEP: %d", empresa[i].endereco.cep_endereco); } printf("\n"); //POR QUE EU TENHO QUE USAR DUPLA QUEBRA DE LINHA PRA SEPARAR ALGUNS? } int main(void) { system("cls"); setlocale(LC_ALL, "Portuguese_Brazil"); int i, tam; char nome_busca[80]; int controle = -1; printf("Este programa cadastra e imprime informações de N empresas!\n\n"); printf("Insira o numero de empresas a serem cadastradas: "); scanf("%d",&tam); Cadastro empresa[tam]; //COMO TRANSFORMAR EM FUNCAO??? //LIMPEZA DE VETORES for(i=0;i<tam;i++){ strcpy(empresa[i].nome_empresa, "NULL"); strcpy(empresa[i].cnpj_empresa, "NULL"); strcpy(empresa[i].proprietario_empresa, "NULL"); empresa[i].funcionarios_empresa = 0; empresa[i].endereco.qnt_endereco = 0; strcpy(empresa[i].endereco.pais_endereco, "NULL"); strcpy(empresa[i].endereco.estado_endereco, "NULL"); strcpy(empresa[i].endereco.municipio_endereco, "NULL"); strcpy(empresa[i].endereco.logradouro_endereco, "NULL"); empresa[i].endereco.numero_endereco = 0; empresa[i].endereco.cep_endereco = 0; } //INVOCO A ENTRADA DE DADOS cadastrarEmpresa(empresa, tam); //INVOCO A LIMPEZA limpa(); //INVOCO O RELATORIO imprimirRelatorio(empresa, tam); //BUSCA POR NOME OU CNPJ printf("\n\nInforme o NOME ou CNPJ da empresa para busca no sistema: "); fflush(stdin); fgets(nome_busca,79,stdin); fflush(stdin); //COMO TRANSFORMAR EM FUNCAO??? //COMPARACAO DE DADOS for(i=0;i<tam;i++){ if(strcmp(empresa[i].nome_empresa,nome_busca) == 0 || strcmp(empresa[i].cnpj_empresa,nome_busca) == 0){ controle = i; } } //IMPRESSAO POS COMPARACAO if(controle != -1){ printf("\n\nRELATORIO FINAL DA EMPRESA"); printf("\n\nNOME DA EMPRESA: %s", empresa[controle].nome_empresa); printf("\nCNPJ DA EMPRESA: %s", empresa[controle].cnpj_empresa); printf("\nPROPRIETARIO: %s", empresa[controle].proprietario_empresa); printf("\nQUANT DE FUNCIONARIOS: %d", empresa[controle].funcionarios_empresa); printf("\nQUANTIDADE DE ENDEREÇOS: %d", empresa[controle].endereco.qnt_endereco); printf("\n\nENDERECO"); printf("\n\nPais: %s", empresa[controle].endereco.pais_endereco); printf("\nEstado: %s", empresa[controle].endereco.estado_endereco); printf("\nMunicipio: %s", empresa[controle].endereco.municipio_endereco); printf("\nLogradouro: %s", empresa[controle].endereco.logradouro_endereco); printf("\nNumero: %d", empresa[controle].endereco.numero_endereco); printf("\n\nCEP: %d", empresa[controle].endereco.cep_endereco); printf("\n"); }else{ printf("\n\nA empresa não foi encontrada!\n"); } printf("\n\nObrigado por utilizar o nosso programa!!!\n\n"); system("Pause"); 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!