Ir para conteúdo

Arquivado

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

Matheus Moraes Tomi

programação em dev c ++

Recommended Posts

Boa tarde pessoal,eu estou com uma duvida de programação,estou estudando para uma prova de programação em dev que fiquei de exame e o professor pediu para fazer um programa com essa questão seguinte: Deseja-se armazenar de uma empresa que trabalha com vendas de veículos os dados de 10 veículos,o nome da fabrica,nome do modelo,cor,o ano,a placa e o valor do veiculo.

a)Imprima um relatório com os 10 veiculos

b)Venda todos os veículos para uma unica pessoa a vista e de 20% de desconto no valor total.

c)A empresa adquiriu mais 10 veiculos usados,faça o cadastro e imprima um relatorio com as 10 novas aquisições.

d)Calcular quanto tempo de vida possui o automóvel.Imprima os veiculos que tem mais de tres anos de uso e que sao de cor branca.

 

Eu tentei fazer boa parte da questao com esse algoritmo seguinte mas nao deu certo necessito de ajuda para fazer o codigo dessa questão.

 

#include <stdio.h>
#include <stdlib.h>
#define DIM 1
#define MAX 10
struct carros{
    char nome_fab[40],nome_mod[40],placa[5],usado[10];
    int ano;
    float valor_carro;
};
main(){
float media=0,media2=0,media3=0;
int i;
struct carros carros[DIM];

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

printf("digite o nome da fabrica: ");
fflush(stdin);
fgets(carros.nome_fab,40,stdin);

printf("digite o nome do modelo: ");
fflush(stdin);
fgets(carros.nome_mod,40,stdin);

printf("digite o ano: ");
fflush(stdin);
scanf("i",carros.ano);

printf("digite a placa do carro: ");
fflush(stdin);
fgets(carros.placa,5,stdin);


printf("digite o valor do carro: ");
fflush(stdin);
scanf("%f",&carros.valor_carro);


}
printf("\n");

for(i=0;i<DIM;i++){
printf("Fabrica:       %s",carros.nome_fab);
printf("modelo:         %s",carros.nome_mod);
printf("ano:             %i\n",carros.ano);
printf("placa:             %s\n",carros.placa);
printf("Valor do carro:      %f\n",carros.valor_carro)
             ;
             }
for(i=0;i<DIM;i++){
media=media + carros.valor_carro;
media2=media*0.2;
media3=media - media2;

}

printf("%f",media3);

for(i=0;i<MAX;i++){
printf("digite o nome do veiculo usado");
fflush(stdin);
fgets(carros.usado,10,stdin);
}


system("pause");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não se usa fflush na entrada padrão.

 

#include <stdio.h>
#include <string.h>
#include <time.h>

#define MAX_ESTOQUE 10
#define MAX_NOME 40
#define MAX_PLACA 7

typedef struct carro{
    char nome_fabrica[MAX_NOME];
    char nome_modelo[MAX_NOME];
    char placa[MAX_PLACA];
    char cor[MAX_NOME];
    int ano;
    float valor;
} Carro;

void comprarCarros(Carro carros[MAX_ESTOQUE]) {
  for(int i=0; i<MAX_ESTOQUE; i++){
    printf("Digite o nome da fábrica: ");
    fgets(carros[i].nome_fabrica, MAX_NOME, stdin);
    
    printf("Digite o nome do modelo: ");
    fgets(carros[i].nome_modelo, MAX_NOME, stdin);
    
    printf("Digite a cor do carro: ");
    fgets(carros[i].cor, MAX_NOME, stdin);
  
    printf("Digite o ano do modelo: ");
    scanf("%d%*c", &carros[i].ano);
  
    printf("Digite a placa do carro: ");
    fgets(carros[i].placa, MAX_PLACA, stdin);
  
    printf("Digite o valor do carro: ");
    scanf("%*c%f%*c", &carros[i].valor);
    
    carros[i].nome_fabrica[strlen(carros[i].nome_fabrica) - 1] = '\0';
    carros[i].nome_modelo[strlen(carros[i].nome_modelo) - 1] = '\0';
    carros[i].cor[strlen(carros[i].cor) - 1] = '\0';
  }
}

