Ir ao conteúdo
  • Cadastre-se

vagabond1

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

posts postados por vagabond1

  1. @arfneto Entendi amigo, minha dificuldade esta sendo essa de mudar entende?

    int main(){
    
    	struct Pilha minhapilha;
    	int capacidade, op;
    	float valor;
    
    	printf( "\nCapacidade da pilha? " );
    	scanf( "%d", &capacidade );
    
    	criarpilha (&minhapilha, capacidade);
    
    	while( 1 ){ /* loop infinito */
    
    		printf("\n1- empilhar (push)\n");
    		printf("2- desempilhar (POP)\n");
    		printf("3- Mostrar o topo \n");
    		printf("4- sair\n");
    		printf("\nopcao? ");
    		scanf("%d", &op);
    
    		switch (op){
    
    			case 1: //push
    
    				if( estacheia( &minhapilha ) == 1 )
    
    					printf("\nPILHA CHEIA! \n");
    
    				else {
    
    					printf("\nVALOR? ");
    					scanf("%f", &valor);
    					empilhar (&minhapilha, valor);
    
    				}
    				break;
    
    			case 2: //pop
    				if ( estavazia(&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA! \n" );
    
    				else{
    
    					valor = desempilhar (&minhapilha);
    					printf ( "\n%.1f DESEMPILHADO!\n", valor );
    
    				}
    				break;
    
    			case 3: // mostrar o topo
    				if ( estavazia (&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA!\n" );
    
    				else {
    
    					valor = retornatopo (&minhapilha);
    					printf ( "\nTOPO: %.1f\n", valor );
    
    				}
    				break;
    
    			case 4: 
    				exit(0);
    
    			default: printf( "\nOPCAO INVALIDA! \n" );
    		}
    	}
    	
    }

    E no "case 3" onde define o topo e se a pilha esta vazia que não consigo definer pelo:

    void pilha_vazia(Pilha* pi) {
        if(pi == NULL || *pi == NULL)
            printf("\n Pilha está vazia!");
        else
            printf("\n Pilha não está vazia!");
    }
    
    int push(Pilha* pilha, struct prato p) {
       
        if(pilha == NULL)
            return 0;
           
        struct elemento* aux = (struct elemento*)malloc(sizeof(struct elemento));
       
        if(aux == NULL)
            return 0;
       
        aux->item = p;
        aux->prox = (*pilha); //TOPO DA PILHA
       
        *pilha = aux; //Novo elemento passa a ser o primeiro da pilha
       
        return 1;
    }

     

  2. @arfneto Tem sim,

    Esse enunciado que falei, tem que ser feito baseado no exemplo dado em aula

    O professor não aceita de outra forma as funções do struct e pilha

    A unica coisa que pediu para criarmos com liberdade é função do void main/int main para exeibir e imprimir o topo da pilha

    Por isso que o segundo codigo não conta para a resolução do problema, estou me baseando nesse outro codigo

  3. @arfneto apos tentar bastante consegui dessa forma:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct prato {
      char cor[50];
    };
    
    struct elemento {
      struct prato item;
      struct elemento *prox;
    };
    
    typedef struct elemento* Pilha;
    
    Pilha* cria_pilha() {
        Pilha* pi = (Pilha*)malloc(sizeof(Pilha));
       
        if(pi != NULL)
            *pi = NULL;
           
        return pi;
    }
    
    int recupera_tamanho_pilha(Pilha* pi) {
       
        if(pi == NULL)
            return 0;
           
        int tamanho = 0;
        struct elemento* item = *pi;
        while(item != NULL) {
            tamanho++;
            item = item->prox;
        }
       
        return tamanho;
    }
    
    void pilha_vazia(Pilha* pi) {
        if(pi == NULL || *pi == NULL)
            printf("\n Pilha está vazia!");
        else
            printf("\n Pilha não está vazia!");
    }
    
    int push(Pilha* pilha, struct prato p) {
       
        if(pilha == NULL)
            return 0;
           
        struct elemento* aux = (struct elemento*)malloc(sizeof(struct elemento));
       
        if(aux == NULL)
            return 0;
       
        aux->item = p;
        aux->prox = (*pilha); //TOPO DA PILHA
       
        *pilha = aux; //Novo elemento passa a ser o primeiro da pilha
       
        return 1;
    }
    
    
    imprime(Pilha* pi){
        struct elemento* item = *pi;
    
        printf("\n O ultimo  item e  %s", item->item);
       
    }
    
    void main()
    {
        Pilha *pilha;
       
        pilha = cria_pilha();
       
        printf("\n Tamanho da pilha: %d", recupera_tamanho_pilha(pilha));
       
        pilha_vazia(pilha);
       
        struct prato p;
        strcpy(p.cor, "Azul");
        push(pilha, p);
       
        strcpy(p.cor, "Verde");
        push(pilha, p);  
         strcpy(p.cor, "rosa ");
        push(pilha, p);
       
        printf("\n Tamanho da pilha: %d", recupera_tamanho_pilha(pilha));
        imprime(pilha)  ;
    }

    O outro codigo consegui fazer executar:

     

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    typedef struct Pilha {
    
    	int topo; 
    	int capa;
    	float *pElem;
    
    };
    
    void criarpilha( struct Pilha *p, int c ){
    
       p->topo = -1;
       p->capa = c;
       p->pElem = (float*) malloc (c * sizeof(float));
    
    }
    
    int estavazia(struct Pilha* p) {
        return (p->topo < 0);
    }
    
    int estacheia ( struct Pilha *p ){
    
    	if (p->topo == p->capa - 1)
    
    		return 1;
    
    	else
    
    		return 0;
    
    }
    
    void empilhar ( struct Pilha *p, float v){
    
    	p->topo++;
    	p->pElem [p->topo] = v;
    
    }
    
    float desempilhar ( struct Pilha *p ){
    
       float aux = p->pElem [p->topo];
       p->topo--;
       return aux;
    
    }
    
    float retornatopo ( struct Pilha *p ){
    
       return p->pElem [p->topo];
    
    }
    
    int main(){
    
    	struct Pilha minhapilha;
    	int capacidade, op;
    	float valor;
    
    	printf( "\nCapacidade da pilha? " );
    	scanf( "%d", &capacidade );
    
    	criarpilha (&minhapilha, capacidade);
    
    	while( 1 ){ /* loop infinito */
    
    		printf("\n1- empilhar (push)\n");
    		printf("2- desempilhar (POP)\n");
    		printf("3- Mostrar o topo \n");
    		printf("4- sair\n");
    		printf("\nopcao? ");
    		scanf("%d", &op);
    
    		switch (op){
    
    			case 1: //push
    
    				if( estacheia( &minhapilha ) == 1 )
    
    					printf("\nPILHA CHEIA! \n");
    
    				else {
    
    					printf("\nVALOR? ");
    					scanf("%f", &valor);
    					empilhar (&minhapilha, valor);
    
    				}
    				break;
    
    			case 2: //pop
    				if ( estavazia(&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA! \n" );
    
    				else{
    
    					valor = desempilhar (&minhapilha);
    					printf ( "\n%.1f DESEMPILHADO!\n", valor );
    
    				}
    				break;
    
    			case 3: // mostrar o topo
    				if ( estavazia (&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA!\n" );
    
    				else {
    
    					valor = retornatopo (&minhapilha);
    					printf ( "\nTOPO: %.1f\n", valor );
    
    				}
    				break;
    
    			case 4: 
    				exit(0);
    
    			default: printf( "\nOPCAO INVALIDA! \n" );
    		}
    	}
    	
    }

    Mas tentei implementar as funções do segundo codigo no primeiro e sem resultado, então decidi fazer de outra forma

  4. Em 05/06/2020 às 21:34, arfneto disse:
    
    	if (pi == NULL || *pi == NULL)

    A segunda condição não faz sentido. (*pi) é uma struct.

     

    Você tem uma função push() perdida no código. 

     

    E faltam uns struct em declarações de pilha.

     

    Ao invés de declarar 

    
    struct Pilha {
    
    	int topo;
    	int capa;
    	float* pElem;
    
    };

    Se acostume a declarar 

    
    typedef struct // (a)
    {
    	int topo;
    	int capa;
    	float* pElem;
    }	Pilha;
    
    // ou mesmo
    
    struct _pilha // (b)
    {
    	int topo;
    	int capa;
    	float* pElem;
    };
    typedef struct _pilha Pilha;

    Assim não precisa ficar repetindo struct em todo lugar. E se não precisa repetir não vai esquecer ;) 

     

    typedef cria um alias, um sinônimo.

     

    O exemplo (b) é mais seguro porque pode ainda usar referências a _pilha dentro da struct porque o nome já é conhecido, Se não precisa, o caso (a) é mais legível.

     

    Em pilhas os métodos push() pop() e top() são consagrados. Podia manter

    Realmene acrescentar a nova declaração resolveu um problema e alterar o (*pi) tambem, mas não estou entendo estes erros, li todos eles mas mesmo alterando não resolve os problemas.

     

    Outra coisa seria no int main, creio que não faz sentido declarar dentro da case o pilha_vazio sendo que esta sendo declarado na struct, certo?

     

    dfff.JPG

    sdfd.JPG

    • Curtir 2
  5. Alguem ai para ajudar no codigo acima?

    Preciso elaborar uma função que exiba o topo da pilha e a função deverá imprimir o elemento do topo, mas esta dando erro no codigo

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    struct Pilha {
    
    	int topo; 
    	int capa;
    	float *pElem;
    
    };
    
    void criarpilha( struct Pilha *p, int c ){
    
       p->topo = -1;
       p->capa = c;
       p->pElem = (float*) malloc (c * sizeof(float));
    
    }
    
    void pilha_vazia(Pilha* pi) {
        if(pi == NULL || *pi == NULL)
            printf("\n Pilha está vazia!");
        else
            printf("\n Pilha não está vazia!");
    }
    
    int push(Pilha* pilha, struct prato p) {
        
        if(pilha == NULL)
            return 0;
            
        struct elemento* aux = (struct elemento*)malloc(sizeof(struct elemento));
        
        if(aux == NULL)
            return 0;
        
        aux->item = p;
        aux->prox = (*pilha);
        
        *pilha = aux; 
        
        return 1;
    }
    
    int estacheia ( struct Pilha *p ){
    
    	if (p->topo == p->capa - 1)
    
    		return 1;
    
    	else
    
    		return 0;
    
    }
    
    void empilhar ( struct Pilha *p, float v){
    
    	p->topo++;
    	p->pElem [p->topo] = v;
    
    }
    
    float desempilhar ( struct Pilha *p ){
    
       float aux = p->pElem [p->topo];
       p->topo--;
       return aux;
    
    }
    
    float retornatopo ( struct Pilha *p ){
    
       return p->pElem [p->topo];
    
    }
    
    int main(){
    
    	struct Pilha minhapilha;
    	int capacidade, op;
    	float valor;
    
    	printf( "\nCapacidade da pilha? " );
    	scanf( "%d", &capacidade );
    
    	criarpilha (&minhapilha, capacidade);
    
    	while( 1 ){ /* loop infinito */
    
    		printf("\n1- empilhar (push)\n");
    		printf("2- desempilhar (POP)\n");
    		printf("3- Mostrar o topo \n");
    		printf("4- sair\n");
    		printf("\nopcao? ");
    		scanf("%d", &op);
    
    		switch (op){
    
    			case 1: //push
    
    				if( estacheia( &minhapilha ) == 1 )
    
    					printf("\nPILHA CHEIA! \n");
    
    				else {
    
    					printf("\nVALOR? ");
    					scanf("%f", &valor);
    					empilhar (&minhapilha, valor);
    
    				}
    				break;
    
    			case 2: //pop
    				if ( estavazia(&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA! \n" );
    
    				else{
    
    					valor = desempilhar (&minhapilha);
    					printf ( "\n%.1f DESEMPILHADO!\n", valor );
    
    				}
    				break;
    
    			case 3: // mostrar o topo
    				if ( estavazia (&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA!\n" );
    
    				else {
    
    					valor = retornatopo (&minhapilha);
    					printf ( "\nTOPO: %.1f\n", valor );
    
    				}
    				break;
    
    			case 4: 
    				exit(0);
    
    			default: printf( "\nOPCAO INVALIDA! \n" );
    		}
    	}
    	
    }

     

    • Curtir 1
    • Amei 1
  6. #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    struct Pilha {
    
    	int topo; 
    	int capa;
    	float *pElem;
    
    };
    
    void criarpilha( struct Pilha *p, int c ){
    
       p->topo = -1;
       p->capa = c;
       p->pElem = (float*) malloc (c * sizeof(float));
    
    }
    
    void pilha_vazia(Pilha* pi) {
        if(pi == NULL || *pi == NULL)
            printf("\n Pilha está vazia!");
        else
            printf("\n Pilha não está vazia!");
    }
    
    int push(Pilha* pilha, struct prato p) {
        
        if(pilha == NULL)
            return 0;
            
        struct elemento* aux = (struct elemento*)malloc(sizeof(struct elemento));
        
        if(aux == NULL)
            return 0;
        
        aux->item = p;
        aux->prox = (*pilha);
        
        *pilha = aux; 
        
        return 1;
    }
    
    int estacheia ( struct Pilha *p ){
    
    	if (p->topo == p->capa - 1)
    
    		return 1;
    
    	else
    
    		return 0;
    
    }
    
    void empilhar ( struct Pilha *p, float v){
    
    	p->topo++;
    	p->pElem [p->topo] = v;
    
    }
    
    float desempilhar ( struct Pilha *p ){
    
       float aux = p->pElem [p->topo];
       p->topo--;
       return aux;
    
    }
    
    float retornatopo ( struct Pilha *p ){
    
       return p->pElem [p->topo];
    
    }
    
    int main(){
    
    	struct Pilha minhapilha;
    	int capacidade, op;
    	float valor;
    
    	printf( "\nCapacidade da pilha? " );
    	scanf( "%d", &capacidade );
    
    	criarpilha (&minhapilha, capacidade);
    
    	while( 1 ){ /* loop infinito */
    
    		printf("\n1- empilhar (push)\n");
    		printf("2- desempilhar (POP)\n");
    		printf("3- Mostrar o topo \n");
    		printf("4- sair\n");
    		printf("\nopcao? ");
    		scanf("%d", &op);
    
    		switch (op){
    
    			case 1: //push
    
    				if( estacheia( &minhapilha ) == 1 )
    
    					printf("\nPILHA CHEIA! \n");
    
    				else {
    
    					printf("\nVALOR? ");
    					scanf("%f", &valor);
    					empilhar (&minhapilha, valor);
    
    				}
    				break;
    
    			case 2: //pop
    				if ( estavazia(&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA! \n" );
    
    				else{
    
    					valor = desempilhar (&minhapilha);
    					printf ( "\n%.1f DESEMPILHADO!\n", valor );
    
    				}
    				break;
    
    			case 3: // mostrar o topo
    				if ( estavazia (&minhapilha) == 1 )
    
    					printf( "\nPILHA VAZIA!\n" );
    
    				else {
    
    					valor = retornatopo (&minhapilha);
    					printf ( "\nTOPO: %.1f\n", valor );
    
    				}
    				break;
    
    			case 4: 
    				exit(0);
    
    			default: printf( "\nOPCAO INVALIDA! \n" );
    		}
    	}
    	
    }

    Alguem ai para ajudar no codigo acima?

    Preciso elaborar uma função que exiba o topo da pilha e a função deverá imprimir o elemento do topo, mas esta dando erro no codigo

    valeu

  7. 30 minutos atrás, Tio Chang disse:

    994695361_4ee959fa-f5ff-4045-ba0a-1b62cfe7850a(1).thumb.jpg.400c0bb1d918122365ae6e36d9325bd9.jpg

    adicionado 3 minutos depois

    A primeira etapa eu ja fiz que é essa, o exercicio ja afirma isso, entao teoricamente nem precisa fazer.

     

    Agora o que o exercicio quer de voce é isso

     

     

     

     

    Resumindo, tem haver com o switch que sera colocado em cada filial, se tu vai usar Vlan, quais os paramentros da rede para limitar em 254 pcs e para liberar acima de 254 pcs no wifi

     

    Se eu fizer tudo acabou se o exercicio.

    adicionado 28 minutos depois

    1292686945_Semttulo-1cpia.thumb.jpg.96205901581fd248bce99683085a3c76.jpg

    Obrigado amigo, vou tentar fazer agora.

  8. Alguem poderia me dar uma luz com isso?

     Veja o enunciado: 

    Prezados Senhores, boa noite!

     

    Para resolução da segunda atividade, favor utilizar a descrição abaixo:

     

    Você foi contratado para planejar a criação de uma rede para uma corporação com as seguintes características:

     

    •    A corporação possui uma Unidade Matriz que se interliga com outras 3 Unidades Filiais através de links de fibra ótica de 1 Gbps.

    •    Cada Filial deverá ter sua respectiva rede segmentada em três áreas: VENDAS, FINANCEIRO e WIFI .

    •    As redes VENDAS e FINANCEIRO não deverão permitir mais do que 254 dispositivos conectados .

    •    A rede WIFI deve permitir acima de 254 dispositivos conectados.

    •    Todas as Unidades (Matriz e Filiais) se comunicam com a internet por um link de fibra ótica de 100 Mbps.

     

    Você deve planejar as redes de forma que não existam conflitos de ips dentro da rede.

     

    Todas as Unidades devem se comunicar apenas com a Matriz, sem a necessidade de uma filial se comunicar com outra filial.

     

    Bom, nunca utilizei o cisco antes pois tudo que "aprendi" foi teorico em redes e não pratico, mas não estou entendo quase nada de funcionalidades do cisco

    Isso dificulta muito. O que consegui fazer ate agora foi na imagem que postei, quem puder me ajudar ficaria grato.

     

    Obrigado!

    Capturar.JPG

  9. Em 14/04/2020 às 22:45, arfneto disse:

    Em tempos de confinamento o tempo gasto nessas coisas aumentou :) e esse problema é interessante.

     

    Eis os arquivos. É lógico que eu não fiz nada exceto rodar aquele programa para 10 clientes 8 endereços 12 telefones e 9 tipos. De todo modo:
     

    Clientes                          
     

    
    0001Cliente0001                                       
    0002Cliente0002                                       
    0003Cliente0003                                       
    0004Cliente0004                                       
    0005Cliente0005                                       
    0006Cliente0006                                       
    0007Cliente0007                                       
    0008Cliente0008                                       
    0009Cliente0009                                       
    0010Cliente0010                                       
    

    Endereços

    
    0001Rua Via0001                                       20001000
    0002Rua Via0002                                       20002000
    0003Rua Via0003                                       20003000
    0004Rua Via0004                                       20004000
    0005Rua Via0005                                       20005000
    0006Rua Via0006                                       20006000
    0007Rua Via0007                                       20007000
    0008Rua Via0008                                       20008000
    

    Telefones

    
    0001+55 (11) 930010001  
    0002+55 (11) 930020002  
    0003+55 (11) 930030003  
    0004+55 (11) 930040004  
    0005+55 (11) 930050005  
    0006+55 (11) 930060006  
    0007+55 (11) 930070007  
    0008+55 (11) 930080008  
    0009+55 (11) 930090009  
    0010+55 (11) 930100010  
    0011+55 (11) 930110011  
    0012+55 (11) 930120012  
    

    Tipos

    
    00010001
    00020002
    00030003
    00040004
    00050005
    00060006
    00070007
    00080008
    00090009

    Relacionamentos

    
    0001:0001:0001
    0002:0002:0000
    0002:0000:0002
    0003:0003:0003
    0004:0004:0004
    0004:0000:0005
    0005:0005:0006
    0005:0000:0007
    0006:0006:0000
    0007:0007:0000
    0008:0008:0008
    0008:0000:0009
    0009:0002:0010
    0010:0004:0011
    0010:0000:0012

    Esse eu digitei a olho no terminal mesmo. Isso é uma simples tabela. X:Y:Z que relaciona os caras. X é o cliente. Y é a Id do endereço, Z é  id do telefone na tabela. Quando for zero não importa.

     

    Você já sabe como ler os arquivos. Ler as relações seria igual. O arquivo está claro classificado por cliente por que você pode escolher isso. Então ao ler as relações tem tudo o que falta, exceto os tipos de telefone.

     

    E conforme o usuário digitar mais dados eles vão para as listas de Clientes, Enderecos e tal. Tudo com tamanho fixo, afinal esse não é o cadastro do INSS. Algo simples tipo

    
        Cliente      cliente[100];
        Endereco     endereco[100];
        Telefone     telefone[200];
        TipoTelefone tipo_telefone[9];
    
        Numero  total_cli = 0;
        Numero  total_end = 0;
        Numero  total_tel = 0;
        Numero  total_tip = 0;

    No início você carrega com o que veio nos arquivos, para poder testar tudo sem digitar nada.

    Conforme entrarem dados pelo menu você coloca nas tabelas e atualiza as relações.

     

    As relações podem ficar com o mesmo formato para não criar mais nada.

     

    Na saída grava tudo de volta no disco e a vida segue.

     

    Meu palpite.

     

    Com base nos estudos que você me passou, consegui montar o seguinte codigo:

    Estou com problemas para imprimir o Logradouro pois aparece um monte de numero aleatorio, mesmo eu inserido uma sequencia de numero. E fiz via teclado pois preciso testar assim.

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    int main () {
    
    struct cliente
    {
        int idCliente;
        char nome[50];
    };
    
    struct cliente *x = (struct cliente *) malloc(10 * sizeof(struct cliente));
    
    struct endereco
    {
        int endereco[100];
    	int idEndereco;
    	int cep;
    };
    
    struct endereco *y = (struct endereco *) malloc(10 * sizeof(struct endereco));
    
    
    struct telefone
    {
        int telefone;
    	int idTelefone;
    	char tipo[100];
    };
    
    struct telefone *z = (struct telefone *) malloc(10 * sizeof(struct telefone));
    
    int cadastro;
    	 
    	printf("\n -----Quantos clientes deseja cadastrar?-----\n ");
    	scanf("%i", &cadastro);
    	 
    	 
    	 	int count  = 1;
    		for( count = 1 ; count <= cadastro; count++){
    			
    				
    			printf("\n Digite o nome do Cliente: \n");
    			scanf("%s", &x[count].nome);
    
    			
    			printf("\n Digite o telefone: \n");
    			scanf("%d", &z[count].telefone);
    			
    			
    			printf("\n Digite o Tipo de Telefone (Celular/Fixo): \n");
    			scanf("%s", &z[count].tipo);
    			
    			
    			printf("\n Digite o Logradouro: \n");
    			scanf("%s", &y[count].endereco);
    			
    			printf("\n Digite o CEP: \n");
    			scanf("%i", &y[count].cep);
    	
    		}
        x[cadastro].idCliente = cadastro;	
    	y[cadastro].idEndereco = cadastro;
    	z[cadastro].idTelefone = cadastro;
    	
    FILE *arquivo;   	
    arquivo = fopen("arquivocliente.txt", "w");
    struct cliente;
    if (arquivo==NULL){
    printf("Erro ao criar arquivo.\n");
    
    }else{
    	
         
        fprintf( arquivo, "###Nome###  \n" );
      	fprintf( arquivo, "Id: %i \n", x[cadastro].idCliente);
      	fprintf( arquivo, "Nome: %s \n\n", x[cadastro].nome);
      	
      	fprintf( arquivo, "###Telefone###  \n" );
      	fprintf( arquivo, "Id: %i \n", z[cadastro].idTelefone);
      	fprintf( arquivo, "Telefone: %d \n", z[cadastro].telefone);
      	fprintf( arquivo, "Tipo: %s \n\n", z[cadastro].tipo);
      	
      	fprintf( arquivo, "##Endereço##  \n" );
      	fprintf( arquivo, "Id: %i \n", y[cadastro].idEndereco);
      	fprintf( arquivo, "Logradouro: %s \n", y[cadastro].endereco);
      	fprintf( arquivo, "CEP: %i \n\n", y[cadastro].cep);
      	 	  	
      	fclose(arquivo);
    	return 0;	
        
    	printf("\tArquivo gravado com sucesso.\n");
    
    fclose(arquivo);
    
    }
        getch();
        return 0;
    }

     

  10. @arfneto Nossa ficou otimo a explicação, obrigado!

    Não sei por que esse for esta dando erro, tentei de tudo para tentar resolver.

    *somente implementei as relações e não alterei seu codigo para testar o mesmo, mas assim que estiver rodando vou realizar as alterações para facilitar ainda mais o entendimento.

     

    Mas muito obrigado, já ajudou bastante.

    image.thumb.png.23d6be17b90714f181bfb7d2ca8cc0fa.png

  11. @arfneto Exato, neste programa é o que mais se aproxima do que preciso, este foi o que eu mesmo criei com algumas bases. Pois esta pedindo para escrever com o Teclado as informações do cliente, só que esse programa executa e gera o arquivo TXT porém fica tudo meio que uma bagunça.

    #include <stdio.h>
    #include <stdlib.h>
    #define T 2
                                  
    struct cliente {
    char nome [100];
    int telefone;
    int id;
    char tipo [50];
    int endereco;
    int cep;
    };
    
    struct cliente ler (){
    struct cliente a;
        printf("\n#Cliente\n");
        
        printf("\n----Id:---- \n");
        scanf("%d",&a.id);
        printf("----Digite seu nome:---- \n");
        fflush(stdin);
        gets(a.nome);
        printf("\n#Telefone\n");
        
        printf("\n----Id:---- \n");
        scanf("%d",&a.id);
        printf("\n----Telefone:---- \n");
        scanf("%d",&a.telefone);
        printf("\n----Tipo:---- \n");
        fflush(stdin);
        gets(a.tipo);
        printf("\n#Endereco\n");
        
        printf("\n----Id:---- \n");
        scanf("%d",&a.id);
        printf("\n----Endereco:---- \n");
        scanf("%d",&a.endereco);
        printf("\n----CEP:---- \n");
        scanf("%d",&a.cep);
        printf("\n============================\n");
    return a;
    }
    
    void imprime (struct cliente a[T]){    
    int x; 
    for (x=0; x<T; x++) {
        printf("\t Id: %d\n",a[x].id);
        printf("\t Nome: %s\n",a[x].nome);
        printf("\t Telefone: %d\n",a[x].telefone);
        printf("\t Tipo: %s\n",a[x].tipo);
        printf("\t Endereco: %d\n",a[x].endereco);
        printf("\t CEP: %d\n",a[x].cep);
        }
    }
    int main () {    
    int x;
    char caminho[]="cliente.txt",caractere;
    FILE *arquivo;arquivo = fopen (caminho,"w");
    struct cliente a[T];
    if (arquivo==NULL){
    printf("Erro ao criar arquivo.\n");
    
    }else{
        
    for(x=0; x<T; x++) {        
    a[x]= ler();
        fprintf(arquivo,"Id: %d\nNome: %s\nTelefone: %d\nTipo %s\nEndereco: %d\nCEP: %d\n ", a[x].id,a[x].nome,a[x].telefone,a[x].tipo,a[x].endereco,a[x].cep);
        printf("\tArquivo gravado com sucesso.\n");
    }
    fclose(arquivo);
    
    }
    
        imprime(a);
        system("pause");
        return 0;
    }

     

    adicionado 1 minuto depois

    @arfneto E por gentileza, teria o link desse programa que citou aqui no forum?

    Obrigado!

     

  12. @arfneto Entendi um pouco, mas tipo, nas questões das relações que mora a dificuldade para implementar o que é pedido. Geralmente busco essas dificuldades em codigos base para poder assim realizar uma logica e fazer a arquitetura do programa. Mas colocar Struct com geração de arquivo TXT esta muito complicado para o que eu aprendi ainda. To meio que sem um rumo pra ir.

  13. @arfneto Obrigado novamente, entendi um pouco sobre os arquivos. Minha maior dificuldade é estruturar de forma correta e implementar as nomeclaturas no codigo, não sou muito da area de programação e estou aprendendo aos poucos. Gostei do exemplo que me passou mas como disse que a maior dificuldade é implementar, creio que da para usar sua base sem problemas.

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!