Ir ao conteúdo

Posts recomendados

Postado

Boa noite, alguém ai pode me ajudar!?

Como achar o valor mais alto dentro de um vetor.

Os valores estão dentro de uma estrutura.

Tentei comparar de forma:

If(os.valorOs>os[i++].valorOs)
   maior=os.valorOs;
else
    maior=os.valorOs;

Porém não deu certo.

Postado
Citação

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

void flush_in(){
    int ch;
    while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
}

int main()
{
    int i,num,maior,aux,aux1;
    float media,soma;


    struct os
    {
      float numOs;
      char dataOs[10];
      float valorOs;
      char servico[100];
      char nome[30];
        char cpf [10];
        char datanasc[10];
        char email[50];

    } os[100];
    printf("\n\n            Digite a quantidade de OS que deseja cadastrar: ");
    scanf("%d",&num);


    for(i=0;i<num;i++){
        printf("     ORDEM DE SERVIÇO\n\n");
        printf("Digite o numero da OS: ");
        scanf("%f",&os[i].numOs);
        flush_in();

        if(os[i].numOs==0)
            break;
            else
            {
                printf("\n ===================MECÂNICA SÃO JORGE===================\n\n ");
            }
        printf("Digite a data da OS no formato dd/mm/aaaa: ");
        scanf("%s",os[i].dataOs);
        flush_in();
        printf("Digite o valor da OS: ");
        scanf("%f",&os[i].valorOs);
        flush_in();
       
        printf("Digite o nome do serviço realizado: ");
        scanf("%s",os[i].servico);
        flush_in();

        printf("\n\n     Cadastro do cliente!!! \n");


          printf("\nDigite o nome do cliente: ");
          scanf("%s",os[i].nome);
          flush_in();
          printf("\nDigite o cpf do cliente: ");
          scanf("%s",os[i].cpf);
          flush_in();
          printf("\nDigite a data de nascimento do cliente: ");
          scanf("%s",os[i].datanasc);
          flush_in();
          printf("\nDigite o email do cliente: ");
          scanf("%s*c",os[i].email);
          flush_in();



        soma=soma+os[i].valorOs;
        media=soma/num;
          aux=os[i].valorOs;
           aux1=os[i++].valorOs;
          if(aux<aux1)
            maior=aux1;
          else
            maior=aux1;








    }
    printf("\n A media e: %f\n",media);

    printf("\n A maior e: %d\n",maior);


system ("pause");
    return 0;
}

 

 

adicionado 1 minuto depois

Não funciona,o for só varre o vetor uma vez,mesmo digitando mais de uma Os.

Postado
#include <stdio.h>
#include <stdlib.h>
struct os{
      float numOs;
      char dataOs[10];
      float valorOs;
      char servico[100];
      char nome[30];
      char cpf [10];
      char datanasc[10];
      char email[50];
} os[100];

void flush_in(){
    int ch;
    while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
}

int main()
{
    int i,num,maior = 0;
    float media,soma;
 
    printf("\n\n            Digite a quantidade de OS que deseja cadastrar: ");
    scanf("%d",&num);

    for(i=0; i<num; i++){
        printf("     ORDEM DE SERVIÇO\n\n");
        printf("Digite o numero da OS: ");
        scanf("%f",&os[i].numOs);
        flush_in();

        if(os[i].numOs==0) break;
        else printf("\n ===================MECÂNICA SÃO JORGE===================\n\n ");
    
        printf("Digite a data da OS no formato dd/mm/aaaa: ");
        scanf("%s",os[i].dataOs);
        flush_in();
        printf("Digite o valor da OS: ");
        scanf("%f",&os[i].valorOs);
        flush_in();
       
        printf("Digite o nome do serviço realizado: ");
        scanf("%s",os[i].servico);
        flush_in();

        printf("\n\n     Cadastro do cliente!!! \n");

        printf("\nDigite o nome do cliente: ");
        scanf("%s",os[i].nome);
        flush_in();
        printf("\nDigite o cpf do cliente: ");
        scanf("%s",os[i].cpf);
        flush_in();
        printf("\nDigite a data de nascimento do cliente: ");
        scanf("%s",os[i].datanasc);
        flush_in();
        printf("\nDigite o email do cliente: ");
        scanf("%s*c",os[i].email);
        flush_in();
      
        soma=soma+os[i].valorOs;
        media=soma/num;
        maior = (maior < os[i].valorOs) ? os[i].valorOs : maior;
    }
  
    printf("\n A media e: %f\n",media);
    printf("\n A maior e: %d\n",maior);
    system ("pause");
    return 0;
}

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!