Vaktim kısa olduğu için bool'un if operatörü gibi karşılaştırma amaçlı işlemlerde kullanılabileceğine örnek verdim. Gittim programı yazmadım. Madem sizin vaktiniz var buyurun arkadaşı daha iyi biçimde aydınlatın, bana yazmanızın bir anlamı yok neticede. Yazım yanlış olmuş, yok o olmamış bir ifade etmiyor benim için, orada anlatmak istediğim if yapısının gerekmeyebileceği idi. Programı vermedim. Öğrencileri hazıra sevk etmeye karşıyım. Günde 3-4 saat uyuyorum. Benim canım çıkıyor, geliyorum bizim ülkemizde arkadaşlara yardımcı olayım diye. Adamlar benim %10'um kadar efor sarf etmiyor. Açıkçası şu saatten sonra imzamı da sildim. Benim öğrenciliğimde bir kişiden dahi böyle yardım aldığımı hatırlamıyorum. Şu geçmişteki mesajlara bakılsa adam selam demeden soruyu yazmış gitmiş olan o kadar çok mesaj var ki... Kat kat daha iyi sonuçlarla, projelerle çalıştıydım. İnternet çok geniş imkanlar sunuyor, açıp bakacaksınız. Neticede bilgisayar mühendisliği bu. Patlatacaksınız kafanızı. Gelişim böyle oluyor. Ayrıca C'ye bool sonradan eklendi. |
Mesajınız gelmemiş |
Benim yukarıda koyduğum soru hakkında yardımcı olabilirmisiniz acaba size zahmet ve zaman kaybı olmayacaksa ![]() |
Ben de onu dedim zaten. Sonradan eklendi derken onu kastettim. Ayrıca yazdığım C# pseuducode uydu. System.Boolean adı altında |
#include <iostream> using namespace std; int main() { cout << “Merhaba Bu Ilk Programimiz” << endl; return 0; } bunun neresi hatalı ![]() ![]() |
Ben size birsey demedim ki, sorunun kendisini elestirdim. Sonucta programlamayi ogretiyorsa limitlememeli diye dusunuyorum... Bende su an 2. sinifta okuyan ogrenciyim. Ayni zamanda full time developer olarak calisiyorum. Dediginiz gibi hic bir zaman buraya gelip soru yazmadim. Buraya yazip bekleyenleri de hicbir zaman anlamadim internette azicik arastirma yapsalar hepsinin cevabi var. C'de onceden bool vardi demedim ki ben zaten. Temelinde yok dedim yani C89 gibi eski standartlarda yok demek istedim. |
Arkadaşlar selamlar, Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba? Sorularımı programda comment ( // ) olarak yazdım. Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek): #include <stdio.h> int main (void) { int taban; int us; int product; int counter = 1; // burada neden counter'a 1 verdik? printf("Tabanı girin: "); scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ? printf("Ussu girin: "); scanf("%d", &us); product = taban while (counter < us) { product = product * taban counter = counter + 1 } printf("Sonuc: " "%d\n", product); system("PAUSE"); return 0; } Şimdiden zaman ayırdığınız için çok teşekkür ederim. |
İlk sorunla başlayayım. 1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır. Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu. 2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link. |
100 adet sayı giriliyor kaç adet pozitif sayı vardır klavyeden 2 kelime girliyor 2 kelimenin harf sayılarının ortalaması? klavyeden 10 vize sonucu gir en yuksek notu goster? c++ göre bunları cevaplaya bilir misiniz lütfen? |
Ben seni yanlış anladım öyleyse kusuruma bakma, bu aralar öylesine yoğun geçiyor ki bazen olmayan mesajları görünce tepem atıyor. Ülkedeki bu rezalet durumu görünce... Soruya yaptığın yorum konusunda katılıyorum ve başarını da takdir ediyorum. Yeni başlayan birini bu derece kısıtlandırmanın bir mantığı yok, ben bile ilk başta nasıl yapılacağını hatırlayamadım. Kaldı ki bahsettiğimiz gibi bool C99'da var. Son soruyu yazan arkadaş gibi işi son zamana bırakan, google'da arayıp direkt bulunabilecek, artık yüzlerce farklı çözümünü ezberlediğim soruların bile çözülmeye tenezzül edilmeden bilen birinden beklenmesine çok kızıyorum. Bu arkadaşlara söyleyeyim, boşuna okuyorsunuz. Gidin başka meslek seçin. Bu kadar açık konuşuyorum. Yani şu en baştaki basit konular için bile kendinizi oturduğunuz yerden kaldıramayıp bunun çözümünü bulamıyorsanız, hiç bir şey yapamazsınız bilgisayar mühendisliğinde. Zamanınızı boşa harcamaktan başka bir şey yapmıyorsunuz. |
Hocam gerçekten çok çok teşekkür ederim, 1. sorunun mantığını bir türlü anlayamamıştım, sayende anlayabildim. diğerine gelince %d nin anlamını bilmiyordum, yani tam sayı okuyacağın veya yazdıracağın zaman kullanılacağını. bilgilendirdiğin için çok çok teşekkür ediyorum |
Önemli değil. |
1. sorunun cevabı kısmen yanlış verilmiş. "Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın" Bir değişkene değer vermeden yani ilklendirmeden tanımlarsan hata almazsın ve kullanabilirsin. Tabi derleyiciye göre farklılık gösterebilir. "değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur." Değişkenin içinde çöp değer olur. Yani o an çalışan programların oluşturduğu değerlerden rastgele birini atar o bölüme. int counter; şeklinde tanımlasaydın counter'ın içinde 3124123 de olabilirdi 1 de olabilirdi. Yani ne geleceğini bilemezsin o yüzden ilklendirilir. Genelde değişkenler tanımlanırkan 0 atanarak ilklendirilir. int taban = 0; // şeklinde |
Evet şimdi denedim null olarak değil de dediğiniz gibi tamamen rastgele bir değer çıkıyor. |
selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız. 11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür. nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler |
Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum. Kod açık ama flag kısmını açıklayım. Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor. Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın. int[] dizi = new int[6] {1,5,2,3,4,7 }; bool flag = false; // False ise + gelecek, True ise - for(int i = dizi.Length - 1; i >= 0; i--) { if(flag) { dizi *= -1; flag = false; } else flag = true; } int toplam = 0; foreach(int sayi in dizi) toplam += sayi; |
teşekkürler, bir ikiz düzeltme ile işimi çözdüm... bir soru daha var aslında.. soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim. kelebegin sol kanadını yaptım ama sağ kanadını yapamadım. < Resime gitmek için tıklayın > |
Sol kanadin nerede goster icine ekleniverir sag kanat :) |
alttaki kod ile sol kanadı oldu ama sağ olmadı
|
----------------------
Projede bir öğrenci işleri bilgi sistemi simülasyonunun yapılar (“struct”), bağlaçlı listeler (“linked list”) ve dosyalar (“file”) kullanılarak yapılması istenmektedir. Buna göre;
a) (20 Puan) course olarak adlandırılan bir yapı oluşturun. Bu yapının üyeleri, code, name, instructor, term (Spring veya Fall değerleri alabilir), year ve bir course işaretçisi olsun. Öğrencilerin aldıkları dersler bağlaçlı liste ile tutulmak istendiğinden course veri yapısı elemanları üzerinde işlem yapacak void insertCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code), char* deleteCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code) prototipine sahip fonksiyonları yazınız. insertCourse() fonksiyonunu yazarken aynı öğrencinin aynı dersi birden fazla kez almasını engelleyiniz.
b) (30 Puan) student olarak adlandırılan bir yapı oluşturun. Bu yapının üyeleri, id, name, surname, department, class (B.Sc., M.Sc., Ph.D. değerlerini alabilir), faculty, gpa, year, bir course işaretçisi ve bir student işaretçisi olsun. Öğrenciler bilgi sisteminde bağlaçlı liste ile tutulmak istendiğinden student veri yapısı elemanları üzerinde işlem yapacak void insertStudent(FILE* filePtr, StudentNodePtr* cr, int id), int deleteStudent(FILE* filePtr, StudentNodePtr* cr, int id) prototipine sahip fonksiyonları yazınız. insertStudent() fonksiyonunu yazarken aynı öğrencinin sisteme birden fazla kez girilmesini engelleyiniz. Hem insertStudent() fonksiyonunda hem de deleteStudent() fonksiyonlarında bağlaçlı listedeki elemanları filePtr ile işaret edilen main() fonksiyonu içinde açtığınız dosyanın içine yazınız. Böylece bağlaçlı listenizin en son hali bir dosya içinde de olacağından programınız farklı çalıştırmalarda da en son veritabanını kullanmış olacaktır.
c) (10 Puan) Girilen öğrenci id’sine göre sistemde arama yapan ve eğer öğrenci sistemde mevcutsa onunla ilgili bilgileri ekranda gösteren bir void displayStudent(FILE* filePtr, int id) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde id’ye göre arama yapmalıdır ve eğer öğrenci mevcutsa onunla ilgili bilgileri ekranda göstermelidir.
Örnek çıktı:
Öğrencinin id’sini giriniz?
2008199999
id Name Surname Department Class Faculty Gpa Year Recv. Courses
----------------------------------------------------------------------------------
2008199999 John White ICI M.Sc. Ege 82 2009 UBI501,UBI503,UBI505
d) (5 Puan) Her bir öğrenci class’ına ait sistemde mevcut kayıtlı kaç adet öğrencinin bulunduğunu hesaplayan ve bunu ekranda uygun şekilde gösteren bir void displayClassNumbers(FILE* filePtr, int id) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde class değerlerine göre hesaplama yapmalıdır.
Örnek çıktı:
Class Number of Students
---------------------------------
B.Sc. 120
M.Sc. 55
Ph.D. 18
e) (5 Puan) Girilen ders code’una, term değerine ve year değerine göre o dersi istenen dönem ve yıl içinde almış olan öğrencileri sistemde bulup ekranda gösteren bir void displayRecvCourse (FILE* filePtr, char* code, char* term, int year) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde değerlere göre arama yapmalıdır ve eğer öğrenci mevcutsa onunla ilgili bilgileri ekranda göstermelidir.
Örnek çıktı:
Dersin kodunu giriniz?
UBI503
Dönemi giriniz?
Fall
Yılı giriniz?
2008
id Name Surname
--------------------------
2008199999 John White
2008299999 Jeny McCain
2008599522 Gregory Whitehead
f) (20 Puan) a ve b şıkkında tanımlamış olduğunuz insertStudent(FILE* filePtr, StudentNodePtr* cr, int id) ve insertCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code) fonksiyonunu kullanarak detaylı bir şekilde kullanıcıdan girdi alıp öğrenci kaydı yapan void registration(FILE* filePtr) fonksiyonu yazınız. Bu fonksiyon kullanıcıdan öğrenci ile ilgili bütün bilgileri aldıktan sonra onun kaydını gerçekleştirmelidir.
g) (10 Puan) Bundan önceki yazdığınız bütün şıklardaki fonksiyonları kullanarak bir menu oluşturunuz. Menünüzün öğrenci kaydı girişi, öğrenci kaydı silme, arama gibi temel özellikleri içermesi gerekmektedir.
Kodu aşağıya koyuyorum;
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
struct course {
char coursecode;
char name[10];
char instructor[30];
char term;
int year;
struct course *coursePtr;
};
typedef struct course *course_ptr;
struct student {
int idnum;
char name[15];
char surname[15];
char department[5];
int classs;
char faculty[10];
int gpa;
int year;
struct course *coursePtr;
struct student *studentPtr;
};
typedef struct student *student_ptr;
//prototypes
int instructions(void);
void insertCourse(FILE *filePtr,course_ptr *cr, char code);
char deleteCourse (course_ptr cr, char code);
void insertStudent(FILE *filePtr, student_ptr *cr, int idnum);
int deleteStudent (FILE *filePtr, student_ptr *cr, int idnum);
void displayStudent(FILE *filePtr, int idnum);
//void displayClassNumbers (FILE *filePtr, int id);
//void displayRecvCourse();// (FILE *filePtr, char *code, char *term, int year);
void registration (FILE *filePtr,student_ptr* cr);
FILE *filePtr;
int main (void)
{
FILE *filePtr; //student.dat file pointer
int choice; //user's choice
if ((filePtr=fopen("student.dat","w+"))==NULL)
{
printf("Error!There are no entry!\n");
exit (1);
}//end if
int id=0;
student_ptr *s=NULL;
printf("\t\t\t------------------------------------------------------\n");
printf("\t\t\t| ICI-STUDENT INFORMATION SYSTEM | \n");
printf("\t\t\t------------------------------------------------------\n\n");
while ((choice=instructions())!=6 )
{
switch (choice){
case 1: registration(filePtr,s);
break;
case 2: deleteStudent(filePtr, s,id);
break;
case 3: displayStudent(filePtr,id);
break;
//case 4: displayclassNumbers ();//filePtr);
break;
//case 5: displayRecvCourse();// (filePtr, char code, char term, int year);
break;
default: printf("Incorrect choice!\n");
instructions();
break;
}//end switch
printf("?");
scanf("%d",&choice);
}//end while
getch();
return 0;
}//end main
int instructions(void)
{
int choice;
printf("Please enter your choice:\n 1.New Registration\n2.Delete Student\n3.Search for student\n4.Search for class Numbers\n5.Search for Receiving course\n6.Exit\n");
scanf("%d",&choice);
return choice;
}//end fuction instructions
void registration (FILE *filePtr,student_ptr *cr)
{
char ans;
int idnum=0;
course_ptr *cs1;
printf("Enter id number: (1 to 100,0 to end input)");
scanf("%d", &idnum);
insertStudent(filePtr,cr, idnum);//FILE*filePtr, char currentPtr, int id);
// insertCourse(filePtr,cs1 , idnum);//(FILE*filePtr, char currentPtr,int id);
}//end function registration
void insertStudent (FILE *filePtr, student_ptr *cr, int idnum)
{
//FILE *filePtr;
struct student stu;
student_ptr newPtr=NULL; //pointeer to new node
student_ptr previousPtr=NULL; //pointer to previous node in list
student_ptr currentPtr=NULL; //pointer to current node in list
int b=0; //B.Sc counter
int m=0; //M.Sc counter
int p=0; //Ph.D counter
newPtr = (student_ptr)malloc(sizeof(struct student)); //create node
while (idnum!=0) {
stu.idnum=idnum;
if (newPtr !=NULL) { //is space available
newPtr->idnum=idnum; //placed in node
newPtr->studentPtr=NULL; //node does not link to another node
previousPtr=NULL;
//currentPtr=cr;
//loop to find the correct location in the list
while (currentPtr !=NULL && idnum>currentPtr->idnum){
previousPtr=currentPtr;
currentPtr=currentPtr->studentPtr;
}//end while
//insert new node at beginning of list
if (previousPtr == NULL){
newPtr->studentPtr=currentPtr;
currentPtr=newPtr;
}//end if
else {
previousPtr->studentPtr=newPtr;
newPtr->studentPtr=currentPtr;
}//end else
}//end if
stu.coursePtr=NULL;
printf("Enter name and surname:");
scanf("%s%s",&stu.name,&stu.surname);
printf("\nEnter department, faculty and class(B.Sc=1, M.Sc=2, Ph.D=3)");
scanf("%s%s%d",&stu.department,&stu.faculty,&stu.classs);
if ((stu.classs !=1) && (stu.classs !=2)&& (stu.classs !=3)){
printf("Invalid class! please enter 1,2 or 3:");
scanf("%d",&stu.classs);
} //end if
if (stu.classs == 1) {
b++; //B.Sc students
}
if (stu.classs == 2) {
m++; //M.Sc students
}
if (stu.classs == 3) {
p++; //Ph.D students
}
printf("\nEnter gpa and year:");
scanf("%d%d",&stu.gpa,&stu.year);
printf("Student has been inserted.");
printf("Enter id number: (1 to 100,0 to end input)");
scanf("%d", &idnum);
}//end while
printf("B.Sc students:%d", b);
printf("M.Sc students:%d", m);
printf("Ph.D students:%d\n", p);
//seek position in file to user specified record
fseek(filePtr,(stu.idnum-1)*sizeof (struct student), SEEK_SET);
//wriet user-specified information file
// fwrite(&student,sizeof(struct student),1,filePtr);
// if ((filePtr=fopen("student.dat","w+")==NULL){
//printf("Error!File could not be openedé\n");
// }//end if
while (currentPtr!=NULL){
fwrite(&stu, sizeof(struct student),1,filePtr);
// fwrite( &student, sizeof(struct student)-2*(currentPtr),1,filePtr);
currentPtr = currentPtr->studentPtr;
}//end while
fclose(filePtr);
}//end function insertStudent
void insertCourse(FILE *filePtr,course_ptr *cr, char code)//(CourseNodePtr current, CourseNodePtr *inscr, char *code)
{
struct course cour;
struct student stu;
course_ptr newPtr=NULL;
course_ptr previousPtr=NULL;
course_ptr currentPtr=NULL;
int response;
char ans,ccode;
newPtr=(course_ptr)malloc(sizeof(struct course));//create node
printf("Enter course?(1:YES 2:NO)");
scanf("%d",&response);
while (response==1){
printf("Enter course code: (UBI501,UBI503,UBI505,UBI508)");
scanf("%s", &ccode);
printf("\Enter course name:");
scanf("%c",&cour.name);
printf("\Enter instructor:");
scanf("%c",&cour.instructor);
printf("\nEnter term:(S:Spring F:Fall)");
scanf("%c",&ans);
ans=toupper(ans);
if ((ans !='S') &&(ans!='F')) {
printf("Invalid term.Please enter S or F");
scanf("%c",&ans);
ans=toupper(ans);
}//end if
cour.term=ans;
printf("\nEnter course year:");
scanf("%d",&cour.year);
if(newPtr!=NULL) { //is space available
newPtr->coursecode=ccode;//place value in node
newPtr->coursePtr=NULL;
//loop to find the correct location in the list
while (currentPtr!= NULL && ccode>currentPtr->coursecode) {
previousPtr = currentPtr;
currentPtr = currentPtr->coursePtr;
}//end while
//insert new node at begining of list
if (previousPtr==NULL){
newPtr->coursePtr = currentPtr;
currentPtr = newPtr;
}//end if
else { //insert new node between previousPtr and currentPtr
previousPtr->coursePtr = newPtr;
newPtr->coursePtr = currentPtr;
}//end else
if (ccode == currentPtr->coursecode) { //not registered with same code
printf("Course has been inserted.Enter another course?(1:YES, 0:NO)");
scanf("%d",&response);
}//end if
}//end if
}//end while
// else {
// printf("Not inserted!No memory available\n");
// }//end else
//seek position in file to user-specified record
fseek(filePtr,(stu.idnum-1)*sizeof(struct course),SEEK_SET);
//write user-specified information
fwrite(&cour, sizeof(struct course),1,filePtr);
while (currentPtr!=NULL){
fwrite(&cour,sizeof(struct course),1,filePtr);
// fwrite(&course,sizeof (struct course)-2*sizeof(currentPtr),1,filePtr);
currentPtr=currentPtr->coursePtr;
}//end while
fclose(filePtr);
}//end function insertCourse
int deleteStudent (FILE *filePtr, student_ptr *cr, int idnum)
{
//FILE *filePtr;
struct student student;
student_ptr previousPtr;
student_ptr currentPtr;
student_ptr tempPtr;
int id;
printf("Enter the id number to be deleted:");
scanf("%d",&student.idnum);
//delete first node
if (id==(currentPtr)->idnum){
tempPtr=currentPtr;
currentPtr=(currentPtr)->studentPtr;
free(tempPtr);
return id;
} //end if
else {
previousPtr=currentPtr;
currentPtr=(currentPtr)->studentPtr;
}//end else
//loop to find the correct location in the list
while (currentPtr !=NULL && currentPtr->idnum !=id){
previousPtr=currentPtr;
currentPtr=currentPtr->studentPtr;
if (currentPtr !=NULL){
tempPtr=currentPtr;
previousPtr->studentPtr=currentPtr->studentPtr;
free(tempPtr);
return id;
}//end if
}//end while
//seek position in file to user specified record
fseek(filePtr,(student.idnum-1)*sizeof (student_ptr), SEEK_SET);
//wriet user-specified information file
fwrite (&student,sizeof(student_ptr),1,filePtr);
// if ((filePtr=fopen("student.dat","wb+")== NULL){
// printf("Error!File could not be opened\n");
// }//end if
while (currentPtr!=NULL){
//fwrite(&student, sizeof(struct student),1,filePtr);
fwrite(&student, sizeof(student_ptr),1,filePtr);
currentPtr=currentPtr-> studentPtr;
}//end while
return id;
}//end function deleteStudent
char deleteCourse(course_ptr cr, char code)
{
struct course course;
course_ptr previousPtr;
course_ptr currentPtr;
course_ptr tempPtr;
char ccode;
printf("Enter course code to be deleted:");
scanf("%d",&course.coursecode);
//delete first node
if(ccode==(currentPtr)->coursecode){
tempPtr=currentPtr;
currentPtr=(currentPtr)->coursePtr;
free(tempPtr);
return ccode;
}//edn if
else {
previousPtr=currentPtr;
currentPtr=(currentPtr)->coursePtr;
//loop to find the correct loaction in the list
while (currentPtr !=NULL && currentPtr->coursecode != ccode){
previousPtr=currentPtr;
currentPtr=currentPtr->coursePtr;
}//end while
//delete node at currentPtr
if(currentPtr !=NULL){
tempPtr=currentPtr;
previousPtr->coursePtr=currentPtr->coursePtr;
free(tempPtr);
return ccode;
}//end if
}//end else
return ccode;
}//end function deleteCourse
void displayStudent(FILE*filePtr, int idnum)
{
struct student stu;
struct course cour;
if ((filePtr=fopen("student.dat","rb"))==NULL){
printf("File could not be opened!\n");
}//end if
else {
printf("Enter id for display:");
scanf("%d",&idnum);
printf("%-10s%-15s%-15s%-5s%-5s%-10s%-5s%-7s%-20s\n","id","name","surname","department","class","faculty","Gpa","year","Recv.Courses");
printf("-----------------------------------------------------------------------------------------------------------------------\n\n");
while( (!feof(filePtr))) {
fread( &stu, sizeof(struct student),1,filePtr);
if(stu.idnum == idnum){
printf("%-10d%-15s%-15s%-5s%-5d%-10s%-5d%-7d%-20c\n",
stu.idnum, stu.name, stu.surname, stu.department,
stu.classs,stu.faculty, stu.gpa, stu.year);
if(stu.coursePtr!=NULL)
{
printf("-20c",stu.coursePtr->coursecode);
}
printf("\n");
} //end if
}
} //end else
fclose(filePtr);
}//end function displayStudent
//void displayRecvCourse (FILE* filePtr, char* code, char* term, int year)
//{
// FILE *filePtr;
// printf("Enter course code:");
// scanf("%c",&course.coursecode);
// printf("\Enter term:");
// scanf("%c",&course.term);
// printf("\nEnter year:");
// scanf("%d",&course.year);
//if ((filePtr=fopen("student.dat","rb"))==NULL){
// printf("File colud not be opened\n");
// }//end if
//else {
// while (!feof(filePtr)){
// fread(&course, sizeof(struct course),1,filePtr);
//}//end function displayRecvCourse
< Bu mesaj bu kişi tarafından değiştirildi Rockford Fosgate -- 14 Ocak 2013; 15:46:36 >