void relatorio(Carro carros[MAX_ESTOQUE]) {
  for(int i=0; i<MAX_ESTOQUE; i++) {
    printf("Montadora: %s\n", carros[i].nome_fabrica);
    printf("Modelo: %s/%d\n", carros[i].nome_modelo, carros[i].ano);
    printf("Cor: %s\n", carros[i].cor);
    printf("Placa: %s\n", carros[i].placa);
    printf("Valor: %.2f\n", carros[i].valor);
  }
}

void relatorioUsados(Carro carros[MAX_ESTOQUE]) {
  time_t tmp = time(NULL);
  struct tm * data_carro = localtime(&tmp);
  struct tm * data_now = localtime(&tmp);
  
  for(int i=0; i<MAX_ESTOQUE; i++) {
    data_carro->tm_year = carros[i].ano - 1900;
    time_t seconds_diff = difftime(mktime(data_now), mktime(data_carro));
    struct tm * diff_data = localtime(&seconds_diff);
    
    if (diff_data->tm_year > 3 && (strcmp(carros[i].cor, "branca")||strcmp(carros[i].cor, "branco"))) {
      printf("Montadora: %s\n", carros[i].nome_fabrica);
      printf("Modelo: %s/%d\n", carros[i].nome_modelo, carros[i].ano);
      printf("Cor: %s\n", carros[i].cor);
      printf("Placa: %s\n", carros[i].placa);
      printf("Valor: %.2f\n", carros[i].valor);
    }
  }
}

void apagarDadosCarro(Carro * carro) {
  carro->nome_fabrica[0] = '\0';
  carro->nome_modelo[0] = '\0';
  carro->cor[0] = '\0';
  carro->placa[0] = '\0';
  carro->valor = 0.0;
  carro->ano = 0;
}

void venderCarros(Carro carros[MAX_ESTOQUE]) {
  float total = 0.0;
  for(int i=0; i<MAX_ESTOQUE; i++) {
    total += carros[i].valor;
    apagarDadosCarro(&carros[i]);
  }
  total = total * 0.80;
  
  printf("Valor total de venda: %.2f\n", total);
}

