Ir para o conteúdo
PlayMa256

Problema de ordenação.

Mensagens Recomendadas

PlayMa256

ola amigos, bom, dessa vez estou com um problema, o programa esta parando de funcionar e nao faço a menor ideia do que seja o problema.

obs: este é um sistema hipotetico

Bom, deixa eu contar ao que se destina o programa.

Tenho varias entradas, onde na 1 linha é um nome, na 2 um salario tipo float, e na 3 a comissao.

o recebimento de dados acaba quando for achado a palavra FIM.

Depois tenho que organizar com o salario de maneira crescente, e o nome de cada funcionario que tem aquele respectivo salario

Salario no Mes: R$ 350.00

- Pedro de Aparecida Francisco

Salario no Mes: R$ 1000.00

- Arlette Castanheira

- Wilson Rogerio

Bom, eis o meu codigo:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <ctype.h>
int main(){
struct pagamentos{
   char nome[1000];
   float salario;
   float comissao;
   float salarioTotal;
   char aux[1000];
};
   int i,j,k,m;
   int tamanho = 0;
   float salarioBase = 0.0;
   char vetor[1001];
   int qtd;
   qtd = 0;
   struct pagamentos pg[1001];
   k=0;
while(1){

   printf("Nome:");
   fflush(stdin);
   fgets(pg[k].nome, 1001, stdin);
   //Quebra se for FIM
   tamanho = strlen(pg[k].nome);
   if((tamanho >= 3) && (pg[k].nome[0] == 70) && (pg[k].nome[1] == 73) && (pg[k].nome[2] == 77)){
       break;
    }
   printf("Salario: ");
   scanf("%f", &pg[k].salario);
   printf("comissao: ");
   scanf("%f", &pg[k].comissao);
   //aqui é pra arrumar o problema do \n no buffer que fica depois do scanf
   getchar();

       pg[k].salarioTotal = pg[k].salario + pg[k].comissao;
//------------Bubble sort do nome---------------//
   for(i=0;i<k;i++){
       for(j=0;j<k;j++){
           //char aux[1001];
           if(strcmp(pg[j].nome, pg[i].nome) < 0){
               strcpy(pg[i].aux, pg[j+1].nome);
               strcpy(pg[i].nome, pg[j].nome);
               strcpy(pg[j].nome, pg[i].aux);
           }
       }
}
//------------FIM Bubble sort nome--------------//
//-------------------------BUBBLE SORT------------------//
int l,c,u;
float temp;
   for(l=0;l<k;l++){
       for(u=0;u<k;u++){
           if(pg[l].salarioTotal < pg[u].salarioTotal){
               temp = pg[l].salarioTotal;
               pg[l].salarioTotal = pg[u].salarioTotal;
               pg[u].salarioTotal = temp;
           }
       }
   }
//------------------------FIM---------------------------//
k++;
}//while
//------Parte de printagem--------//
printf("Folha de Pagamento\n");
for(i=0;i<k;i++){
   printf("Salario do mes: %4.2f", pg[i].salarioTotal);
   printf("%s", pg[i].nome);
}
//------Fim parte da printagem------//
stem("pause");
return 0;
}

Eu fiz a entrada destes dados:

Nome:lucas

Salario: 200

comissao: 200

Nome: andre

Salario: 200

comissao: 200

porem minha saida foi essa

Salario do mes: 400.00lucas

Salario do mes: 400.00andre

Nao sei se foi pela maneira que mandei exibir, mas ele era pra exibir ordenando alfabeticamente os nomes, o que nao foi o caso.

Quero associar o salarioTotal e trazer ele em ordem crescente(o que tentei fazer com o bubble sort) e trazer os nomes associados a esse salario, ordenados alfabeticamente.

Mais ou - assim:

Entrada:

Pedro Paulo

1000.00

2000.00

Ana Maria da Silva

5000.00

100.00

Luis Meira

3000.00

0.00

Guilherme Coelho

2500.00

500.00

Saida:

Salario no Mes: R$ 3000.00

- Guilherme Coelho

- Luis Meira

- Pedro Paulo

Salario no Mes: R$ 5100.00

- Ana Maria da Silva

Obrigado;

Editado por pmg
removi formatacao; adicionei GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Copiei o teu codigo para o meu computador, fiz-lhe indentacao automatica (ao meu estilo) e comecei a percorre-lo. As coisas em que reparei sao

1) tens o header <ctype.h> repetido (não há crise, mas fica mal)

2) define a struct pagamentos fora da funcao main

3) escreve mais funcoes. Nao ponhas tudo na mesma funcao!

4) fflush(stdin); não está definido em muitos computadores. Só está definido (que eu saiba) para computadores Windows que usem a biblioteca Microsoft. Se conseguires evitar o uso desta instrução o teu programa fica funcional para mais compiladores/sistemas operativos.

5) no fgets() estás a dizer que o destino tem 1001 elementos quando só tem 1000. Se o utilizador escrever 1000 ou mais caracteres vai estourar.

6) o teste de "FIM" tambem aceita "FIM_DO_TESTE" ou outros inputs que comecem por "FIM"

7) não mistures scanf() com fgets(). Começaste, muito bem, com fgets(), continua com a mesma função (usa sscanf() para ir buscar elementos à string usado no fgets())

8) para "arrumar o problema do \n no buffer" ve a linha anterior :)

9) Reve o teu bubble sort (faz uma funcao!): nunca precisas de comparar os elementos com o mesmo indice; quando precisares de copiar elementos dum lado para o outro, acho que também precisas de copiar o salario e a comissao.

10) OOOPS ... 2 bubble sorts???? um para o nome e outro para o slaaraio? Porque???

11) o system("pause"); nao funciona no meu computador. Se conseguires escrever o teu programa sem recurso a essa instrucao, o teu programa pode funcionar no meu computador.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

4) eu tinha utilizado o getchar pra ele que o enter nao interfira no scanf, mas tbm coloquei o fflush(stdin).

5) de fato eu acabei colocando menos, porem pra testes só fiz com no max 3.

6) na verdade como é só um sistema hipotetico, ele SEMPRE terá o FIM como quebra da funçao, nada mais.

7) mas como eu iria passar pro fgets, que tipo de variavel eu teria passar pra ele pegar tanto os floats quanto a string?

utilizando o sscanf como eu vou fazer pra procurar pelo salario e pela comissao no vetor trazido do fgets?

9) Reve o teu bubble sort (faz uma funcao!): nunca precisas de comparar os elementos com o mesmo indice; quando precisares de copiar elementos dum lado

para o outro, acho que também precisas de copiar o salario e a comissao.

Para eu colocar em ordem crescente o SALARIOTOTAL nao necessito fazer desta maneira?

int l,c,u;
float temp;
for(l=0;l<k;l++){
	for(u=0;u<k;u++){
		if(pg[l].salarioTotal < pg[u].salarioTotal){
			temp = pg[l].salarioTotal;
			pg[l].salarioTotal = pg[u].salarioTotal;
			pg[u].salarioTotal = temp;
		}
	}
}

quero ordenar da maneira que eu inseri mas aparentemente estou me perdendo na logica pra ordenar tanto o salario quanto o nome junto, poderia me dar uma luz?

10) Porque necessito ordenar o salario em ordem crescente, e depois ordenar o nome segundo o salario total.(segundo aquela saida que eu postei acima)

11) como estou utilizando o windows, acabei colocando pra ele poder parar o sistema pra eu poder analizar a saida.

Editado por PlayMa256

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

O que está a acontecer no(s) teu(s) bubble sort é que misturas o nome/salario/comissao de utilizadores diferentes.

O que tens que fazer, em cada troca, é copiar tudo (nome, salario e comissao).

