Yasin DEMİR

#herseypaylasmakicin

———————————————————————————————————

C de text oluşturma, kullanıcıdan öğrencilerin numarasını, notlarını alıp bunlar üzerinden search yapma , grade belirleme ,en yüksek en düşük notlu olanları ekrana çıkartma vs fonksiyonlarını yapmak.

———————————————————————————————————

.

Programimiza gecmeden once sizlere Linux üzerinde gcc kullanımı, C kodlarını derlemek ve çalıştırmak gibi kisa hatirlatmalar faydali olacaktir.

.

Linux üzerinde çalışıyorsanız ve C programlaya yeni başladıysanız, başlangıçta C kodlarını yazarken ve derlerken zorluk çekebilirsiniz.
Bunu halletmek için her şeyden önce elinizde C kodlarınızı yazacağınız bir text editorunuz bulunmalıdır. Seçeceğiniz text editörü konsol üzerinde çalışan vi, nano gibi editörler ya da görsel olarak çalışabileceğiniz gedit, kate, emacs gibi editörler olabilir. Hangisini kullanacağınıza karar vermek tamamen size kalmış. Herhangi bir text editöründe kodlarınızı yazdıktan sonra istediğiniz herhangi bir yere kaydedebilirsiniz. Kayıt işleminde dikkat etmeniz gereken nokta C kodlarınızı .c uzantılı olarak kaydetmenizdir.
Kodumuzu ornek.c adıyla /home/kullanıcı_adı klasörünüze kaydettiğimizi düşünelim ve örnek olarak bir C programını çalıştıralım. İlk yapmamız gereken bir konsol açıp kodumuzun bulunduğu dizine geçmek olmalı. Bunu yapmak için

$ cd /home/kullanıcı_adı

yazmamız yeterli olacaktır.
Eğer ki C kodumuzun olduğu klasörde olup olmadığımız hakkında bir şüphemiz varsa bunu

$ ls

komutunu kullanarak kontrol edebiliriz. “ls” komutu bulunduğumuz klasördeki dosyaların isimlerini konsola yazar.
Kodumuzun bulunduğu klasöre geçtikten sonra gcc ile kodumuzu derleyebiliriz. gcc’nin açılımı “gnu c compiler” olmakla linux dağıtımlarında kullanılan standart C derleyicisidir. gcc kullanarak kodumuzu derlemek için yine konsol üzerinde

$ gcc ornek.c

yazmamız yeterli olacaktır. Bu işlem sonunda kodumuz derlenir ve eğer varsa kod üzerindeki hatalar konsola yazılır. Eğer ki sorunsuz bir derleme yaptıysanız kodunuzun bulunduğu dizinde “a.out” adında bir dosya oluştuğunu görmelisiniz. Bu c kodunuzun derlenmiş, çalıştırılabilir(binary) halidir.
Derlenmiş C kodumuzu çalıştırmak için ise konsola

$ ./a.out

yazmamız yeterli olacaktır. Böylece C kodumuzun çıktısını konsol üzerinde görebiliriz.

a.out çıktısından farklı bir çıktı adıyla kod derlemek
Derleme işlemi yaparken birbirinden ayrı birkaç tane kod derlememiz ve hepsini ayrı ayrı kullanmamız gerekebilir. Eğer ki bütün kodlarımız a.out olarak derlenirse her çalıştırma işlemi için kodlarımızı yeniden derlememiz gerekir. Bunu engellemek için gcc’ye -o parametresini girmemiz ve kodumuzun derlenmiş halini başka bir isimde kaydetmemiz gerekmektedir. Örnek olarak ornek.c kodumuzu derleyip ornek adında kaydetmek için

$ gcc ornek.c -o ornek

yazmamız yeterli olacaktır. Burada kullanacağımız -o parametresi gcc’ye kodumuzun çıktısı için farklı bir isim seçmek istediğimizi, ornek ise çıktımızın hangi adı alacağını anlatır. Kodumuzu farklı bir isimle derledikten sonra ise dikkat etmemiz gereken şey artık a.out değil de yani dosya adımızı çalıştırmamızdır. Yani son derlememiz için konsola

$ ./ornek

kodunu girmeliyiz. Böylece ornek.c dosyamızın derlenmiş hali olan ornek dosyasını çalıştırmış oluruz.

———————————————————————————————————

#include <stdio.h>
#include<time.h>
#include<ctype.h>
#include<string.h>

struct student_info{
char name[20];
char surname[20];
int number;
char grade[5];
char grade2;
}student[100];

