Ir ao conteúdo

Posts recomendados

Postado

olá gostaria de saber como faço pra saída deste programa rodar em ordem alfabética, por exemplo ele etá imprimindo o salario em ordem crescente e assim deve ser, mas quando o salario é igual ele deve ordenar em ordem alfabética e ai que eu me encontro em um beco sem saida

 

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

struct Func{
	char nome[100];
	float sb, comi, sm;
};

int main(void){
	char name[100];
	struct Func func[100];
  float sal[100], temp;
	int i, j, k, n=0;
	for(i=0; i<100; i++){
		if(i > 0)
			getchar();
		fgets(name, sizeof(name), stdin);
		if(strcmp(name, "FIM\n") == 0){
			break;
		}else{
			strcpy(func[i].nome, name);
		}
		scanf("%f", &func[i].sb);
		scanf("%f", &func[i].comi);
		func[i].sm = func[i].sb + func[i].comi;
	}
  printf("Folha de Pagamento\n");
  for(i=0; i<100; i++){
    if(func[i].sm == 0.000000)
      break;
    sal[i] = func[i].sm;
    n++;   
  }
  for(i = 0; i < n; i++)
    {
        for(j = i+1; j < n; )
        {
            if(sal[j] == sal[i])
            {
                for(k = j; k < n; k++)
                {
                    sal[k] = sal[k+1];
                }
                n--;
            }
            else
            {
                j++;
            }
        }
    }

  for(i = 0; i < n; ++i) 
  {
      for (j = i + 1; j < n; ++j)
      {
          if (sal[i] > sal[j]) 
          {
              temp =  sal[i];
              sal[i] = sal[j];
              sal[j] = temp;
          }
      }
  }
  k = 0;
  for(i = 0; i < 100; i++){
    if(sal[i] < 0.1)
      break;
    printf("Salario no Mes: R$ %.2f\n", sal[i]);
    for(j = 0; j < 100; j++){
      if(func[j].sm < 0.1)
        break;
      if(func[j].sm == sal[i]){
        printf("- %s", func[j].nome);
      }
    }
  }
	
	return 0;
}

 

  • Obrigado 1
Postado

@pedroperdido     você pode usar o comando strcmp , que compara strings , pela primeira letra , mas se você quer compara as letras mais a frente , por exemplo uma palavra tem a letra m e a outra também , aí verificar a próxima letra , e nesse caso você pode fazer comparando cada caractere de cada palavra , e até mesmo o valor ASCII deles , que o a minúsculo é 97 o b é 98 e assim até z que é 122 , aí compara qual valor é maior ou menor .

  • Curtir 2

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!