Enviado em 20/05/2019 - 12:45h
O código é para a colocar 3 letras a partir de 3 nomes diferentes. Ou seja:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define tamanho 3
typedef struct nomes vetnome;
typedef struct letras letra;
struct nomes{
char nome[30];
vetnome *pont;
};
struct letras{
char L[4];
vetnome *pontpnome;
};
void inserir (letra **let, letra tabEsp[tamanho], vetnome **ini,int qtd);
int chave(char nome[30]);
int main()
{
int qtd=0,i=0;
char nome[30], resposta[30];
letra tabEsp[tamanho];
for(i=1;i<4;i++)
{
strcpy(tabEsp.L,"NULL");
}
printf("Insira 3 nomes diferentes primeiramente: ");
while(qtd<4)
{
letra *let=(letra *)malloc(sizeof(letra));
vetnome *ini=(vetnome *)malloc(sizeof(vetnome));
let->pontpnome=NULL;
ini->pont=NULL;
inserir(&let, tabEsp, &ini, qtd);
system("pause");
system("cls");
qtd++;
}
puts("Aqui você irá colocar nomes dentro das 3 listas criadas! :)");
while(resposta!="NAO")
{
printf("Digite um nome: ");
scanf("%s", &nome);
letra *let=(letra *)malloc(sizeof(letra));
vetnome *ini=(vetnome *)malloc(sizeof(vetnome));
let=NULL;
ini=NULL;
inserir(&let, tabEsp, &ini, qtd);
printf("Você quer continuar?[Sim/Nao]");
scanf("%s", &resposta);
system("pause");
system("cls");
}
return 0;
}
int chave(char nome[30])
{
unsigned int resultado= (int)nome[0]%tamanho;
if(resultado<0)
resultado=-resultado;
return resultado;
}
void inserir (letra **Let, letra tabEsp[tamanho], vetnome **Ini, int qtd)
{
char nome[30];
puts("Digite um nome: ");
scanf("%s", &nome);
int chaveres=chave(nome);
vetnome *aux2;
aux2=Ini;
letra *aux;
aux=Let;
if(chaveres==1)
{
if(tabEsp[chaveres].L=="NULL")
{
letra *novo= (letra*) malloc(sizeof(letra));
vetnome *name=(vetnome *)malloc(sizeof(vetnome));
strcpy(novo->L,nome[0]);
strcpy(name->nome,nome);
aux=novo;
aux2=name;
aux->pontpnome=&aux2;
aux2->pont=NULL;
return ;
} else
if(tabEsp[chaveres].L!="NULL")
{
aux2=aux->pontpnome;
while(aux2!=NULL)
{
aux2=aux2->pont;
}
vetnome *name=(vetnome *)malloc(sizeof(vetnome));
strcpy(name->nome,nome);
aux2->pont=name;
name->pont=NULL;
return;
}
}
if(chaveres==2)
{
if (tabEsp[chaveres].L==NULL)
{
letra *novo=(letra *)malloc(sizeof(letra));
vetnome *name=(vetnome *)malloc(sizeof(vetnome));
strcpy(novo->L,nome[0]);
strcpy(name->nome,nome[30]);
aux=novo;
aux2=name;
aux->pontpnome=&aux2;
return;
} else if(tabEsp[chaveres].L!=NULL)
{
aux2=aux->pontpnome;
while(aux2!=NULL)
{
aux2=aux2->pont;
}
vetnome *name=(vetnome *)malloc(sizeof(vetnome));
strcpy(name->nome,nome[30]);
aux2->pont=&name;
name->pont=NULL;
return;
}
}
if(chaveres==3)
{
if (tabEsp[chaveres].L==NULL)
{
letra *novo=(letra *)malloc(sizeof(letra));
vetnome *name=(vetnome *)malloc(sizeof(vetnome));
strcpy(novo->L,nome[0]);
strcpy(name->nome,nome[30]);
aux=novo;
aux2=name;
aux->pontpnome=&aux2;
return;
} else if(tabEsp[chaveres].L!=NULL)
{
aux2=aux->pontpnome;
while(aux2!=NULL)
{
aux2=aux2->pont;
}
vetnome *name=(vetnome *)malloc(sizeof(vetnome));
strcpy(name->nome,nome);
aux2->pont=name;
name->pont=NULL;
return;
}
}
if (chaveres>3)
{
puts("Espaço não reservado!");
}
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal