Ir para conteúdo
Fórum Script Brasil
  • 0

Struct


viciado

Pergunta

Faça um programa contendo os serviços que uma oficina mecanica pode realizar: ordem de serviço (numero da OS, data, valor, serviço realizado, cliente).

Leia as informações sobre várias ordens de serviço e determine, ao final, a média dos valores, o nome do cliente que realizou o serviço mais caro, juntamente com a descrição desse serviço e a data de sua realização.

Erro nas linhas: 54,55 e 56

"Incompatiple types in assignment"

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

#define MAX 30
void nome_media();
void cliente_caro();
struct oficina
       {
              int os;
              char data[15];
              float valor;
              char servico[50];
              char cliente[30];
              }dados[MAX];
int main()
{
  int i;
  for(i=0;i<MAX;i++){
                     printf("Nome \n");
                     scanf("%s",dados[i].cliente);
                     printf("Numero da OS \n");
                     scanf("%d",&dados[i].os);
                     printf("Data \n");
                     scanf("%s",dados[i].data);
                     printf("Valor \n");
                     scanf("%f",&dados[i].valor);
                     printf("Servico \n");
                     scanf("%s",dados[i].servico);
                     }
  nome_media();
  cliente_caro();
  system("PAUSE");    
  return 0;
}
void nome_media(){
     int i;
     float soma = 0, media;
     for(i=0;i<MAX;i++){
                        printf("%s \n",dados[i].cliente);
                        soma = soma + dados[i].valor;
                        media = media / (float) MAX;
                        printf("A media: %f \n",media);
                        }
}
void cliente_caro(){
     int i;
     float maior = dados[0].valor;
     char nome[30];
     char servico[50];
     char data[15];
     for(i=0;i<MAX;i++){
                        if(dados[i].valor > maior){
                                          maior = dados[i].valor;
                                          nome = dados[i].cliente;
                                          servico = dados[i].servico;
                                          data = dados[i].data;
                                          }
                                          }
     printf("Cliente %s gastou: %f realizando o servico %s na data: %s\n",nome, maior, servico, data);
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

// Faça um programa para processar os dados referente aos serviços realizados por uma determinada oficina mecânica de Motos: Ordem de serviço (número da OS, data, valor, serviço realizado, nome do cliente).
Considere que os serviços são codificados da seguinte forma:
1 – revisão;
2 - troca de óleo;
3 - reposição de peças avariadas;
4- recall.
O programa deve ler as informações sobre várias ordens de serviço e determinar, ao final, uma listagem de todos os serviços prestados, em ordem decrescente de valores, e o valor total arrecadado. Em seguida, apresentar uma lista com todos os serviços de "Recall".

Fiz Grande parte mais não estou conseguindo fazer o seguinte:

O programa deve ler as informações sobre várias ordens de serviço e determinar, ao final, uma listagem de todos os serviços prestados, em ordem decrescente de valores, e o valor total arrecadado.

sabe como resolvo isso ?

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <conio.h>
#include <string.h>

#define Max 5

void MenuPrincipal();
void Entrada();
void Saida();
//void Ordenacao();
typedef struct _FichaOS
       {
              int num, servico;
              char data[15];
              float valor;
              char NomeClient[20];
              }FichaOS;
              
 FichaOS OS[Max];
 
int opcao, op_ord, n;

main()
{
    int fim = 0;
    int aux;
    do
    {
        MenuPrincipal();
        switch (opcao)
        {
            case 1: Entrada();
                    break;
            case 2: Saida();
                    break;
            case 3: //Ordenacao();
                    break;
            case 5: fim = 1;
                    break;
            default: printf ("Opção Invalida \n");
                    getch();            
        }
    }while (!(fim));
    printf ("Fim do Programa");
    getch;
    
}
void MenuPrincipal()
{
    system("cls");
    printf ("                MENU PRINCIPAL \n");
    printf ("\n1 - Entrada de Dados\n");
    printf ("\n2 - Saida de Dados\n");
    printf ("\n3 - Ordenacao\n");
    printf ("\n5 - Sair\n");
    printf ("\n Escolha uma das opcoes:");
    scanf ("%d",&opcao);
}

void Entrada()
{
    int i;
    char x;
    system("cls");
    printf ("                ENTRADE DE DADOS \n");
    printf ("\n Digite a Quantidade de OS (Maximo 5): \n");
    scanf ("%d",&n);
    for (i=0;i<n;i++)
    {
    x = getchar();
                    printf("Digite Nome do Cliente: \n");
                     gets(OS.NomeClient);
                    printf("Digite Numero da OS: \n");
                     scanf("%d",&OS.num);
                       printf("Digite Data da OS: \n");
                     scanf("%s",&OS.data);
                    printf("Digite o Tipo de Serviço: \n");
                     scanf("%d",&OS.servico);
                    printf("Digite o valor da OS: \n");
                     scanf("%f",&OS.valor);
                    
    }
}

    void Saida()
{
    int i;
    system("cls");
    printf ("                SAIDA DE DADOS \n");
    printf ("\n Num.OS        Data        Clientes        Serviço        Valor(R$): \n");
    for (i=0;i<n;i++)
    {
        printf ("%6d    %18s    %20s",OS.num,OS.data,OS.NomeClient);
        switch (OS.servico)
        {
            case 1: printf("%20s","Revisão");
                    break;
            case 2: printf("%20s","Troca de Oleo");
                    break;
            case 3: printf("%20s","Reposição de Peças");
                    break;
            case 4: printf("%20s","Recall");
                    break;
            default: printf ("Opção Invalida \n");            
        }
        printf ("%13 2.f\n", OS.valor);
        }
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...