Ir ao conteúdo
  • Cadastre-se

Igor Vargas

Membros Plenos
  • Total de itens

    161
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. @Bianca Regan Tranquilo. valeu
  2. @Bianca Regan valeu pela ajuda. Mas meu problema é em lista encadeada mesmo. To com dificuldade de fazer os apontamentos
  3. Olá estou com duvida em como ordenar com strcmp. Minha funcão cadastra o aluno também ordema.Mas quando cadastro digamos "Barbara" ele fica na frente de "Ana", ele da um erro, onde ele para de funcionar int CadastroAluno(Cad* li){ printf("voce SELECIONOU CADASTRAR ALUNO\n\n"); struct elementoCadastro *no =(struct elementoCadastro*)malloc(sizeof(struct elementoCadastro)); struct Cadastro c; printf("Nome:"); fflush(stdin); gets(c.nome); printf("Nascimento:"); gets(c.nascimento); printf("Endereco:"); gets(c.endereco); printf("Estado:"); gets(c.estado); printf("Cidade:"); gets(c.cidade); printf("Email:"); gets(c.email); printf("CPF:"); scanf("%d",&c.cpf); printf("Telefone:"); scanf("%d",&c.telefone); c.matricula = matricula; int igual =AlunoIgual(li,c); char testando[50]; if(igual == 1){ printf("**Esse cpf ja existe**!\n"); }else{ //int testando = procura(li,c.nome); if(*li==NULL){ no->cadastro = c; no->prox = (*li); no->ant = NULL; if(*li!=NULL){ (*li)->ant = no; } *li = no; }else{ struct elementoCadastro *atual,*ant,*o = *li; printf("Entrou aqui"); while(o!=NULL){ if(strcmp(o->cadastro.nome,c.nome) < 0){ ant = o; return 1; }else{ //no->ant = o; no->cadastro = c; no->prox = (*li); *li= no; }if(ant->prox == NULL){ printf("Entrou no print"); no->cadastro = c; o->prox = no; no->ant = o->prox; *li = no; } o = o->prox; } } } matricula++; printf("Aluno cadastrado com sucesso Matricula -> %d\n\n",no->cadastro.matricula); }
  4. Olá estou com duvida em como posso remover valor iguais da lista. Basicamente o usuário não pode colocar valores que já tem na lista. Eu fiz o seguinte. Minha função igual que cuida disso, mas n esta dando certo. #include <stdio.h> #include <stdlib.h> #include <string.h> struct elemento{ struct elemento *prox; int numero; struct elemento *ant; }; typedef struct elemento *lista; typedef struct elemento Bloco; int igual(lista *li,int num){ Bloco *ant,*p=*li; while(p!=NULL ){ if(num== p->numero){ p->ant->prox = p->prox; if(p->ant == NULL){ *li = p->prox; } } p=p->prox; } return num; /*if(p == NULL){ return 0; } if(p->ant == NULL){ *li = p->prox; }else{ p->ant->prox = p->prox; } free(p);*/ //return li; } int Inserir(lista *li, Bloco num){ if(li == NULL){ return 0; } Bloco *no =(Bloco*)malloc(sizeof(Bloco)); no->numero = igual(li,num.numero); no->prox = (*li); no->ant = NULL; if(*li!=NULL){ (*li)->ant = no; } *li = no; return 1; } void imprime(lista *li){ Bloco *p = *li; while(p->prox!=NULL){ printf("%d->",p->numero); p = p->prox; } } int OrdemCrescente(lista *li){ int n; Bloco *ant,*p = *li; while(p!=NULL){ ant = p; while(ant !=NULL){ if(ant->numero < p->numero){ n = p->numero; p->numero = ant->numero; ant->numero = n; } ant = ant->prox; } p = p->prox; } return 1; } lista *criaLista(){ lista *no=(lista *)malloc(sizeof(lista)); if(no!=NULL){ *no = NULL; } return no; } main(){ lista *li =(lista *)malloc(sizeof(lista)); *li = NULL; Bloco num; int x; do{ printf("\n1- Adicionar\n"); printf("2- Imprimir\n"); scanf("%d",&x); if( x == 1){ printf("Digite um numero:"); scanf("%d",&num.numero); Inserir(li,num); OrdemCrescente(li); }else if( x == 2){ imprime(li); }else{ break; } }while(x!=3); }
  5. @Flávio Pedroza Olá, obrigado pela ajuda. Mas acabei fazendo de outra forma. #include <stdio.h> #include <stdlib.h> #include <string.h> struct Dados{ char placa[9],tipo[50],cor[50]; int anoF; float preco; }; struct Elemento{ struct Dados dados; struct Elemento *prox; }; typedef struct Elemento *lista; lista* criaLista(){ lista *d=(lista*)malloc(sizeof(lista)); printf("Alocou\n"); if(d!=NULL){ *d = NULL; } return d; } int Cadastra(lista *li,struct Dados d){ if( li == NULL){ printf("Algo deu errado"); return 0; } struct Elemento *l =(struct Elemento*)malloc(sizeof(struct Elemento)); if( l == NULL){ printf("Não alocou\n"); }else{ l->dados = d; l->prox = (*li); *li = l; } printf("Cadastrado com sucesso!!\n"); return 1; } Relatorio(lista *li){ struct Elemento *aux = *li; while(aux!=NULL){ printf("\n"); printf("TIPO:%s\n",aux->dados.tipo); printf("PLACA:%s\n",aux->dados.placa); printf("COR:%s\n",aux->dados.cor); printf("ANO:%d\n",aux->dados.anoF); printf("PRECO:%.2f\n",aux->dados.preco); aux=aux->prox; } } main(){ struct Dados d; lista *li; li =criaLista(); int x; do{ printf("1-Cadastrar:\n"); printf("2-Vender:\n"); printf("3-Procurar:\n"); printf("4-Relatorio:\n"); scanf("%d",&x); getchar(); if( x == 1){ printf("Digite o Tipo de Automovel:"); fgets(d.tipo,50,stdin); printf("Digite a Placa do Automovel:"); fgets(d.placa,9,stdin); printf("Digite a Cor do Automovel:"); fgets(d.cor,50,stdin); printf("Digite o Ano do Automovel:"); fflush(stdin); scanf("%d",&d.anoF); printf("Digite o Preco do Automovel:"); scanf("%f",&d.preco); Cadastra(li,d); }else if( x == 2){ }else if( x == 3){ }else if( x == 4){ Relatorio(li); }else{ break; } }while(x!=5); }
  6. Olá estou com uma duvida. A minha lista fica dando o seguinte erro " [Error] request for member 'tipo' in something not a structure or union". Mas n entendo o motivo. #include <stdio.h> #include <stdlib.h> #include <string.h> struct Lista{ char placa[9],tipo[50],cor[50]; int anoF; float preco; struct Lista *prox; }; typedef struct Lista *lista; typedef struct Lista dados; lista* criaLista(){ lista *li = (lista*)malloc(sizeof(lista)); if(li != NULL){ li = NULL; } return li; } lista* Cadastra(lista *li){ if( li == NULL){ printf("Algo deu errado"); return 0; } lista *l = (lista*)malloc(sizeof(lista)); l->prox=li; li = l; printf("Cadastrado com sucesso!!"); return li; } void Relatorio(lista *li){ lista *aux = li; while(aux!=NULL){ printf("TIPO:%s",aux->tipo); printf("PLACA:%s",aux->placa); printf("COR:%s",aux->cor); printf("ANO:%d",aux->anoF); printf("PRECO:%f",aux->preco); aux=aux->prox; } } main(){ lista *l; l = criaLista(); int x; do{ printf("1-Cadastrar:\n"); printf("2-Vender:\n"); printf("3-Procurar:\n"); printf("4-Relatorio:\n"); scanf("%d",&x); if( x == 1){ printf("Digite o Tipo de Automovel:"); gets(l->tipo); printf("Digite a Placa do Automovel:"); gets(l->placa); printf("Digite a Cor do Automovel:"); gets(l->cor); printf("Digite o Ano do Automovel:"); scanf("%d",&l->anoF); printf("Digite o Preco do Automovel:"); scanf("%f",&l->preco); Cadastra(l); }else if( x == 2){ }else if( x == 3){ }else if( x == 4){ Relatorio(l); }else{ break; } }while(x!=5); }
  7. adicionado 2 minutos depois @daniel.oliveira O que foi me ensinado é que quando tu aloca a memória ele retorna um ponteiro vazio ou seja tu precisa passar o endereço.
  8. @daniel.oliveira Não entendi o que você quis dizer com perder alocação. eu aloco c e depois recebo o endereço que esta no parâmetro. Consegui arrumar, código ficou assim. #include <stdio.h> #include <stdlib.h> struct FastCar{ char placa[10],descricao[20],fabricante[50],cor[20]; int ano; float preco; }; int i=0; void Cadastro(struct FastCar **fastCar){ struct FastCar *c; c = (struct FastCar*)malloc(sizeof(struct FastCar)); c = &fastCar[0]; int x; printf("voce Selecionou Cadastrar Automovel!!\n\n"); printf("Digite a Placa do Carro:"); fflush(stdin); gets((c+i)->placa); printf("Digite a Descricao do Carro:"); gets((c+i)->descricao); printf("Digite a fabricação do Carro:"); fflush(stdin); gets((c+i)->fabricante); printf("Digite a Cor do Carro:"); gets((c+i)->cor); printf("Digite o Ano de fabricação do Carro:"); fflush(stdin); scanf("%d",&(c+i)->ano); printf("Digite o Preco do Carro:"); scanf("%f",&(c+i)->preco); i++; } void Consulta(struct FastCar **fastCar){ struct FastCar *c; c = &fastCar[0]; char carro[10]; if(c == NULL){ printf("Algo deu errado!"); }else{ printf("voce Selecionou Consultar Automovel!!\n\n"); printf("Digite A Placa do Carro:"); fflush(stdin); gets(carro); int x; for(x = 0; x<i; x++){ if(strcmp(carro,(c+x)->placa)==0){ printf("Descricao: %s \n",(c+x)->descricao); printf("Fabricante: %s \n",(c+x)->fabricante); printf("Cor: %s \n",(c+x)->cor); printf("Ano de fabricação: %d \n",(c+x)->ano); printf("Preco: %.2f \n",(c+x)->preco); }else{ printf("Veiculo nao encontrado!"); break; } } } } void Relatorio(struct FastCar **fastCar){ struct FastCar *c; c = &fastCar[0]; int x; if(c == NULL){ printf("Algo deu errado!"); }else{ printf("voce Selecionou Relatorio Automovel!!\n\n"); for(x=0; x<i; x++){ printf("Placa: %s \n",(c+x)->placa); printf("Descricao: %s \n",(c+x)->descricao); printf("Fabricante: %s \n",(c+x)->fabricante); printf("Cor: %s \n",(c+x)->cor); printf("Ano de fabricação: %d \n",(c+x)->ano); printf("Preco: %.2f \n",(c+x)->preco); } } } main(){ struct FastCar *fastCar; int x; printf("Bem vindo a FastCars!!\n\n"); do{ printf("O que voce Deseja Fazer?\n"); printf("1- Cadastrar Automovel\n"); printf("2- Consultar Automovel\n"); printf("3- Gerar Relatorio\n"); printf("4- Sair do Programa\n"); scanf("%d",&x); if(x == 1){ Cadastro(&fastCar); }else if( x==2){ Consulta(&fastCar); }else if( x == 3){ Relatorio(&fastCar); } }while(x!=4); }
  9. Olá. Estou com o seguinte erro. Na hora de consultar a placa de carro ele mostra que não existe. Na hora de mostrar o Relatório também não esta mostrando. Ao meu ver o código esta certo mas não estou achando o erro. #include <stdio.h> #include <stdlib.h> struct FastCar{ char placa[10],descricao[20],fabricante[50],cor[20]; int ano; float preco; }; int i=0; void Cadastro(struct FastCar fastCar){ struct FastCar *c; c = (struct FastCar*)malloc(sizeof(struct FastCar)); c = &fastCar; int x; printf("voce Selecionou Cadastrar Automovel!!\n\n"); printf("Digite a Placa do Carro:"); fflush(stdin); gets((c + i)->placa); printf("Digite a Descricao do Carro:"); gets((c + i)->descricao); printf("Digite a fabricação do Carro:"); fflush(stdin); gets((c + i)->fabricante); printf("Digite a Cor do Carro:"); gets((c + i)->cor); printf("Digite o Ano de fabricação do Carro:"); fflush(stdin); scanf("%d",&(c + i)->ano); printf("Digite o Preco do Carro:"); scanf("%f",&(c + i)->preco); i++; } void Consulta(struct FastCar fastCar){ struct FastCar *c; c = &fastCar; char carro[10]; printf("voce Selecionou Consultar Automovel!!\n\n"); printf("Digite A Placa do Carro:"); fflush(stdin); gets(carro); int x; for(x = 0; x<i; x++){ if(strcmp(carro,(c + x)->placa)==0){ printf("Descricao: %s \n",(c + x)->descricao); printf("Fabricante: %s \n",(c + x)->fabricante); printf("Cor: %s \n",(c + x)->cor); printf("Ano de fabricação: %d \n",(c + x)->ano); printf("Preco: %.2f \n",(c + x)->preco); }else{ printf("Veiculo nao encontrado!"); break; } } } void Relatorio(struct FastCar fastCar){ struct FastCar *c; c = &fastCar; int x; printf("voce Selecionou Relatorio Automovel!!\n\n"); for(x=0; x<i; x++){ printf("Placa: %s \n",(c + x)->placa); printf("Descricao: %s \n",(c + x)->descricao); printf("Fabricante: %s \n",(c + x)->fabricante); printf("Cor: %s \n",(c + x)->cor); printf("Ano de fabricação: %d \n",(c + x)->ano); printf("Preco: %.2f \n",(c + x)->preco); } } main(){ struct FastCar fastCar; int x; printf("Bem vindo a FastCars!!\n\n"); do{ printf("O que voce Deseja Fazer?\n"); printf("1- Cadastrar Automovel\n"); printf("2- Consultar Automovel\n"); printf("3- Gerar Relatorio\n"); printf("4- Sair do Programa\n"); scanf("%d",&x); if(x == 1){ Cadastro(fastCar); }else if( x==2){ Consulta(fastCar); }else if( x == 3){ Relatorio(fastCar); } }while(x!=4); }
  10. Olá. Estou com um problema onde nao estou conseguindo mostrar aquele resultado da idade. Na verdade é um código teste pois não sei como passar um valor dessa forma. struct pessoa{ int idade[2]; }; struct carro{ int carro[2]; }; main(){ struct pessoa pessoas[2], *p; struct carro Carro[2], *c; int i=0; (p + i)->idade[i] = 1; printf("%d",(p+i)->idade[i]); }
  11. @MB_ Eu pensei que tava errado porque se colocar numero acima de 15, fica negativo. Mas esta certo agora. valeu pela ajuda.
  12. @MB_ Não sei se esta funcionando corretamente void Fatorial(unsigned long int *a, unsigned long int *b){ unsigned long int fat,x=0; unsigned long int num, teste; for(x=0; x<15; x++){ num = *(a + x); for(fat = 1; num>=1; num = num -1){ fat *= num; } *(b + x)=fat; } }
  13. @MB_ Construa um algoritmo que leia um vetor A de 15 elementos. Construir um vetor B de mesmo tipo, sendo que cada elemento do vetor B deverá ser o resultado do fatorial correspondente de cada elemento de A. Apresentar os 2 vetores.
  14. Olá. Estou tentando fatorar o vetor A no vetor B. Mas algo esta dando errado. #include <stdio.h> #include <stdlib.h> void Fatorial(long int *a, long int *b){ long int fat,x=0; for(fat=1; *(a + x)>1; *(a + x)=*(a + x) -1){ fat = fat * *(a + x); x++; *(b + x)= fat; } } main(){ long int a[15]={2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}; long int b[15],x=0; Fatorial(a,b); for(x =0; x<15; x++){ printf("[%d]-",*(b + x)); } }

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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!