C Sıralama Hakkında
4
●255
- 19-12-2017, 22:18:02Toplam puanı sıraladım diyelim diğerlerini toplam puan sıralamasına göre nasıl sıralayacağım o kısmı anlayamadım.Penguenn adlı üyeden alıntı: mesajı görüntüle
- 20-12-2017, 18:00:01Maybell adlı üyeden alıntı: mesajı görüntüle
#include <stdio.h> #include <stdlib.h> #define YARISMACISAYISI 6 int yarismaci[YARISMACISAYISI][4][1] = { 0 }; void puanlariAl(); void puanlariGoster(); void sırala(); int main() { puanlariAl(); puanlariGoster(); system("pause"); return 0; } void puanlariAl() { for (int i = 0; i < YARISMACISAYISI; i++) { yarismaci[i][0][3] = i + 1; printf("%d. Yarismacinin koctan almis oldugu puani giriniz :", i + 1); scanf("%d", &yarismaci[i][0]); printf("%d. Yarismacinin seyirciden almis oldugu puani giriniz :", i + 1); scanf("%d", &yarismaci[i][1]); yarismaci[i][0][2] = yarismaci[i][0][0] + yarismaci[i][0][1]; } } void puanlariGoster() { sırala(); for (int i = 0; i < YARISMACISAYISI; i++) { printf("sira no = %d | yaris. no = %d | top p. = %d | koc p. = %d | sey. p. = %d\n", i + 1, yarismaci[i][0][3], yarismaci[i][0][2], yarismaci[i][0][0], yarismaci[i][0][1]); } } void sırala() { int degerAlYarNo, degerAlTopPuan, DegerAlKocPuani, DegerAlSeyirciPuani; int i, j; for (i = 1; i < YARISMACISAYISI; i++) { for (j = 0; j < YARISMACISAYISI - i; j++) { if (yarismaci[j][0][2] < yarismaci[j + 1][0][2]) // toplam puanı bir sonraki yarismacidan kücükse büyük olanı öne geçir { degerAlYarNo = yarismaci[j][0][3]; yarismaci[j][0][3] = yarismaci[j + 1][0][3]; yarismaci[j + 1][0][3] = degerAlYarNo; degerAlTopPuan = yarismaci[j][0][2]; yarismaci[j][0][2] = yarismaci[j + 1][0][2]; yarismaci[j + 1][0][2] = degerAlTopPuan; DegerAlKocPuani = yarismaci[j][0][0]; yarismaci[j][0][0] = yarismaci[j + 1][0][0]; yarismaci[j + 1][0][0] = DegerAlKocPuani; DegerAlSeyirciPuani = yarismaci[j][0][1]; yarismaci[j][0][1] = yarismaci[j + 1][0][1]; yarismaci[j + 1][0][1] = DegerAlSeyirciPuani; } else if (yarismaci[j][0][2] == yarismaci[j + 1][0][2]) // toplam puanları eşitse { if (yarismaci[j][0][0] < yarismaci[j + 1][0][0]) // koç puanı bir sonraki yarismacidan kücükse büyük olanı öne geçir { degerAlYarNo = yarismaci[j][0][3]; yarismaci[j][0][3] = yarismaci[j + 1][0][3]; yarismaci[j + 1][0][3] = degerAlYarNo; DegerAlKocPuani = yarismaci[j][0][0]; yarismaci[j][0][0] = yarismaci[j + 1][0][0]; yarismaci[j + 1][0][0] = DegerAlKocPuani; DegerAlSeyirciPuani = yarismaci[j][0][1]; yarismaci[j][0][1] = yarismaci[j + 1][0][1]; yarismaci[j + 1][0][1] = DegerAlSeyirciPuani; } /* Gereksiz kısım çünkü algoritma zaten eşitlik olsa bile bu ayarda sıralıyor. else if ((yarismaci[j][0][0] == yarismaci[j + 1][0][0])) // koç puanları eşitse { if (yarismaci[j][0][3] > yarismaci[j + 1][0][3]) // yarışmacı numarası bir sonraki yarismacidan büyükse küçük olanı öne geçir { degerAlTopPuan = yarismaci[j][0][2]; yarismaci[j][0][2] = yarismaci[j + 1][0][2]; yarismaci[j + 1][0][2] = degerAlTopPuan; degerAlYarNo = yarismaci[j][0][3]; yarismaci[j][0][3] = yarismaci[j + 1][0][3]; yarismaci[j + 1][0][3] = degerAlYarNo; DegerAlSeyirciPuani = yarismaci[j][0][1]; yarismaci[j][0][1] = yarismaci[j + 1][0][1]; yarismaci[j + 1][0][1] = DegerAlSeyirciPuani; } } */ } } } } - 20-12-2017, 19:33:11Hocam ellerinize sağlık, akşam eve gidince tam olarak bakacağım ama büyük ihtimalle yapmış gibisiniz.pr1d3 adlı üyeden alıntı: mesajı görüntüle
Ne kadar teşekkür etsem azdır.