Ir ao conteúdo
  • Cadastre-se
Battu

Programa básico em C

Recommended Posts

Olá amigos, estou no primeiro semestre de ADS e preciso fazer o seguinte: um sistema de uma mecanica, que quando digitado o id do carro, apareça o nome do proprietario, e vice versa. Fiz até agora somente a parte de cadastro, não sei como faço essa "linkagem" das ids. Alguem pode me dar uma força? Meu codigo até o momento:

/**/

#include <stdio.h>
#include <stdlib.h>

struct Carro{
int idcarro;
char *cliente[100];

};
struct Cliente{
int idcliente;
char *nome[100];

};

struct Carro carros[3];
struct Cliente clientes[3];

main()
{




for (int i = 0; i < 3; ++i){
printf("Digite o id do carro: ");
scanf("%d",&carros[i].idcarro);
printf("Digite o nome do carro: ");
scanf("%s",&carros[i].cliente);

printf("Digite o id do cliente: ");
scanf("%d",&clientes[i].idcliente);
printf("Digite o nome do cliente: ");
scanf("%s",&clientes[i].nome);
}

printf("\n\n");

for (int i = 0; i < 3; ++i){
printf("id %d do carro\n",carros[i].idcarro);
printf("nome carro: %s \n",carros[i].cliente);
printf("id %d do cliente\n",clientes[i].idcliente);
printf("nome cliente: %s\n\n",clientes[i].nome);
}



system ("pause");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O proprietário e o carro vão estar sempre na mesma posição? Por exemplo, o carro armazenado em carros[0] vai ser do proprietário armazenado em clientes[0], o carro armazenado em carros[1] vai ser do proprietário armazenado em clientes[1] e assim sucessivamente?

Se sim, a busca pela id do carro pode ser feita assim, dentro da main:

Declarar duas novas variáveis como int


Carro carros[3];
Cliente clientes[3];
int idProcurada, i;

E depois que os valores já estiverem armazenados nos vetores...


printf ("Digite a id do carro procurado:\n");
scanf ("%d", &idProcurada);
for (i=0; idProcurada!=carros[i].idcarro && i<3; i++); /* o for vai percorrer o vetor até encontrar a id ou até terminarem as posições (3, no total) */
if (i==3) /* após o for, i vai armazenar 3 se tiver percorrido todo o vetor sem achar a id ou armazenar o número da posição onde a id foi encontrada */
printf ("id nao encontrada.\n");
else
printf ("Proprietario: %s \n", clientes[i].nome);

Para fazer a outra busca é o mesmo raciocínio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia por gentileza postar a solução encontrada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, sem problemas. Eu utilizei um for para fazer a busca dos IDs dentro das estruturas, me retornando os valores delas, exatamente como o felipe disse. Vou por o código final pra darem uma olhada:

#include <stdlib.h>
#include <stdio.h>

int opcao, id_informado, i, NCAD;
char cons_sair;

struct cliente{
int id_cliente;
char nome_cliente[50];
}cadastro_clientes[100];


struct carro{
int id_carro;
char nome_carro[50];
}cadastro_carros[100];


struct revisao{
int km;
char itens[100];
}itens_revisados[100];

// declaração função
int MENU ();


int main(){

NCAD =0;


while(opcao!=4)
{


// adicionar função com retorno para opção
opcao = MENU();

switch(opcao)
{
case 1:
//aumenta numero de cadastros feitos
NCAD++;
printf("Digite o id do cliente: ");
scanf("%d",&cadastro_clientes[NCAD].id_cliente);
printf("Digite o id do carro: ");
scanf("%d",&cadastro_carros[NCAD].id_carro);
printf("Digite o nome do cliente: ");
scanf("%s", &cadastro_clientes[NCAD].nome_cliente);
printf("Digite o modelo do carro: ");
scanf("%s", cadastro_carros[NCAD].nome_carro);
printf("Kilometragem no momento da revisao: ");
scanf("%d", &itens_revisados[NCAD].km);
printf("Itens revisados: ");
scanf("%s", &itens_revisados[NCAD].itens);//deve ser separado apenas com virgula, barra de espaço da erro
printf("Cadastro realizado com sucesso!\n\n");
printf("\n\n");

cons_sair='@';

while(cons_sair=='@')
{
printf("\n\nPara sair digite qualquer tecla: ");
scanf("%s", &cons_sair);
}

break;

case 2:
printf("\n Digite o id do cliente ou do carro para a pesquisa: ");
printf("\n***************************************************:");
scanf("%d", &id_informado);

for(i=0;i<=NCAD;i++)
{
if(id_informado == cadastro_carros[i].id_carro || id_informado == cadastro_clientes[i].id_cliente)
{
printf("\nID do cliente: %d", cadastro_clientes[i].id_cliente);
printf("\nID do carro: %d", cadastro_carros[i].id_carro);
printf("\nNome do cliente: %s", cadastro_clientes[i].nome_cliente);
printf("\nNome do carro: %s", cadastro_carros[i].nome_carro);
printf("\nCarro revisado com %d km.", itens_revisados[i].km);
printf("\nItens revisados: %s", itens_revisados[i].itens);
}
}

printf("\n\n");
cons_sair='@';

while(cons_sair=='@')
{
printf("\n\nPara sair digite qualquer tecla: ");
scanf("%s", &cons_sair);
}
break;


case 3:
// inicio lista completa
for(i=1;i<=NCAD;i++)
{
printf("\nID do cliente: %d", cadastro_clientes[i].id_cliente);
printf("\nNome do cliente: %s", cadastro_clientes[i].nome_cliente);

printf("\nID do carro: %d", cadastro_carros[i].id_carro);
printf("\nNome do carro: %s", cadastro_carros[i].nome_carro);

printf("\nCarro revisado com %d km.", itens_revisados[i].km);
printf("\nItens revisados: %s", itens_revisados[i].itens);
printf("\n\n");
}
// fim lista completa


printf("\n\n");
cons_sair='@';

while(cons_sair=='@')
{
printf("\n\nPara sair digite qualquer tecla: ");
scanf("%s", &cons_sair);
}
break;

case 4:
system("exit");
break;

default:
printf("Opcao invalida !!!\n");
}
}
system("pause");
}




int MENU() /*Definição da função menu*/
{
int opc;

system("cls");
printf("*****************************\n");
printf("* O que deseja fazer *\n");
printf("*****************************\n");
printf("* 1 - Cadastrar Clientes *\n");
printf("* 2 - Pesquisar Clientes *\n");
printf("* 3 - Visualizar Cadastros *\n");
printf("* 4 - Sair *\n");
printf("*****************************\n");
printf("SUA OPCAO:");
scanf("%d", &opc);

system("cls");

return opc;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×