Buscar

Linguagem c

Em linguagens de programação estruturadas, tal como a linguagem C/C++ temos a possibilidade de organizar as informações a serem manipuladas sob dois aspectos: organização homogênea e organização heterogênea. No viés homogêneo, todas as informações, possuidoras de um único tipo de dados, estão dispostas em uma estrutura denominada vetor. E, por sua vez, no viés heterogêneo, as informações, podendo possuir tipagens distintas, estão armazenadas em estruturas de dados denominadas como “struct”.

Com base nisso, suponha que é necessário armazenar informações relacionadas à veículos, totalizando, no máximo, 10 veículos. Para cada veículo, deverão ser fornecidos os seguintes dados:

- marca do veículo

- modelo - ano de fabricação

- placa (formato XXX-YYYY; onde X denota as letras e Y denota os números da placa).

O sistema deverá oferecer, ao usuário, as seguintes funcionalidades:

- Listar os veículos cadastrados;

- Inserir um novo veículo;

- Listar os veículos filtrando-se por ano de fabricação;

- Listar os veículos com o ano de fabricação acima de um certo valor especificado pelo usuário

. - Listar os veículos filtrando-se pelo modelo.

O sistema deverá armazenar os veículos ordenados pelo ano de fabricação, ou seja, ao inserir um novo veículo, este deve ser inserido em ordem crescente de ano de fabricação.

Referência DEITEL, P. J.; DEITEL, H. C: Como Programar. 6. ed. São Paulo: Pearson Prentice Hall, 2011. [Recurso eletrônico, Biblioteca Virtual Universitári

💡 3 Respostas

User badge image

Chloe Wilborn

olha so eu fiz esse sistema c mt sacrificio e.e e ta funcionando


#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#include <stdbool.h>


/* run this program using the console pauser or add your own getch, system("pause") or input loop */


struct veiculo{

char marca[10];

char modelo[10];

int anofabricacao; 

char placaletra[10];

int placanumero;

};


void insertionSortFabricacao(struct veiculo *v, int N) {

int i,j;

struct veiculo aux;

for(i = 1;i < N; i++) {

aux = v[i];

for(j=i;(j>0) && (aux.anofabricacao<v[j-1].anofabricacao);j--)

v[j] = v[j -1];

v[j] = aux;

}

}


void insertionSortModelo(struct veiculo *v, int N) {

int i,j;

struct veiculo aux;

for(i = 1;i < N; i++) {

aux = v[i];

for(j=i;(j>0) && (strcmp(aux.modelo,v[j - 1].modelo)<0);j--)

v[j] = v[j -1];

v[j] = aux;

}

}


int main(int argc, char *argv[]){

  char resp;

struct veiculo v[10];

int selecao;

int i;

int i2 , aux , pos_menor, menor;

int anoPesquisa;

 

 

do {


printf("Sistema de Cadastrar veiculos\n");

printf("O que deseja fazer ? \n");

printf("1 Adicionar novo veiculo\n");

printf("2 Listar veiculos cadastrados\n");

printf("3 Listar veiculos por ordem de fabricacao\n");

printf("4 Listar veiculos por ordem de fabricacao a partir de um valor especifico\n");

printf("5 Listar veiculos por modelo\n");

scanf("%d",&selecao);

if(selecao == 1){

for(i=0; i<10 ; i++){

printf("Carro %d Marca : ",i+1); scanf("%s",&v[i].marca); 

printf("Carro %d Modelo : ",i+1); scanf("%s",&v[i].modelo); 

printf("Carro %d Data de Fabricacao : ", i+1); scanf("%d",&v[i].anofabricacao); 

printf("Carro %d Letras da placa (YYY) : ", i+1); scanf("%s",&v[i].placaletra); 

printf("Carro %d Numeros da Placa (XXXX) : ", i+1); scanf("%d",&v[i].placanumero);

}

};

if (selecao == 2){

insertionSortFabricacao(v,10);

for(i=0; i<10;i++){

printf("\n");

printf("DADOS DO CARRO\n");

printf("=============================\n");

printf("Ano de Fabricacao %d\n ",v[i].anofabricacao);

printf("Marca %s\n ",v[i].marca);

printf("Modelo %s\n ",v[i].modelo);

printf("Placa %s",v[i].placaletra);

printf("-");printf("%d\n",v[i].placanumero);

}


}


if (selecao == 3){

insertionSortFabricacao(v,10);

for(i=0; i<10;i++){

printf("\n");

printf("DADOS DO CARRO\n");

printf("=============================\n");

printf("Ano de Fabricacao %d\n ",v[i].anofabricacao);

printf("Marca %s\n ",v[i].marca);

printf("Modelo %s\n ",v[i].modelo);

  printf("Placa %s",v[i].placaletra);

printf("-");printf("%d\n",v[i].placanumero);

 }


}

if (selecao == 4){

printf("a partir de que ano deseja pesquisar os veiculos cadastrados ? ");

scanf("%d",&anoPesquisa);

insertionSortFabricacao(v,10);

for(i=0; i<10;i++){ 

if(v[i].anofabricacao >= anoPesquisa){

printf("ano de fabricacao: %d\n marca: %s\n modelo %s\n",v[i].anofabricacao,v[i].marca,v[i].modelo);

printf("Placa %s",v[i].placaletra);

printf("-");printf("%d\n",v[i].placanumero);

}

}

}


if (selecao == 5){

insertionSortModelo(v,10);

for(i=0; i<10;i++){

printf("\n");

printf("DADOS DO CARRO\n");

printf("=============================\n");

printf("ano de fabricacao %d\n ",v[i].anofabricacao);

printf("marca %s\n ",v[i].marca);

printf("modelo %s\n ",v[i].modelo);

printf("Placa %s",v[i].placaletra);

printf("-");printf("%d\n",v[i].placanumero);

}

}

} while (resp = "S"); //repetir


return 0;


};



espero ter ajudado ^^ <3

3
Dislike0
User badge image

Carlos Antonio

Conseguiu alguma resposta para essa atividade?

2
Dislike1
User badge image

Clenon Da Silva Alves

código e implementação:


#include

#include


#define MAX_VEICULOS 10


typedef struct {

  char marca[50];

  char modelo[50];

  int ano;

  char placa[8];

} Veiculo;


void listarVeiculos(Veiculo *veiculos, int n) {

  printf("Veiculos cadastrados:\n");

  for (int i = 0; i < n; i++) {

    printf("%d - Marca: %s, Modelo: %s, Ano: %d, Placa: %s\n",

      i+1, veiculos[i].marca, veiculos[i].modelo, veiculos[i].ano, veiculos[i].placa);

  }

}


void inserirVeiculo(Veiculo *veiculos, int *n) {

  if (*n == MAX_VEICULOS) {

    printf("Nao e possivel cadastrar mais veiculos.\n");

    return;

  }

  Veiculo v;

  printf("Marca: ");

  scanf("%s", v.marca);

  printf("Modelo: ");

  scanf("%s", v.modelo);

  printf("Ano: ");

  scanf("%d", &v.ano);

  printf("Placa (formato XXX-YYYY): ");

  scanf("%s", v.placa);

  veiculos[*n] = v;

  (*n)++;

  // Ordena o vetor de veiculos em ordem crescente de ano

  for (int i = 1; i < *n; i++) {

    for (int j = 0; j < i; j++) {

      if (veiculos[i].ano < veiculos[j].ano) {

        Veiculo temp = veiculos[i];

        veiculos[i] = veiculos[j];

        veiculos[j] = temp;

      }

    }

  }

  printf("Veiculo cadastrado com sucesso.\n");

}


void listarVeiculosPorAno(Veiculo *veiculos, int n, int ano) {

  printf("Veiculos com ano de fabricacao %d:\n", ano);

  for (int i = 0; i < n; i++) {

    if (veiculos[i].ano == ano) {

      printf("%d - Marca: %s, Modelo: %s, Ano: %d, Placa: %s\n",

        i+1, veiculos[i].marca, veiculos[i].modelo, veiculos[i].ano, veiculos[i].placa);

    }

  }

}


void listarVeiculosComAnoMaiorQue(Veiculo *veiculos, int n, int ano) {

  printf("Veiculos com ano de fabricacao maior que %d:\n", ano);

  for (int i = 0; i < n; i++) {

    if (veiculos[i].ano > ano) {

      printf("%d - Marca: %s, Modelo: %s, Ano: %d, Placa: %s\n",

        i+1, veiculos[i].marca, veiculos[i].modelo, veiculos[i].ano, veiculos[i].placa);

    }

  }

}


void listarVeiculosPorModelo(Veiculo *veiculos, int n, char *modelo) {

  printf("Veiculos do modelo %s:\n", modelo);

  for (int i = 0; i < n; i++) {

    if (strcmp(veiculos[i].modelo, modelo) == 0) {

      printf("%d - Marca: %s, Modelo: %s, Ano: %d, Placa: %s\n",

      i+1, veiculos[i].marca, veiculos[i].modelo, veiculos[i].ano, veiculos[i].placa);

    }

  }

}


int main() {

  Veiculo veiculos[MAX_VEICULOS];

  int n = 0;

  int opcao;

  do {

  printf("\n1 - Listar veiculos\n");

  printf("2 - Inserir veiculo\n");

  printf("3 - Listar veiculos por ano de fabricacao\n");

  printf("4 - Listar veiculos com ano de fabricacao maior que um valor especifico\n");

  printf("5 - Listar veiculos por modelo\n");

  printf("0 - Sair\n");

  printf("Opcao: ");

  scanf("%d", &opcao);

   

    switch (opcao) {

      case 1:

        listarVeiculos(veiculos, n);

        break;

      case 2:

        inserirVeiculo(veiculos, &n);

        break;

      case 3:

        printf("Ano de fabricacao: ");

        int ano;

        scanf("%d", &ano);

        listarVeiculosPorAno(veiculos, n, ano);

        break;

      case 4:

        printf("Ano de fabricacao: ");

        int ano_maior;

        scanf("%d", &ano_maior);

        listarVeiculosComAnoMaiorQue(veiculos, n, ano_maior);

        break;

      case 5:

        printf("Modelo: ");

        char modelo[50];

        scanf("%s", modelo);

        listarVeiculosPorModelo(veiculos, n, modelo);

        break;

      case 0:

        printf("Saindo...\n");

        break;

      default:

        printf("Opcao invalida.\n");

        break;

    }

  } while (opcao != 0);

  return 0;

}


0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais