[ zbokanov @ 25.04.2005. 09:07 ] @
Treba mi pomoć da dovršim ovaj program (ucim za ispit) (Nedostaje sortiranje i ako unesem ocjenu od onog člana kojeg brišem pa nadalje sve mi se briše): /*Program koji definira strukturu STUDENT sa članovima ime, prezime, broj indeksa, godina studija,datum izlaska na ispit, kolegij i ocjena. Podaci se smještaju u dinamički povezanu listu sortiranu po prezimenu studenta (i imenu ako je prezime isto). Program daje korisniku izbornik u kojem može odabrati: PRIJAVA ISPITA (unosi se broj indeksa i kolegij, ako takav element već postoji u listi korisnik se na to upozorava, a ako ne postoji unose se i ostali podaci i element smješta u listu)(unose se podaci osim ocjene), ODJAVA ISPITA (unosi se broj indeksa i kolegij, element pronalazi u listi i uklanja iz nje), OCJENA ISPITA (unosi se broj indeksa, kolegij i ocjena, pronalazi element u listi, upisuje mu se ocjena, element se uklanja iz liste i svi podaci nadodaju u datoteku ispiti.txt), ISPIS SVIH PRIJAVA NA EKRAN (samo ime i prezime i kolegij) te IZLAZ IZ PROGRAMA. Nakon svake akcije korisniku se ponovo daje izbornik, sve dok ne odabere izlaz iz programa*/ #include <stdio.h> #include <stdlib.h> #include <string.h> struct Student { char ime[15]; char prezime[35]; int index; int godina; char datum[50]; char kolegij[50]; int ocjena; struct Student *next; }*student, *glava=NULL; void Prijava(); void Odjava(); void Ocjena(); void Ispis(); void main() { int opcija; do { printf("\nUnesi:\n1 za prijavu ispita\n2 za odjavu ispita\n3 za ocjenu ispita\n4 za ispis svih prijava na ekran\n5 za izlaz iz programa\n\n"); scanf ("%d", &opcija); switch (opcija) { case 1: Prijava(); break; case 2: Odjava(); break; case 3: Ocjena(); break; case 4: Ispis(); break; case 5: break; default: printf("\nPogresan unos\n"); break; } }while (opcija!=5); } void Prijava() { int index; char kolegij[50]; printf("\nBroj indexa --> "); scanf("%d", &index); printf("Kolegij --> "); scanf("%s", &kolegij); student=glava; while (student!=NULL) { if(student->index==index && strcmp(student->kolegij,kolegij)==0) { printf("\nVec postoji!\n"); return; } student = student->next; } student=(Student*)malloc(sizeof(Student)); student->index=index; strcpy(student->kolegij,kolegij); printf("Ime --> "); scanf("%s", &student->ime); printf("Prezime --> "); scanf("%s", &student->prezime); printf("Godina studija -->"); scanf("%d", &student->godina); printf("Datum izlaska -->"); scanf("%s", &student->datum); student->next=glava; glava=student; } void Odjava() { int index; char kolegij[50]; printf("\nIndex --> "); scanf("%d", &index); printf("Kolegij --> "); scanf("%s", &kolegij); student=glava; while (student!=NULL) { if(student->index==index && strcmp(student->kolegij,kolegij)==0) { glava=student->next; free(student); printf("\nOdjavljen\n"); return; } student=student->next; } printf("\nNije pronadjen\n"); } void Ocjena() { int index, ocjena; char kolegij[50]; printf("\nIndex --> "); scanf("%d", &index); printf("Kolegij --> "); scanf("%s", &kolegij); printf("Ocjena --> "); scanf("%d", &ocjena); student=glava; while (student!=NULL) { if(student->index==index && strcmp(student->kolegij,kolegij)==0) { student->ocjena=ocjena; FILE *dat = fopen("ispiti.txt", "a+"); fprintf(dat, "Ime --> %s \n", student->ime); fprintf(dat, "Prezime --> %s \n", student->prezime); fprintf(dat, "Index --> %d \n", student->index); fprintf(dat, "Kolegij --> %s \n", student->kolegij); fprintf(dat, "Godina --> %d \n", student->godina); fprintf(dat, "Datum polaganja --> %s \n", student->datum); fprintf(dat, "Ocjena --> %d \n", student->ocjena); fprintf(dat, "===================================\n"); fclose(dat); printf("\nUpisano u datoteku ispiti.txt"); glava=student->next; free(student); printf("\nIzbrisan iz liste!"); return; } student=student->next; } printf("\nNije pronadjen!"); } void Ispis() { student=glava; while(student!=NULL) { printf("Ime --> %s\n", student->ime); printf("Prezime --> %s\n", student->prezime); printf("Kolegij --> %s\n", student->kolegij); printf("==============================\n"); student=student->next; } } /*nema sortiranja i prekidanje liste prilikom brisanja ocjenjenog*/ |