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!");
}
}
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Meu PC perde o boot de várias distros Linux após ficar desligado (0)
Música que eu compus, será que ficou boa? (6)
VPN Site to site mantendo wifi da operadora (0)
Alguém poderia me ajudar a escolher peças pra montar um desktop? (24)