diff --git a/YZM502/final-soru2.c b/YZM502/final-soru2.c new file mode 100644 index 0000000..5b115da --- /dev/null +++ b/YZM502/final-soru2.c @@ -0,0 +1,136 @@ +#include +#include +#include +#include + + + +void diziYaz(int dizi[], int diziUzn, char baslik[]) { + int i; + printf("\n%s:\t", baslik); + for (i = 0; i < diziUzn; i++) { + printf("%d\t", dizi[i]); + } +} + +float ortalama(int dizi[], int diziUzn) { + int i; + float toplam = 0; + for (i = 0; i < diziUzn; i++) { + toplam += dizi[i]; + } + return (toplam / diziUzn); +} + +int *siralaAzalan(int dizi[], int diziUzn) { + static int* yeniDizi; + yeniDizi = (int*)malloc(diziUzn * sizeof(int)); + + int i, j, tmp; + + for (i = 0; i < diziUzn; i++) { + yeniDizi[i] = dizi[i]; + } + + for (i = 0; i < diziUzn; i++) { + for (j = 0; j < diziUzn - i - 1; j++) { + if (yeniDizi[j] < yeniDizi[j + 1]) { + tmp = yeniDizi[j]; + yeniDizi[j] = yeniDizi[j + 1]; + yeniDizi[j + 1] = tmp; + } + } + } + + return yeniDizi; +} + +int maxDegerIndex(int dizi[], int diziUzn) { + int maxDeger, maxDegerIndex, i; + maxDegerIndex = 0; + maxDeger = 0; + for (i = 0; i < diziUzn; i++) { + if (dizi[i] > maxDeger) { + maxDeger = dizi[i]; + maxDegerIndex = i; + } + } + return maxDegerIndex; +} + +int enYakinDeger(float hedef, int *dizi, int diziUzn) { + float fark = 100; + int i, enYakin; + for (i=0; i< diziUzn; i++) { + if (fabsf(hedef - dizi[i]) < fark) { + fark = fabsf(hedef - dizi[i]); + enYakin = dizi[i]; + } + } + return enYakin; +} + +void main() { + int c; + int isRassal = 0; + + while (1) { + printf("\nNot değerleri rassal üretilsin mi? (E/h): "); + c = getchar(); + //printf("\n%d\n", c); + if ((c == 69) || (c == 101) || (c == 32) || (c == 10)) { + isRassal = 1; + break; + } + if ((c == 72) || (c == 104)) { + isRassal = 0; + break; + } + if (c == 27) { + printf("\nProgram sonu"); + return; + } + } + + int notlar[2][10]; //ders x ogrenci --> Ders Index 0: mat, 1: fiz + int i; + + if (isRassal) { + srand(time(NULL)); + for (i = 0; i < 10; i++) { + notlar[0][i] = rand() % 100; + notlar[1][i] = rand() % 100; + } + } else { + for (i = 0; i < 10; i++) { + printf("\n%d. öğrencinin matematik notu: ", i + 1); + scanf("%d", ¬lar[0][i]); + + printf("\n%d. öğrencinin fizik notu: ", i + 1); + scanf("%d", ¬lar[1][i]); + } + } + + + float ortMat, ortFiz; + int topMat, topFiz; + + printf("\nGirilen Değerler: \n----------------------------------------------"); + diziYaz(notlar[0], 10, "Mat"); + diziYaz(notlar[1], 10, "Fiz"); + + printf("\n\nSonuçlar: \n----------------------------------------------"); + + // Fizik ve matematik dersi not ortalaması hesaplayınız. + printf("\nMat ortalaması: %2.2f", ortalama(notlar[0], 10)); + printf("\nFiz ortalaması: %2.2f", ortalama(notlar[1], 10)); + + // Fizik nptlarını azalan sıra ile yazınız + diziYaz(siralaAzalan(notlar[1], 10), 10, "Fizik Notları Azalan"); + + // Fizik dersinden en yüksek not alan öğrencinin matematik dersi notunu yazınız. + printf("\nFizikten en yüksek not alan öğrencinin Mat Notu : %d", notlar[0][maxDegerIndex(notlar[1], 10)]); + + // Matematik not ortalamasına en yakın notu olan öğrencinin Matematik notunu yazınız. + printf("\nMatematik not ortalamasına en yakın notu olan öğrencinin Matematik notu : %d", enYakinDeger(ortalama(notlar[0], 10), notlar[0], 10)); +} \ No newline at end of file