void list(int size)
{
int number;
char name[20],surname[20],grd[5];
FILE *f;
if((f=fopen(“c:/Examination Results.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
while(!feof(f)){

fscanf(f,”%d %s %s %c %c %c %c %c\n”,&number,name,surname,&grd[0],&grd[1],&grd[2],&grd[3],&grd[4]);
printf(“%d %s %s %c %c %c %c %c\n”,number,name,surname,grd[0],grd[1],grd[2],grd[3],grd[4]);
}

}
}

void sortnumber(struct student_info student[],int size)
{
FILE *f;
int num,numbers[100],cnt=0,i,k,flag,temp,j,deneme[100];
char name[20],surname[20],t[5];

if((f=fopen(“c:/Examination Results.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
while(!feof(f)){
fscanf(f,”%d %s %s %c %c %c %c %c\n”,&num,name,surname,&t[0],&t[1],&t[2],&t[3],&t[4]);
student[cnt].number=num;
numbers[cnt]=num;
for(i=0;i<20;i++)
{
student[cnt].name[i]=name[i];
student[cnt].surname[i]=surname[i];
}
for(i=0;i<5;i++)
student[cnt].grade[i]=t[i];

cnt++;
}
}

fclose(f);

for (i = 0; i <size – 1; ++k) {
flag = 1;
for (k = 0; k < size – 1; ++k)
if (numbers[k] > numbers[k + 1]) {
temp = numbers[k];
numbers[k] = numbers[k + 1];
numbers[k + 1] = temp;
flag = 0;
}
if (flag == 1)
break;
}

for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
if(numbers[i]==student[j].number)
deneme[i]=j;
}
}

for(i=0;i<size;i++)
printf(“%d %s %s\n”,student[deneme[i]].number,student[deneme[i]].name,student[deneme[i]].surname);

}

void grades(struct student_info student[],int size)
{
FILE *f;
int i;

f=fopen(“c:/Students Grades.txt”,”w”);

for(i=0;i<size;i++)
fprintf(f,”%d\t%s\t%s\t%c\n”,student[i].number,student[i].name,student[i].surname,student[i].grade2);
fclose(f);
printf(“File is created\n”);
}

void listpassed()
{
FILE *f;
int num,flag=0;
char name[20],surname[20],t;
if((f=fopen(“c:/Students Grades.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
printf(“Passed Students….\n”);
while(!feof(f)){
fscanf(f,”%d %s %s %c\n”,&num,name,surname,&t);
if(t==’A’ || t==’B’ || t==’C’ || t==’D’)
{
printf(“%d %s %s %c\n”,num,name,surname,t);
flag=1;
}
}
}
if(flag==0)
printf(“No Passed Students\n”);
}
void listfailed()
{
FILE *f;
int num,flag=0;
char name[20],surname[20],t;
if((f=fopen(“c:/Students Grades.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
printf(“Failed Students….\n”);
while(!feof(f)){
fscanf(f,”%d %s %s %c\n”,&num,name,surname,&t);
if(t==’E’ || t==’F’)
{
printf(“%d %s %s %c\n”,num,name,surname,t);
flag=1;
}
}
}
if(flag==0)
printf(“No Failed Students\n”);
}
void highest()
{
FILE *f;
int num,flag=0;
char name[20],surname[20],t;
if((f=fopen(“c:/Students Grades.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
printf(“Highest Grade Students….\n”);
while(!feof(f)){
fscanf(f,”%d %s %s %c\n”,&num,name,surname,&t);
if(t==’A’)
{
printf(“%d %s %s %c\n”,num,name,surname,t);
flag=1;
}
}
}
if(flag==0)
printf(“No Highest Grade\n”);

}

void lowest()
{
FILE *f;
int num,flag=0;
char name[20],surname[20],t;
if((f=fopen(“c:/Students Grades.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
printf(“Lowest Grade Students….\n”);
while(!feof(f)){
fscanf(f,”%d %s %s %c\n”,&num,name,surname,&t);
if(t==’F’)
{
printf(“%d %s %s %c\n”,num,name,surname,t);
flag=1;
}
}
}
if(flag==0)
printf(“No Lowest Grade\n”);
}

void searchans(char searchname[],char searchsurname[])
{
FILE *f;
int num,flag=0;
char name[20],surname[20],t[5];

if((f=fopen(“c:/Examination Results.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
while(!feof(f)){
fscanf(f,”%d %s %s %c %c %c %c %c\n”,&num,name,surname,&t[0],&t[1],&t[2],&t[3],&t[4]);
if(strcmp(searchname,name)==0 && strcmp(searchsurname,surname)==0)
{
printf(“%d %s %s %c %c %c %c %c\n”,num,name,surname,t[0],t[1],t[2],t[3],t[4]);
flag=1;
}
}
}
if(flag==0)
printf(“%s %s Not Found in students list\n”,searchname,searchsurname);
}

void letter(int searchnumber)
{
FILE *f;
int num,flag=0;
char name[20],surname[20],t;
if((f=fopen(“c:/Students Grades.txt”,”r”))==NULL)
printf(“Couldnt Open File”);
else
{
while(!feof(f)){
fscanf(f,”%d %s %s %c\n”,&num,name,surname,&t);
if(searchnumber==num)
{
printf(“%d %s %s %c\n”,num,name,surname,t);
flag=1;
}
}
}
if(flag==0)
printf(“%d Not Found in students list\n”,searchnumber);

}

/*—————————-MAIN FUNCTION—————————————-*/

int main()
{

struct student_info student[100];
FILE *f;
int cnt=0,count=0,i,deneme[100],j,size,ch,answer1[5],answer2[5],random1,random2,cnta=0,searchnumber;
int num,numbers[100];
char name[20],surname[20],t[5],searchname[20],searchsurname[20];

printf(“Bu Program Sayesinde Matamatik Dersi Sorulari Sorulacak\n\n”);
printf(“Enter How many Students: “);
scanf(“%d”,&size);

for(i=0;i<size;i++)
{
printf(“Enter Student Number: “);
scanf(“%d”,&student[i].number);
printf(“Enter %d. Student Name, Surname: “,i+1);
scanf(“%s%s”,student[i].name,student[i].surname);

for(j=0;j<5;j++)
{

printf(“Please Select Your %d. Question Type ‘+ =>1′,’- =>2′,’/ =>3′,’* =>4′ “,j+1);
scanf(“%d”,&ch);
if(ch>4)
{
printf(“Please…Choose Between 1 and 4 \n”);
j–;
}
else
{
if(ch==1)
{
srand(time(NULL));
random1=rand()%100;
random2=rand()%100;

answer1[j]=random1+random2;

printf(“%d+%d = “,random1,random2);
scanf(“%d”,&answer2[j]);

if(answer2[j]==answer1[j])
{
student[i].grade[j]=’T’;
cnta+=1;
}
else
student[i].grade[j]=’F’;
}

if(ch==2)
{
srand(time(NULL));
random1=rand()%100;
random2=rand()%100;

answer1[j]=random1-random2;

printf(“%d-%d = “,random1,random2);
scanf(“%d”,&answer2[j]);

if(answer2[j]==answer1[j])
{
student[i].grade[j]=’T’;
cnta+=1;
}
else
student[i].grade[j]=’F’;
}

if(ch==3)
{
srand(time(NULL));
random1=rand()%100;
random2=rand()%100;

answer1[j]=random1/random2;

printf(“%d/%d = “,random1,random2);
scanf(“%d”,&answer2[j]);

if(answer2[j]==answer1[j])
{
student[i].grade[j]=’T’;
cnta+=1;
}
else
student[i].grade[j]=’F’;
}

if (ch==4)
{
srand(time(NULL));
random1=rand()%100;
random2=rand()%100;

answer1[j]=random1*random2;

printf(“%d*%d = “,random1,random2);
scanf(“%d”,&answer2[j]);

if(answer2[j]==answer1[j])
{
student[i].grade[j]=’T’;
cnta+=1;
}
else
student[i].grade[j]=’F’;
}
}

}
if(cnta==5)
student[i].grade2=’A’;

else if (cnta==4)
student[i].grade2=’B’;

else if (cnta==3)
student[i].grade2=’C’;

else if (cnta==2)
student[i].grade2=’D’;

else if (cnta==1)
student[i].grade2=’E’;
else
student[i].grade2=’F’;
cnta=0;
}

f=fopen(“c:/Examination Results.txt”,”w”);
for(i=0;i<size;i++)
fprintf(f,”%d %s %s %c %c %c %c %c\n”,student[i].number,student[i].name,student[i].surname,student[i].grade[0],student[i].grade[1],student[i].grade[2],student[i].grade[3],student[i].grade[4]);
fclose(f);

do{
printf(“—————– MENU —————————\n”);
printf(“1.    List content of *Examination Results.txt* file.\n”);
printf(“2.    List *Examination Results.txt* file according to student numbers.\n”);
printf(“3.    Create *Student Grades.txt* file.\n”);
printf(“4.    List students who passed from the exam.\n”);
printf(“5.    List student who failed from the exam.\n”);
printf(“6.    List students who get the highest point.\n”);
printf(“7.    List students who get the lowest point. \n”);
printf(“8.    Enter the name and surname to display his answers.\n”);
printf(“9.    Enter the student number to display his letter grade with name and surname.\n”);
printf(“10.    Exit from menu.\n”);

scanf(“%d”,&ch);
switch (ch)
{
case 1:
list(size);

break;

case 2:
sortnumber(student,size);

break;

case 3:
grades(student,size);

break;

case 4:
listpassed();

break;

case 5:
listfailed();

break;

case 6:
highest();

break;

case 7:
lowest();

break;

case 8:
printf(“Enter Student Name and Surname = “);
scanf(“%s %s”,searchname,searchsurname);
searchans(searchname,searchsurname);

break;

case 9:
printf(“Enter Student Number = “);
scanf(“%d”,&searchnumber);
letter(searchnumber);

break;

case 10:
continue;
}

}while (ch!=10);
return 0;
}

Yasin DEMİR

project.c dosyasini buradan indirebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.