for (l = 0; l < k; l++) {
   for (u = 0; u < k; u++) {
       if (trocanecessaria(pg, l, u)) { /* falta escrever a funcao trocanecessaria() */
           trocaelementos(pg, l, u);    /* falta escrever a funcao trocaelementos() */
       }
   }
}

e a funcao trocanecessaria() teria de comparar o salario em primeiro lugar; e caso fosse igual comparar o nome.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

obrigado pmg, fiz isso e deu certo.

Porem nao estou conseguindo fazer ele "agrupar" os nomes em relação ao salario.

Como um exemplo:

Entrada:

Lucas

200.00

300.00

Pedro

200.00

300.00

Matheus

400.00

400.00

ele traz:

Salario Total: 500.00

Lucas

Salario total: 500.00

Pedro

Salario total: 800.00

Matheus

Eu gostaria que ficasse desta maneira:

Salario no Mes: R$ 500.00

- Lucas

- Pedro

Salario no Mes: R$ 800.00

- Matheus

Eis o meu codigo de exibição:


for(i=0;i<k;i++){
   printf("Salario do mes: %4.2f\n", pg[i].salarioTotal);
   printf("Nome da pesoa: %s\n", pg[i].nome);
}

obrigado

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Porem nao estou conseguindo fazer ele "agrupar" os nomes em relação ao salario.

Eis o meu codigo de exibição:


for(i=0;i<k;i++){
   printf("Salario do mes: %4.2f\n", pg[i].salarioTotal);
   printf("Nome da pesoa: %s\n", pg[i].nome);
}

obrigado

Precisas de uma variável auxiliar

double auxiliar = -1; /* ninguem tem salario negativo! */
for (i = 0; i < k; i++) {
   if (pg[i].salarioTotal != auxiliar) {
       printf("Salario do mes: %4.2f\n", pg[i].salarioTotal);
       auxiliar = pg[i].salarioTotal;
   }
   printf("Nome da pesoa: %s\n", pg[i].nome);
}

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Repara que inicializaei a variavel auxiliar com um 'valor impossivel' (-1). Isto 'e importante para perceber o funcionamento.

No ciclo comparo o primeiro salario com o valor impossivel. Como 'e diferente imprime o salario, alem do nome que imprimiria sempre. Na mesma altura mete a variavel auxiliar com o valor do salario.

Na segunda passagem do ciclo compara o primeiro salario com o segundo. Se forem diferentes imprime o salario e depois o nome; se forem iguais so imprime o nome.

Em suma, em cada passagem pelo ciclo ou imprime o salario ou nao consoante seja igual ao anterior e, independentemente do salario, imprime sempre o nome.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

muito bom, agora nao consigo colocar um bendito espaço embaixo...

tem que ficar assim quando se tem a entrada de 2 salarios diferentes.

Salario no Mes: R$ 3000.00

- Guilherme Coelho

- Luis Meira

- Pedro Paulo

Salario no Mes: R$ 5100.00

- Ana Maria da Silva

mas ja taquei \n em tudo conté lugar, e nada!.

