Ir ao conteúdo
  • Cadastre-se

C Array struct e registro


yDuba

Posts recomendados

Olá, estou tentando realizar a seguinte tarefa: Listar propietarios das placas dos carros que iniciam em A e finalizam em 0,2,7. Entretanto não esta funcionando, a variavel responsavel pela impressao apenas o ultimo valor lido.

//leitura da vairavel que eu queria colocar em fgets mas a mesma não funcioana
scanf("%s",&reg[i].placa);
.
.
.
.

CAD listaB(CAD reg[], int nreg){
        int j;
		for(j=0;j<nreg; j++){
                if(reg[j].placa[0]== 'a'){
                       		if(reg[j].placa[5]==0 || reg[j].placa[5]=='2' || reg[j].placa[5]=='7'){
                            printf(">>%s PLACA %s\n",reg[j].nome,reg[j].placa);
                        }
                }
        }
}

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

10 minutos atrás, devair1010 disse:

@yDuba    no struct precisa colocar o tamanho da variável placa ,  e na hora de comparar verificar se for A maiúsculo ou minúsculo ,  assim :


struct carro{
    char placa[30];
    char nome[ 30];
];
struct carro reg[10];
  
if(toupper(reg[j].placa[0]=='A'){

 

Mas nao é para verificar se é maiusculo, e sim se a letra A inicia na primeira posição da placa, e 2 ou 0 ou7 fincaliza o final de uma placa, se sim imprimir o propietario desta placa.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@devair1010 mas em que isto implica? pois tipo, o tamanho da minha placa serve apenas para dizer a quantidade de numeros que quero guardar nela, logo se estou fazendo placa de 'carros', devo usar um tamanho menor. Ou não?

adicionado 2 minutos depois

@devair1010 deixarei o enunciado aqui :listar todas as placas e os proprietários dos veículos que comecem com a letra 'A' e terminem com '0', '2' ou '7'. DICA: faça com que a placa seja um vetor de caracteres!

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@yDuba       sim , você pode usar o tamanho que quiser , mas precisa ser no mínimo o tamanho que comporte o total de caracteres , e que no caso são 6 caracteres uma letra e cinco dígitos , pois você está comparando o caractere na posição 5 , então esse sexto caractere está na posição 5 e na declaração você colocou que essa variável tem três posições  ,  assim quando você verifica a posição 5 pode ser um caractere que não foi digitado ,  e testei esse código aqui , e está funcionando bem  :

#include <stdio.h>
typedef struct{
        char nome[200];
        int chassi;
        int modelo;
        char marca[30];
        char cor[20];
        int combustivel;
        int ano;
        char placa[6];
}CAD;

CAD listaB(CAD reg[], int nreg){
    int j;
    for(j=0;j<nreg; j++){
        if(reg[j].placa[0]== 'a'){/* o zero precisa das aspas simples */
            if(reg[j].placa[5]=='0' || reg[j].placa[5]=='2' || reg[j].placa[5]=='7'){
                printf(">>%s PLACA %s\n",reg[j].nome,reg[j].placa);
            }
        }
    }
}
int main(){
    int j,i=0;
    CAD reg[10];
    strcpy(reg[i].nome,"kiko");
    scanf("%s",&reg[i].placa);

    listaB(reg,5);

    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!