int main(){
  
  int i;
  Carro carros[MAX_ESTOQUE];
  
  comprarCarros(carros);
  relatorio(carros);
  venderCarros(carros);
  
  // Usados
  puts("Comprando carros..");
  comprarCarros(carros);
  
  puts("Relatório usados");
  relatorioUsados(carros);
  
  return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Xinitrc
      Estou fazendo ainda em design uma calculadora de decimo terceiro salário em QT Creator com linguagem C com GTK.
       
      Tem 3 TextEdit
      Tem 3 Labels
      Tem 3 Buttons
       
      Botão Calcular
      Botão Apagar
      Botão Sair
       
      O botão calcular deve calcular da seguinte maneira
       
      TextEdit3=TextEdit1 * TextEdit2/12, que vai dar o decimo terceiro salário,a logica está certa,mas não está funcionando meu programa no QT Creator.
       
      Alguém pode me ajudar?
    • Por JoaoV-26
      olá,
       
      Eu preciso fazer uma matriz 7x7 que imprima caractere 'x' e 'o' porém o x precisar ser nas duas diagonais, fazer a matriz e imprimir o x em uma diagonal eu consegui porém não estou conseguindo de jeito nenhum imprimir na outra diagonal, a matriz precisa sair assim: 
       
      x o o o o o x
      o x o o o x o
      o o x o x o o 
      o o o x o o o
      o o x o x o o
      o x o o o x o
      x o o o o o x
       
      a minha está saindo assim (foto em anexo)
       
      Meu código:

       
      #include<stdio.h> int main(){          int i, j;     char str[2]="x", str1[2]="o";                for(i=1; i<=7; i++){         for(j=1;j<=7; j++)              if(i+j == 7+1){                      printf("%s", str);                      }else                      printf("%s", str1);                      printf("\n");          }      } Alguém pode me ajudar, como faço para outra diagonal sair 'x' também ?????

    • Por llucaahenri
      Bom dia!
      Sou iniciante nessa área de programação, estou aprendendo sobre vetores e matrizes e gostaria de saber como faço para calcular elementos de um vetor e de uma matriz, eu tentei fazer usando laço For, mas não consegui.
      Esse exercício que estou tentando fazer.  
      Leia um vetor de 12 posições e em seguida ler também dois valores X e Y quaisquer correspondentes a duas posições no vetor. Ao final seu programa deverá escrever a soma dos valores encontrados nas respectivas posições X e Y.
      Meu código!
       
      #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() {     setlocale(LC_ALL, "Portuguese");     int VetorX[12], VetorY[12];     int Result, X, Y, i, j;     for(i = 1; i < 13; i++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor X. \n", i);         scanf("%d", &X);     }     for(i = 1; j < 13; j++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor Y. \n", j);         scanf("%d", &Y);     }         for(i = 0; i < 13; i++){             Result =+ VetorX;             printf("O resultado é%d", Result);         }     return 0; }
       
    • Por thisis_paulo
      Olá pessoal, sou iniciante tanto aqui no fórum tanto na linguagem c++.
      Estou tentando resolver o seguinte algoritmo:
       
      Calcule as médias das notas escolares de um aluno (media 1º bimestre, media 2º bimestre, media final) sendo que:
      As notas das provas parciais 1 e 2 equivalem a 30% da nota total do bimestre 1 e 2;
      As notas das provas oficiais 1 e 2 equivalem a 70% da nota total do bimestre 1 e 2;
      A nota total do bimestre 1 equivale a 40% da nota final do semestre;
      A nota total do bimestre 2 equivale a 60% da nota final do semestre;
       
      Utilize structs para armazenar a notas e medias e referencie cada elemento por ponteiros no main.
       
      Segue abaixo, a minha tentativa.
      Não estou conseguindo guardar as notas pedidas no main no vetor de notas dentro da struct, estou usando cin para fazer isso, uma solução mais adequada para realizar este procedimento?
       
      - Biblioteca
      typedef struct notas { float parcial[2], *p1, *p2; float oficial[2], *of1, *of2; float exame, *ex; } NotasProvas; void NotaBim1 (NotasProvas &notas, float *p1, float *of1); void NotaBim2 (NotasProvas &notas, float *p2, float *of2); void NotaExame (NotasProvas &notas, float *ex); typedef struct medias { float mediaB1, mediaB2, *m1, *m2; float notaFinal, *nf; float notaTotal, *nt; } MediasNotas; void MediaBim1 (MediasNotas &medias, float *m1); void MediaBim2 (MediasNotas &medias, float *m2); void MediaFinal (MediasNotas &medias, float *m1, float *m2); void MediaTotal (MediasNotas &medias, float *nf, float *ex);  
      - Procedimentos 
      #include "notas.h" void NotaBim1 (NotasProvas &notas, float *p1, *of1) { *p1 = &NotasProvas.parcial[1]; *of1= &NotasProvas.oficial[1]; MediasNotas.mediaB1 = (p1 * 0.3) + (of1 * 0.7); } void NotaBim2 (NotasProvas &notas, float *p2, *of2) { *p2 = &NotasProvas.parcial[2]; *of2 = &NotasProvas.oficial[2]; MediasNotas.mediaB2 = (p2 * 0.3) + (of2 * 0.7); } void MediaFinal (MediasNotas &medias, float *m1, *m2) { *m1 = &MediasNotas.mediaB1; *m2 = &MediasNotas.mediaB2; MediasNotas.notaFinal = (m1 * 0.4) + (m2 * 0.6); } void MediaTotal (MediasNotas &medias, float *nf, *ex) { *nf = &MediasNotas.notaFinal; *ex = &NotasProvas.exame; MediasNotas.notaTotal = (nf + ex) / 2; } - Função Main
      #include <iostream> #include "notas.h" using namespace std; int main() { cout << "\t\t CALCULANDO NOTAS " << endl; cout << endl; cout << "Qual a sua nota da Prova Parcial 01? " << endl; cin >> NotasProvas.p1; cout << "Qual a sua notas da Prova Oficial 01? " << endl; cin >> NotasProvas.of1; cout << "Nota do 1º bimestre: " << MediasNotas.m1 << endl; cout << "\t\t Segundo Bimestre" << endl; cout << endl; cout << "Qual a sua nota na Prova Parcial 02? " << endl; cin >> NotasProvas.p2; cout << "Qual a sua nota na Prova Oficial 02? " << endl; cin >> NotasProvas.of2; cout << "Nota do 2º bimestre: " << MediasNotas.m2 << endl; cout << "Media Final: " << MediasNotas.nf << endl; system("PAUSE"); return 0; } Desde já, agradeço pelas ajudas!
       
       
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.