Ir ao conteúdo
  • Cadastre-se

Programa básico em C


Battu

Posts recomendados

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;
}

Link para o comentário
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.

Link para o comentário
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;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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