Me deem uma luz por favor.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
double auxiliar = -1; /* ninguem tem salario negativo! */
for (i = 0; i < k; i++) {
   if (pg[i].salarioTotal != auxiliar) {
       printf("\nSalario do mes: %4.2f\n", pg[i].salarioTotal); // <------------
       auxiliar = pg[i].salarioTotal;
   }
   printf("Nome da pesoa: %s\n", pg[i].nome);
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

double auxiliar = -1; /* ninguem tem salario negativo! */
for (i = 0; i < k; i++) {
if (pg[i].salarioTotal != auxiliar) {
	printf("\nSalario do mes: %4.2f\n", pg[i].salarioTotal); // <------------
	auxiliar = pg[i].salarioTotal;
}
printf("Nome da pesoa: %s\n", pg[i].nome);
}

Entao, ja tinha tentando fazer isso, mas no caso da inserção de dados com o mesmo salario, ele fica desta maneira:

Salario do mes: 400.00

- andre

- carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Entao, ja tinha tentando fazer isso, mas no caso da inserção de dados com o mesmo salario, ele fica desta maneira:

a alteração que apresentei nunca implica a apresentação da quebra de linha entre nomes das pessoas.

a quebra é feita imediatamente antes da apresentação do texto "Salario do mes: %4.2f"

se o que te está a aparecer é o que apresentas, limpa o projecto, compila novamente o código e verifica que estás a correr a última versão compilada


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

Realmente era erro de versao.

Só que agora fui fazer os testes finais, ele esta ordenando erroneamente alguns valores e alguns nomes

como aqui:

Salario no Mes: R$ 3000.00

- Guilherme Coelho

- Pedro Paulo

- Luis Meira

Salario no Mes: R$ 5100.00

- Ana Maria da Silva

P vem antes de L, e infelizmente nao sei o problema

Tambem esta acontecendo aqui com o salario:

Folha de Pagamento

Salario no Mes: R$ 1700.00

- Rubens Ewald Filho

Salario no Mes: R$ 80000.00

- Farokh Bommi Bulsara

Salario no Mes: R$ 1800.00

- Liliane de Carvalho

Salario no Mes: R$ 2100.00

- Gabriel Contino

Salario no Mes: R$ 3000.00

- Ana Luisa

- Guilherme Coelho

- Luis Meira

- Marina Zatz de Camargo

- Pedro Paulo

- Zabumba Maria

Salario no Mes: R$ 5100.00

- Ana Maria da Silva

Salario no Mes: R$ 7000.00

- Katheryn Elizabeth Hudson

Salario no Mes: R$ 7600.00

- Adriana Moraes Rego Reis

- Arlette Pinheiro Esteves Silva

- Daniel Michaeli

Salario no Mes: R$ 8000.00

- Helio Antonio do Couto Filho

- Juliana Couto Paes

Salario no Mes: R$ 9100.00

- Dolores Gonçalves Costa

Salario no Mes: R$ 13000.00

- Willian Bonemmer Junior

Salario no Mes: R$ 25000.00

- Natalie Hershlag

Salario no Mes: R$ 35000.00

- Eric Patrick Clapp

Salario no Mes: R$ 80000.00

- Senor Abravanel

Só que neste caso ele ordenou erroneamente o salario

R$ 80000.00

- Farokh Bommi Bulsara

e nao fez o agrupamente com o de 80000 la em baixo

qual seria o problema?

meu codigo:


#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <ctype.h>
int main(){

struct pagamentos{
char nome[1000];
float salario;
float comissao;
float salarioTotal;
char aux[1000];
};
int i,j,k,m;
int tamanho = 0;
float salarioBase = 0.0;
int qtd;
qtd = 0;
struct pagamentos pg[1001];
k=0;

while(1){

//printf("Nome:");
fgets(pg[k].nome, 1000, stdin);

//Quebra se for FIM
tamanho = strlen(pg[k].nome);
if((tamanho >= 3) && (pg[k].nome[0] == 70) && (pg[k].nome[1] == 73) && (pg[k].nome[2] == 77)){
break;
}

//printf("Salario:");
scanf("%f", &pg[k].salario);
getchar();
//printf("comissao:");
scanf("%f", &pg[k].comissao);

getchar();
//aqui é pra arrumar o problema do \n no buffer que fica depois do scanf

pg[k].salarioTotal = pg[k].salario + pg[k].comissao;

//------------Bubble sort do nome---------------//

//------------FIM Bubble sort nome--------------//

//-------------------------BUBBLE SORT------------------//
int l,c,u;
float temp;
char auxiliar[1000];
for(l=k;l>0;l--){
for(u=0;u<k;u++){
if(pg[l].salarioTotal < pg[u].salarioTotal){
temp = pg[l].salarioTotal;
pg[l].salarioTotal = pg[u].salarioTotal;
pg[u].salarioTotal = temp;

strcpy(pg[l].aux, pg[u].nome);
strcpy(pg[u].nome, pg[l].nome);
strcpy(pg[l].nome, pg[l].aux);

}else if((pg[l].salarioTotal == pg[u].salarioTotal) && (strcmp(pg[l].nome, pg[u].nome) < 0)){
strcpy(pg[l].aux, pg[l].nome);
strcpy(pg[l].nome, pg[u].nome);
strcpy(pg[u].nome, pg[l].aux);

}
}
}

//------------------------FIM---------------------------//

k++;
}//while
//------Parte de printagem--------//
printf("Folha de Pagamento");
printf("\n");
double auxiliar = -1; /* ninguem tem salario negativo! */
for (i = 0; i < k; i++) {
if (pg[i].salarioTotal != auxiliar) {
printf("\nSalario no Mes: R$ %4.2f\n", pg[i].salarioTotal); // <------------
auxiliar = pg[i].salarioTotal;
}
printf("- %s", pg[i].nome);
}


//------Fim parte da printagem------//
//system("pause");
return 0;
}

Editado por PlayMa256

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

depois de vascular por esse código ...

no teu bubble sort, a troca de valores é só trocar o nome ?? e o resto da info ?

sabes que podes copiar a informação de uma estrutura completa de uma só vez com o operador atribuição ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

Na verdade ele troca tanto o nome quanto o salario, que no caso eu to trocando apenas o salario total.

O que fiquei curioso é que ele ta dando erro em apenas alguns, porque o resto ele ta fazendo direitinho, isso que me deixa entrigado.

Neste caso, como posso arrumar isto?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

simples e sem complicações ...

struct pagamentos temp;
int l, u, k;

/* ordenação */
for(l = k; l > 0; l--)
{
 for(u = 0; u < k; u++)
 {
   if(pg[l].salarioTotal < pg[u].salarioTotal ||
      (pg[l].salarioTotal == pg[u].salarioTotal && strcmp(pg[l].nome, pg[u].nome) < 0))
   {
     temp = pg[l];
     pg[l] = pg[u];
     pg[u] = temp;
   }
 }
}
/* ordenação */


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

isso nao sabia que podia atribuir um struct com outro.

Mas mesmo assim ainda continuo com o mesmo erro, ele nao ta ordenando um.

Por algum motivo esse erro, ja vasculhei o codigo inteiro e nada.

esse

Salario no Mes: R$ 80000.00

- Farokh Bommi Bulsara

ta sendo ordenado incorretamente, sendo que ele tem o valor de salario maior, mas se todos os outros foram ordenados por que raios este tambem nao é?

Folha de Pagamento

Salario no Mes: R$ 350.00

- Pedro de Aparecida Francisco Carlos Xavier de Joaquim Gonzaga Pascoal Cipriano de Braganca e Bourbon

Salario no Mes: R$ 80000.00

- Farokh Bommi Bulsara

Salario no Mes: R$ 700.00

- Arlington Florencio

- Francislene Coutinho

Salario no Mes: R$ 950.00

- Lilian Alfredo

Salario no Mes: R$ 1000.00

- Wilson Rogerio

Salario no Mes: R$ 1050.00

- Dante Aliguieri Pereira

Salario no Mes: R$ 1300.00

- Arlette Castanho

- Luis Coelho

- Luis Corridor

Salario no Mes: R$ 1700.00

- Rubens Ewald Filho

Salario no Mes: R$ 1800.00

- Alan Godoy

- Alan Silva

- Liliane de Carvalho

Salario no Mes: R$ 1930.00

- Lener Luis

Salario no Mes: R$ 2000.00

- Natalia Peres

- Zuleide Aparecida Castanho

Salario no Mes: R$ 2100.00

- Gabriel Contino

- Gabriela Alves

- Romis Ribeiro

Salario no Mes: R$ 2205.00

- Luis Molina

Salario no Mes: R$ 2300.00

- Rubens Leitao

Salario no Mes: R$ 2500.00

- Caio Alfredo

- Natalia Ventura

Salario no Mes: R$ 2550.00

- Hamilton Ferreira

Salario no Mes: R$ 2600.00

- Anderson Roberto

Salario no Mes: R$ 2950.00

- Ana Luisa Rocha

Salario no Mes: R$ 3000.00

- Ana Luisa

- Guilherme Coelho

- Luis Meira

- Marina Zatz de Camargo

- Pedro Paulo

- Zabumba Maria

Salario no Mes: R$ 3100.00

- Ana Luisa Henriques

Salario no Mes: R$ 3160.00

- Jacques Wainer

Salario no Mes: R$ 3210.00

- Luisa Helena

Salario no Mes: R$ 3500.00

- Angela Rosa

- Carlos Renato Azevedo

- Fernando Von Zuben

- Natalie Potiguar

Salario no Mes: R$ 4000.00

- Carlos Renato Antunes

- Pedro Paulo Rangel

- Wagner Suarez

- William Sarroche

Salario no Mes: R$ 4200.00

- Luisa Possi

Salario no Mes: R$ 4750.00

- Pedro de Alcantara

Salario no Mes: R$ 5000.00

- Paulo Rangel

- Raul Seixas

- Ronald Golias

Salario no Mes: R$ 5100.00

- Ana Maria da Silva

Salario no Mes: R$ 5200.00

- Katie Hudson

Salario no Mes: R$ 5250.00

- Wagner Santisteban

Salario no Mes: R$ 5320.00

- Ana Maria Pereira

Salario no Mes: R$ 5750.00

- Adriana Moraes Rego Reis

Salario no Mes: R$ 6000.00

- Louise Chiffon

Salario no Mes: R$ 6130.00

- Guilherme Meira

- Guilherme Mendes Junior

- Gustavo Henrique

Salario no Mes: R$ 6200.00

- Jurandir Carvalho

- Rogerio Ferracini

- Rubem Alves

Salario no Mes: R$ 6700.00

- Pedro Paulo Zutz

Salario no Mes: R$ 6800.00

- Guilherme Nunes

Salario no Mes: R$ 7000.00

- Celmar Guimaraes

- Hamilton Lemos

- Katheryn Elizabeth Hudson

Salario no Mes: R$ 7600.00

- Adriana Moraes Rego Reis

- Arlette Pinheiro Esteves Silva

- Daniel Michaeli

Salario no Mes: R$ 8000.00

- Christiano Lyra

- Cid Carvalho Costa

- Daniel Regis

- Daniela Regina

- Gabriela Castellano

- Guido Araujo

- Helio Antonio do Couto Filho

- Helio Waldman

- Julia Von Zuben

- Juliana Couto Paes

- Juliana Lyra

Salario no Mes: R$ 8050.00

- Ana Carolina Garcia

- Guilherme Palermo

Salario no Mes: R$ 8500.00

- Ana Estela Antunes

- Christiano Sabin

Salario no Mes: R$ 8700.00

- Zenaide Dutra

Salario no Mes: R$ 9000.00

- Anamaria Gomide

Salario no Mes: R$ 9100.00

- Dolores Gonçalves Costa

- Fernando Gomide

Salario no Mes: R$ 9150.00

- Dante Gonçalves Costa

Salario no Mes: R$ 9800.00

- Dirce Palermo Falleiros

Salario no Mes: R$ 12000.00

- Thomasz Kowaltowski

Salario no Mes: R$ 13000.00

- Maiana Zatz

- Willian Bonemmer Junior

Salario no Mes: R$ 15730.00

- Eric Clapton

Salario no Mes: R$ 25000.00

- Natalie Hershlag

Salario no Mes: R$ 27000.00

- Ana Maria Braga

Salario no Mes: R$ 30000.00

- Freddie Mercury

Salario no Mes: R$ 34750.00

- Pedro de Alcantara Francisco Carlos Xavier de Joaquim Gonzaga Pascoal Cipriano de Braganca e Bourbon

Salario no Mes: R$ 35000.00

- Eric Patrick Clapp

Salario no Mes: R$ 80000.00

- Senor Abravanel

Seria assim, ele ordenado corretamente

Folha de Pagamento

Salario no Mes: R$ 350.00

- Pedro de Aparecida Francisco Carlos Xavier de Joaquim Gonzaga Pascoal Cipriano de Braganca e Bourbon

Salario no Mes: R$ 700.00

- Arlington Florencio

- Francislene Coutinho

Salario no Mes: R$ 950.00

- Lilian Alfredo

Salario no Mes: R$ 1000.00

- Wilson Rogerio

Salario no Mes: R$ 1050.00

- Dante Aliguieri Pereira

Salario no Mes: R$ 1300.00

- Arlette Castanho

- Luis Coelho

- Luis Corridor

Salario no Mes: R$ 1700.00

- Rubens Ewald Filho

Salario no Mes: R$ 1800.00

- Alan Godoy

- Alan Silva

- Liliane de Carvalho

Salario no Mes: R$ 1930.00

- Lener Luis

Salario no Mes: R$ 2000.00

- Natalia Peres

- Zuleide Aparecida Castanho

Salario no Mes: R$ 2100.00

- Gabriel Contino

- Gabriela Alves

- Romis Ribeiro

Salario no Mes: R$ 2205.00

- Luis Molina

Salario no Mes: R$ 2300.00

- Rubens Leitao

Salario no Mes: R$ 2500.00

- Caio Alfredo

- Natalia Ventura

Salario no Mes: R$ 2550.00

- Hamilton Ferreira

Salario no Mes: R$ 2600.00

- Anderson Roberto

Salario no Mes: R$ 2950.00

- Ana Luisa Rocha

Salario no Mes: R$ 3000.00

- Ana Luisa

- Guilherme Coelho

- Luis Meira

- Marina Zatz de Camargo

- Pedro Paulo

- Zabumba Maria

Salario no Mes: R$ 3100.00

- Ana Luisa Henriques

Salario no Mes: R$ 3160.00

- Jacques Wainer

Salario no Mes: R$ 3210.00

- Luisa Helena

Salario no Mes: R$ 3500.00

- Angela Rosa

- Carlos Renato Azevedo

- Fernando Von Zuben

- Natalie Potiguar

Salario no Mes: R$ 4000.00

- Carlos Renato Antunes

- Pedro Paulo Rangel

- Wagner Suarez

- William Sarroche

Salario no Mes: R$ 4200.00

- Luisa Possi

Salario no Mes: R$ 4750.00

- Pedro de Alcantara

Salario no Mes: R$ 5000.00

- Paulo Rangel

- Raul Seixas

- Ronald Golias

Salario no Mes: R$ 5100.00

- Ana Maria da Silva

Salario no Mes: R$ 5200.00

- Katie Hudson

Salario no Mes: R$ 5250.00

- Wagner Santisteban

Salario no Mes: R$ 5320.00

- Ana Maria Pereira

Salario no Mes: R$ 5750.00

- Adriana Moraes Rego Reis

Salario no Mes: R$ 6000.00

- Louise Chiffon

Salario no Mes: R$ 6130.00

- Guilherme Meira

- Guilherme Mendes Junior

- Gustavo Henrique

Salario no Mes: R$ 6200.00

- Jurandir Carvalho

- Rogerio Ferracini

- Rubem Alves

Salario no Mes: R$ 6700.00

- Pedro Paulo Zutz

Salario no Mes: R$ 6800.00

- Guilherme Nunes

Salario no Mes: R$ 7000.00

- Celmar Guimaraes

- Hamilton Lemos

- Katheryn Elizabeth Hudson

Salario no Mes: R$ 7600.00

- Adriana Moraes Rego Reis

- Arlette Pinheiro Esteves Silva

- Daniel Michaeli

Salario no Mes: R$ 8000.00

- Christiano Lyra

- Cid Carvalho Costa

- Daniel Regis

- Daniela Regina

- Gabriela Castellano

- Guido Araujo

- Helio Antonio do Couto Filho

- Helio Waldman

- Julia Von Zuben

- Juliana Couto Paes

- Juliana Lyra

Salario no Mes: R$ 8050.00

- Ana Carolina Garcia

- Guilherme Palermo

Salario no Mes: R$ 8500.00

- Ana Estela Antunes

- Christiano Sabin

Salario no Mes: R$ 8700.00

- Zenaide Dutra

Salario no Mes: R$ 9000.00

- Anamaria Gomide

Salario no Mes: R$ 9100.00

- Dolores Gonçalves Costa

- Fernando Gomide

Salario no Mes: R$ 9150.00

- Dante Gonçalves Costa

Salario no Mes: R$ 9800.00

- Dirce Palermo Falleiros

Salario no Mes: R$ 12000.00

- Thomasz Kowaltowski

Salario no Mes: R$ 13000.00

- Maiana Zatz

- Willian Bonemmer Junior

Salario no Mes: R$ 15730.00

- Eric Clapton

Salario no Mes: R$ 25000.00

- Natalie Hershlag

Salario no Mes: R$ 27000.00

- Ana Maria Braga

Salario no Mes: R$ 30000.00

- Freddie Mercury

Salario no Mes: R$ 34750.00

- Pedro de Alcantara Francisco Carlos Xavier de Joaquim Gonzaga Pascoal Cipriano de Braganca e Bourbon

Salario no Mes: R$ 35000.00

- Eric Patrick Clapp

Salario no Mes: R$ 80000.00

- Farokh Bommi Bulsara

- Senor Abravanel

Editado por PlayMa256

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

nem eu, porque apesar de teres debitado muito código, em nenhuma parte dele tens a atribuição do valor de "k" ...

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

sim, possui a declaração sim:

int i,j,k,m;

int tamanho = 0;

struct pagamentos pg[1001];

k=0;

logo no inicio...

Este erro esta me deixando curioso, porque raios funciona parcialmente?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se k tem o valor de zero, então a ordenação não é feita, nem sequer uma única comparação é efectuada


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

a ta, entendi, mesmo que dentro do while ele esteja atribuindo um valor pro k, fora ele nao esta replicando esse valor, ele esta sobreposicionando o valor de k por 0.

entao, como faço pra fora ele conseguir indicar quantas vezes esse loop foi feito? pra poder relacionar tanto o bubble sort quanto o print das informações?

porque eu tirei a atribuição de k=0, e deixei só declarado k, e o loop de exibição começou a ficar doido.

Uma outra coisa que sei tbm, é que será feita a entrada de no maximo 100 funcionarios no mes.

########UPDATE######

Fiz uns testes pedindo pra ele dar print no k, que agora troquei por M, e ele printou a quantidade de nomes inseridos, que foram 100, esta correto, era pra ordenar corretamente do mesmo jeito.

Editado por PlayMa256

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ok ... acho que já percebi o teu código

estás a ordenar os dados SEMPRE que inseres um elemento, algo que bastaria fazer no fim da inserção

o teu problema é que estás a actualizar o valor de "k" depois da ordenação. o que acontece é que falta sempre ordenar o último elemento.

por isso, a solução rápida é parra o incremento do "k" ara antes da ordenação, ou a solução menos simples (mas simples também) mover a ordenação para fora da inserção dos dados.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

eu tirei o k=0 que estava fora do while, e movi o k++ pra antes da ordenação, ele ficou doido....sem contar que o programa para de executar.

Se eu deixo o k=0, e entro com os dados, ele simplesmente faz isso:

Salario no Mes: R$ 0.00

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.