#include <stdio.h>
#include <stdlib.h>
#include <string.h> /*string fonksiyonlarını kullanacağım için kütüphaneyi aktif ediyorum*/
int main()
{
char sifre[5];
/* 4 haneli sifremi tutacak bir string olusturdum ayrıca '\0' null karakteri için de 1 hane ayırıyorum*/
start:
printf("Lutfen Sifreyi Giriniz: ");
gets(sifre);
/* scanf ile de alabilirdim fakat gets ile almayı tercih ettim, scanf kullanmak daha guvenlidir; gets kullandığınız zaman 4 haneli olan sifreyi 5 haneli olarak girdiğimizde gets() fonksiyonu string buyuklugunu dikkate almadıgı için programın kırılabilme riski var, gösterme amaçlı gets() kullandım*/
if(strcmp(sifre,"1234") == 0)
{
puts("Tebrikler, Sifre Dogru.. Yonlendiriliyorsunuz..\n\n");
/*puts() fonksiyonu printf ile aynı gorevi gorur */
void diziSirala(int dizi[], int N);
void Bul(int dizi[], int N);
float Ortalama(int dizi[], int N);
/* program içinde yazdığım fonksiyonlar main fonksiyonunun altında kaldığı için main fonksiyonu yazdığım fonksiyonları tanımayacaktır fonksiyonları kullanabilmek için kendimiz tanıtıyoruz, fonksiyonları main fonksiyonunun üstüne aldıgınız zaman burada tanımlamanıza gerek kalmayacaktır.*/
int N, temp, dizi[100];
printf("Dizinin Eleman Sayisini Giriniz: ");
scanf("%d",&N);
printf("\n\n");
for(int i=0; i<N; i++)
{
printf("Dizinin %d. elemanini giriniz: ",i+1);
scanf("%d", &dizi[i]);
printf("\n");
}
Bul(dizi,N);
printf("\n");
printf("Dizinin aritmetik ortalamasi: %.2f\n\n",Ortalama(dizi,N));
diziSirala(dizi, N);
}
else
{
printf("Sifre Yanlis.. Tekrar Deneyin.\n");
goto start;
}
system("pause");
}
void diziSirala(int dizi[], int N)
{
void diziYazdir(int dizi[], int N);
int *adres, temp;
adres = dizi;
for(int i=0; i<N-1; i++)
{
for(int j=i+1; j<N;j++)
{
if(*(adres + j) < *(adres + i))
{
temp = *(adres + i);
*(adres + i) = *(adres + j);
*(adres + j) = temp;
}
}
}
/* üst kısımda *(adres + j) ile dizi içeriğine pointer ile erişiyorum */
diziYazdir(dizi,N);
}
void diziYazdir(int dizi[], int N)
{
printf("Sirali Dizi: \n\n");
for(int i=0; i<N;i++)
{
printf("%d. dizi elemani: %d\n",i+1,dizi[i]);
}
}
void Bul(int dizi[], int N)
{
int eb = dizi[0];
int *p = dizi; /* pointer dizinin ilk elemanının adresini tutacak */
for(int i = 1; i < N; i++)
{
if(eb < dizi[i])
{
eb = dizi[i];
p = &dizi[i]; /* p dizinin i.elemanının adresini tutacak */
}
}
printf("En buyuk eleman: %d\n", eb);
printf("En buyuk elemanin adresi: %p\n",p);
}
float Ortalama(int dizi[], int N)
{
int *k;
float top=0, ort;
int i;
k = dizi; /* veya k = &dizi[0] işlemi de aynı görevi görecektir. */
for(i=0; i<N; i++)
{
top += *(k+i);
}
ort = (top/N);
return ort;
}