136 lines
3.5 KiB
C
136 lines
3.5 KiB
C
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <time.h>
|
||
#include <math.h>
|
||
|
||
|
||
|
||
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));
|
||
} |