YZM502 final soru-2

This commit is contained in:
2023-04-02 23:22:23 +03:00
parent f9ed42b675
commit b116836a6f

136
YZM502/final-soru2.c Normal file
View File

@@ -0,0 +1,136 @@
#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", &notlar[0][i]);
printf("\n%d. öğrencinin fizik notu: ", i + 1);
scanf("%d", &notlar[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));
}