Ir ao conteúdo
  • Cadastre-se

Guilherme009

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Tudo que Guilherme009 postou

  1. Explicação do código Meu código tem a ideia de ter três letras e delas fazer listas de cada letra. Para fazer isso uso um vetor de struct e passo para a função de inserir depois para de imprimir o que tem nela. Inicio o código pedindo que o usuário digite 3 letras [ vetor de struct do tipo letra], depois quantos nomes quiser [ dentro da struct letra faço com que aponte para outra struct]. Na struct de nomes faço com que ele aponte para ele mesmo e então faço a lista encadeada. Problema Ele no máximo exibe duas letras e o nomes não são mostrados que é o quero também mostrar. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define tamanho 3 /* Use as letras A, f */ typedef struct nomes vetnome; typedef struct letras letra; struct nomes{ char nome[30]; vetnome *pont; }; struct letras{ char L[2]; int pos[3]; vetnome *pontpnome; }; void inserir (vetnome **nom, letra *tabEsp2[tamanho]); int chave(char nome2[30]); void imprimir(letra *tabEsp2[tamanho]); int chave(char nome[30]) { char ale[30]; strcpy(ale[0],toupper(nome[0])); unsigned int resultado= (int)ale[0]%tamanho; if(resultado<0) resultado=-resultado; return resultado; } void inserir (vetnome **nom2,letra *tabEsp2[tamanho]) { char nome[30]; puts("Digite um nome: "); scanf("%s", &nome); int chaveres=chave(nome); if (tabEsp2[chaveres]->pos[chaveres]==0) { strncpy(tabEsp2[chaveres]->L,nome,1); vetnome *novo; novo=(vetnome *)malloc(sizeof(vetnome)); novo=*nom2; if (novo==NULL) return; tabEsp2[chaveres]->pontpnome=novo; tabEsp2[chaveres]->pos[chaveres]=1; return; } else if(tabEsp2[chaveres]->pos[chaveres]!=0) { vetnome *aux2; aux2=tabEsp2[chaveres]->pontpnome; while(aux2->pont!=NULL) { aux2=aux2->pont; } vetnome *name=(vetnome *)malloc(sizeof(vetnome)); name=*nom2; strcpy(name->nome,nome); aux2->pont=name; name->pont=NULL; return ; } } void imprimir(letra *tabEsp2[tamanho]) { int num=0,qtd=0; puts("Digite qual opção deseja: \n"); puts("[ 0 ] TUDO \n"); puts("[ 1 ] APENAS UMA DAS LISTAS DE LETRAS \n"); puts("[ 2 ] Sair \n"); scanf(" %d", &num); if(num==0) { for(qtd=0;qtd<4;qtd++) { printf("Primeira Letra -> %c \n", tabEsp2[qtd]->L[0]); vetnome *aux2; aux2=tabEsp2[qtd]->pontpnome; while(aux2!=NULL) { printf("\n Nome -> %s", aux2->nome,"--"); aux2 = aux2->pont; } } } system("pause"); } int main() { int qtd=1,i=0,contd=0; int chaveres=0; char nome[30], resposta[30]; letra *tabEsp=(letra *)malloc(sizeof(letra)*3); for(contd=0;contd<3;contd++) { tabEsp[contd].pos[contd]=0; } while(qtd<4) { printf("Insira 3 letras diferentes, você guardará nomes com essas iniciais depois desse processo: "); vetnome *nom=(vetnome *)malloc(sizeof(vetnome)); inserir(&nom, &tabEsp); system("pause"); system("cls"); qtd++; } puts("Aqui você irá colocar nomes dentro das 3 listas criadas! :)"); while((strcmp(strupr(resposta),"NAO"))!=0) { vetnome *nom=(vetnome *)malloc(sizeof(vetnome)); inserir(&nom, &tabEsp); printf("Você quer continuar?[Sim/Nao]"); scanf("%s", &resposta); system("pause"); system("cls"); } imprimir(&tabEsp); return 0; }
  2. typedef struct cadastro { char nome[30]; char matricula[30]; char Disciplinas[30]; char notas[30]; struct cadastro *proxno; } alunos; int inserir_aluno_inicio(alunos **lista); int inserir_aluno_fim(alunos **lista); alunos *remover_aluno(alunos **lista); int menu(void); void opções(alunos **lista, int opc); alunos *liberar(); alunos *inicializar(); void imprimir(alunos **lista); void creditos(); int main() { int opcao; alunos *lista = (alunos *)malloc(sizeof(alunos)); lista = inicializar(); do { opcao = menu(); opções(&lista, opcao); system("pause"); system("cls"); } while (opcao != 5); return 0; } alunos *inicializar() { return NULL; } int inserir_aluno_inicio(alunos **lista) { alunos *novo = (alunos *)malloc(sizeof(alunos)); if (novo == NULL) { puts("Sem memória"); return 1; } printf("Digite o nome do aluno ou da aluna: "); scanf(" %s", novo->nome); printf("Digite a matricula do aluno ou aluna[5 numeros ou letras]:"); scanf(" %s", novo->matricula); printf("Digite a disciplina do aluno ou aluna: "); scanf(" %s", novo->Disciplinas); printf("Digite a nota da aluna ou do aluno:"); scanf(" %s", novo->notas); puts(""); novo->proxno = *lista; *lista = novo; return 0; } int inserir_aluno_fim(alunos **lista) { alunos *novo_novo = (alunos *)malloc(sizeof(alunos)); novo_novo->proxno=NULL; printf("Digite o nome do aluno ou da aluna: "); scanf(" %s", novo_novo->nome); printf("Digite a matricula do aluno ou aluna[5 numeros ou letras]:"); scanf(" %s", novo_novo->matricula); printf("Digite a disciplina do aluno ou aluna: "); scanf(" %s", novo_novo->Disciplinas); printf("Digite a nota da aluna ou do aluno:"); scanf(" %s", novo_novo->notas); puts(""); alunos *aux=*lista; if(lista==NULL) { *lista=novo_novo; return 0; } while(aux->proxno!=NULL) { aux=aux->proxno; } ant->proxno= *novo_novo; } // int menu() { int ale; puts("===============================================\n"); puts(" M E N U___E S C O L A R___V I N G A D O R E S =\n"); puts(" ===============================================\n"); printf(" |[ 0 ] INSERIR NO INICIO |\n"); puts(" |[ 1 ] INSERIR NO FIM |\n"); puts(" |[ 3 ] IMPRIMIR informações DO ALUNO |\n"); puts(" |[ 4 ] CREDITOS |\n"); puts(" |[ 5 ] SAIR DA LISTA |\n"); puts(" =====================================|\n"); scanf("%d", &ale); return ale; } void opções(alunos **lista, int opc) { switch (opc) { case 0: inserir_aluno_inicio(lista); break; case 1: inserir_aluno_fim(lista); break; case 2: break; case 3: imprimir(lista); break; case 4: creditos(); break; case 5: puts("Ate a proxima!"); break; default: puts("Nao existe essa opcao tente novamente!"); } } void imprimir(alunos **lista) { alunos *aux = lista; while (aux->proxno!= NULL) { printf("O nome da aluna(o): %s", aux->nome); printf("\n"); printf("A matricula do aluno(a) e: %s", aux->matricula); printf("\n"); printf("A disciplina da aluna(o) e: %s",aux->Disciplinas); printf("\n"); printf("A nota do aluno (a): %s", aux->notas); printf("\n"); aux = aux->proxno; } } void creditos() { puts("CREDITOS:"); puts(""); puts("GUILHERME SOARES SOUSA SILVA"); puts(""); puts("GABRIEL FARIAS"); puts(""); puts("ITALO AURELIO"); }
  3. OLÁ HUMANOS Bom galera estou iniciando não sei de muito, mas no que eu estou vendo consigo entender um pouco. Meu professor pediu para que montássemos um tipo de banco no qual pegaria os dados do cliente, tipo: nome, cpf, conta e saldo inicial; e um menu de opções envolvendo transferência, depósito, saque e o saldo. E ao usar o comando switch (escolha) coloquei os if"s que ele disse que tinha que ter meio que uma forma do sistema ver se é o usuário mesmo que tá acessando, nesse caso usando ou o cpf ou a conta nesse caso apenas para: depósito,saque e saldo, já a transferência só precisa de a conta e o destino. O erro que está acontecendo é o de direcionar para o senão mesmo que o cpf e a conta estejão certos. Me ajudem, por favor?! obs: meu código está incompleto por quê eu quase desisti! ABAIXO O CÓDIGO #include <stdio.h>//biblioteca que permite usar os comandos printf e scanf, entrada e saida #include <stdlib.h>//usamos o system pause com ele #include <math.h>// fazemos contas com esse tipo a de tirar o saque ou adicionar com o deposito int main () {//funcao de inicio e a principal char nome[100],destino;//declaracao de nome que pode ter ate 99 caracteres e destino no qual a transferência vai, no caso o banco que ela vai long int cpf[12],numero_cpf[12],conta[5],resp ='0',numero_conta[5];//uso do long int ou inteiro longo para receber quantidades dmaiores de numeros do cpf, da conta e o numerp da conta serve para testar se o usuario e o dono da conta float saldo_inicial='0', deposito='0', saque='0',transferencia, saldo, conta_destino;//saldo inicial de dinheiro, o depósito para ter mais, saque de dinheiro caso seja o suficiente //continuacao do float ai tem a transferencia de dinheiro, o saldo do usuario no banco e a conta destinho que é o saldo em outro banco printf ("Digite seu nome: ");// funcao de imprimir perguntar o nome do usuario scanf ("%s",&nome);//ler como string de caracteres printf ("Digite o numero de sua conta: ");//pegar numero da conta scanf ("%li", &conta);//salvar numero da conta printf ("Digite o saldo inicial: R$");//pega o seu saldo inicial scanf ("%f", &saldo_inicial);//salvar, aqui pega com long int para poder pegar mais numeros printf ("Digite o seu cpf: ");//pegar o cpf scanf ("%li", &cpf);// pegar com o long int para poder pegar numeros maiores // montagem do menu do banco para o usuario ver printf ("\nB A N C O B R"); printf ("\n-----------------------------------"); printf ("\n- [1] Deposito \t "); printf ("\n- [2] Saque \t "); printf ("\n- [3] Transferencia \t "); printf ("\n- [4] Saldo \t "); printf ("\n-----------------------------------\n");// termino da montagem scanf ("%i", &resp);//aqui ele pega o que o usuario digitar e mand para onde a variavel esta switch (resp)//estrutura escolha unsando o resp como resposta {//inicio da funcao case 1://caso 1 printf ("Digite o numero do seu cpf ao lado: ");// aqui nos fazemos um teste para ver se ela ou ele é o usuario da conta scanf ("%li",&numero_cpf);//pega o numero do cpf digitado anteriormente printf ("Digite o numero da sua conta: "); scanf ("%li",&numero_conta); if ((numero_cpf== cpf) || (numero_conta==conta))//ele testa se o numero_cpf é igual ao cpf ou numero_conta é igual a conta {//fim do se system ("cls");//aqui ele limpatela printf ("Quanto voce quer botar? ");//aqui o usuario responde a quantidade que quer botar scanf ("%f",&deposito);//ele vai receber o valor e botar no deposito saldo=(deposito + saldo_inicial);//aqui o saldo recebe soma do inicial mais o deposito printf ("Valor do saldo atual: R$%f", saldo);//e mostra aqui o saldo atual }//fim do se break;//para aqui o caso e termina o escolha case 2: system ("cls"); printf ("Digite o numero do seu cpf ao lado: "); scanf ("%li",&numero); printf ("Digite o numero da sua conta: "); scanf ("%li",&numero_conta); if ((numero_cpf==cpf) || (numero_conta==conta)) system ("cls");//limpatela printf ("Quanto você quer sacar ?"); scanf ("%f", &saque); if (saldo_inicial >= saque) { saldo=(saldo_inicial-saque); printf ("voce sacou R$ %f", saque); printf ("\n E possui um saldo atual de R$ %f",saldo); } else printf("Numero de cpf ou conta invalidos."); break;;//para aqui o caso e termina o escolha case 3://caso 3 printf ("Digite o destino da transferência ao lado: ");//aqui o professor pediu o destino e depois a conta apenas como teste scanf ("%c",&destino);//guarda destino do tipo char printf ("Digite o numero da sua conta: ");//aqui o professor pede o numero da conta digitado e salva o numero scanf ("%i",&numero_conta);//aqui ele salva em um long int if (numero_conta==conta)//nesse o professor pediu apenas o teste da conta e o destino {//inicio da funcao se system ("cls");//limpatela conta_destino= saldo_inicial;//aqui transfere o saldo atua ou inicial é mandado para a conta destino printf ("Conta transferida para: %c", destino);//aqui mostro qual foi o destino }//fim da funcao se else//senao {//inicio do senao printf("Numero da conta invalido.");//mostra numero da conta invalido se estiver errado o numero_conta da conta }//fim do senao break;//aqui ele para no caso 3 e finaliza o escolha case 4:// caso 4 printf ("seu saldo e: %f", saldo_inicial);//aqui mostra o saldo atual break;//para aqui o caso 4 e termina o escolha }//fim do switch system ("pause");//aqui ele pausa programa em um momento para o usuario ver os resutados return 0;//retorna tudo isso para o computador atravs do comando return 0 }//fim da funcao main e do programa

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...