Ir ao conteúdo
  • Cadastre-se

EmersonVNI

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. insereOrdenadoForn, a que está comentada...
  2. Boa noite, precisoda ajuda do pessoal aqui, por favor, alguem conseguiria encontrar a solução do meu seguinte problema, Abaixo segue todo o codigo do meu trabalho... e o problema e o seguinte, meu trabalho contem uma Main.c, uma cliente.c e uma fornecedor.c o problema e igualmente aplicado na cliente.c e fornecedor.c, o que acontece e que quando eu tento inserir meus dados por scanf, a função esta substituindo os valores, porém quando passo de forma estatica, ocorre normalmente, o codigo segue abaixo, alguém poderia verificar e me retornar uma solução por favor T.T Main.c #include <stdio.h>#include <stdlib.h>#include <string.h>#include "fornecedor.h"#include "cliente.h"void main(){FornecedorL* f;int escolha,cf=-1,cc=-1,n;char *nome = (malloc(sizeof(nome))),*descs = (malloc(sizeof(descs)));ClienteL* cliente;char* z ="coisas coisas";char* d ="lol";criarLista1(&cliente);criarListaForn(&f);do{printf("-------------MENU------------\n1 - Cadastrar novo c\n2 - Remover c\n3 - Imprimir c(s)\n4 - Buscar um c\n");printf("5 - Cadastrar novo fornecedor\n6 - Remover fornecedor\n7 - Imprimir fornecedor(es)\n8 - Editar descricao de produtos de fornecedor\n");printf("9 - Sair\n");printf("Escolha uma opcao: ");scanf("%d", &escolha );switch (escolha) {case 1:cc++;inserirElementOrdenado(&cliente, z,cc);cc++;inserirElementOrdenado(&cliente, d,cc);cc++;inserirElementOrdenado(&cliente, z,cc);cc++;inserirElementOrdenado(&cliente, "ajingles", cc);cc++;inserirElementOrdenado(&cliente, "rafael",cc);break;case 2:removerElemento(d, &cliente);break;case 3:imprimeListaRec(&cliente);getch();break;case 4:buscaListaRec(&cliente, "jingles");break;case 5:printf("Insira o nome do fornecedor: ");scanf(" %s", nome);printf("Insira descricao: ");scanf(" %s", descs);cf++;inserirFornecedor(&f,nome,cf,descs);getch();break;case 6:printf("Qual elemento deseja remover: ");scanf("%d", &n);removerElementoForn(n, &f);break;case 7:imprimeForn(&f);getch();break;case 8:printf("Qual elemento deseja editar: ");scanf("%d", &n);printf("Insira a edicao");scanf(" %s", descs);editaProdForn(&f, n, descs);break;}system("CLS");}while(escolha!=9);liberaLista(&cliente);liberaListaForn(&f);getch();} Fornecedor.c #include <stdio.h>#include <stdlib.h>#include <conio.h>#include <windows.h>#include <math.h>#include <string.h>typedef struct fornecedor{int id;char* nome;char* desc;struct fornecedor* prox;}FornecedorL;void criarListaForn (FornecedorL** l){ *l = NULL;}void inserirFornecedor (FornecedorL** l, char *v,int ids,char *d){FornecedorL* n= malloc(sizeof(FornecedorL));n->id=0; if(n!=NULL){ n->nome=v; n->desc=d; n->id=ids; n->prox =*l; *l=n; }else{ printf("espaco nao alocado com sucesso"); } } /*void insereOrdenadoForn(FornecedorL** l,char *v,int ids, char *descs){ FornecedorL* p,*ant = NULL; for(p = *l;((p != NULL) && (p->id< ids));p = p->prox) ant = p; FornecedorL* n = malloc(sizeof(FornecedorL)); n->nome = v; n->id = ids; n->desc = descs; if(ant == NULL){ n->prox = *l; *l = n; }else{ n->prox = p; ant->prox = n; }else{ printf("espaço não alocado!"); }}*/int numeroForn(FornecedorL** l){ FornecedorL *p; int i = 0; for(p = *l;p != NULL; p = p->prox){ i++; } return i; } int estaVaziaForn (FornecedorL** l){ if(*l== NULL){ return 1; }else{ return 0; }}/*void imprimeListaRecForn (FornecedorL** l){ if(!estaVaziaForn(l)){ imprimeListaRec(&(*l)->prox); printf("%d - %s : %s \n", (*l)->id, (*l)->nome, (*l)->desc ); }}*/void imprimeForn(FornecedorL** l){ if(estaVaziaForn(l)){ printf("Lista Vazia!!"); }else{ FornecedorL* p; for(p = *l;p != NULL;p = p->prox){ printf("%d - %s : %s \n",p->id, p->nome, p->desc); } }}FornecedorL* buscaForn(FornecedorL** l, int v){ FornecedorL* p; for(p = *l;p != NULL;p = p->prox){ if(p->id == v){ printf("%i - %s : %s \n ",p->id, p->nome, p->desc); return p; } } return NULL;} FornecedorL* editaProdForn(FornecedorL** l, int v,char d[]){ FornecedorL* p; for(p = *l;p != NULL;p = p->prox){ if(p->id == v){ p->desc = d; return p; } } return NULL;} void removerElementoForn (int d, FornecedorL** l){ FornecedorL *p, *ant= NULL; for(p=*l; p!=NULL && p->id != d;p=p->prox) ant = p; if(p==NULL) printf("Elemento nao encontrado"); else{ if(ant==NULL) *l=p->prox; else ant->prox=p->prox; free(p); } } void liberaListaForn(FornecedorL** l){ FornecedorL* p=*l; while(p!=NULL){ FornecedorL* temp = p->prox; free(p); p=temp; } *l = NULL;} #include <stdio.h>#include <stdlib.h>#include <conio.h>#include <math.h>#include <string.h>typedef struct cliente{int id;char* nome;struct cliente* prox;}ClienteL;void criarLista1 (ClienteL** l){ *l = NULL;}void inserirElemento (ClienteL** l,char v[], int c){ClienteL* n= malloc(sizeof(ClienteL));n->id=0; if(n!=NULL){ n->nome=v; n->prox =*l; n->id=c; *l=n; }else{ printf("espaco nao alocado com sucesso"); } }void inserirElementOrdenado (ClienteL** l, char *v, int ids){ClienteL* p, *ant= NULL;ClienteL* n= malloc(sizeof(ClienteL)); if(n!=NULL){ for(p=*l;(( p!=NULL) && (strcmp(p->nome,v) <0));p=p->prox) ant = p; n->nome=v; n->id = ids; if(ant ==NULL){ n->prox =*l; *l=n; }else{ n->prox = p; ant->prox =n; } }else{ printf("espaco nao alocado com sucesso"); }}int numero(ClienteL** l){ ClienteL *p; int i = 0; for(p = *l;p != NULL; p = p->prox) i++; return i; }int estaVazia (ClienteL** l){ if(*l== NULL){ return 1; }else{ return 0; }//return(*l==NULL);}void imprimeListaRec (ClienteL** l){ if(!estaVazia(l)){ imprimeListaRec(&(*l)->prox); printf("%d - %s \n", (*l)->id, (*l)->nome ); }}/*void imprimeListaRec(ClienteL** l) {if(*l!=NULL) {ClienteL* p;for( p = *l ; p!=NULL; p=p->prox)printf("%s", p->nome[30]);} else {printf("Listavazia!");}}*/ClienteL* buscaListaRec (ClienteL** l, char v[]){ if(!estaVazia(l)){ if(!strcmp((*l)->nome,v)) printf("%d - %s \n", (*l)->id, (*l)->nome ); buscaListaRec(&(*l)->prox, v); return *l; } return NULL; } void removerElemento (char v[], ClienteL** l){ ClienteL *p, *ant= NULL; for(p=*l; p!=NULL && strcmp(p->nome,v);p=p->prox) ant = p; if(p==NULL) printf("Elemento nao encontrado"); else{ if(ant==NULL) *l=p->prox; else ant->prox=p->prox; free(p); } } void liberaLista(ClienteL** l){ClienteL* p=*l;while(p!=NULL){ClienteL* temp = p->prox;free(p); p=temp;}*l = NULL;}

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!