[ easyyu @ 20.05.2006. 04:33 ] @
Ovako..potrebno je izvrsiti unos studenata po imenu i prezimenu br indeksa i br poena ostvarenih na ispitu.Prilikom zavrsetka unosa treba da se izlistaju oni studenti koji imaju najveci broj poena pa nadalje (po opadajucem redesledu)..ja ovaj zafdatak imam resen u zbirci ali bez f-ja.Ja sam krenu da radim sa f-jama (dve f-je,jedna za unos a druga za ispis) i kod radi,ne zapucava se ali ispisuje totalno nebulozne karaktere prilikom ispisa..Zamolio bih vas da me ispravite gde gresim,odnosno,da li je uopste mogue na ovaj nacin resiti zadatak.Ako ne zasto nije moguce? Dopisite mi to komentarima Hvala unapred.. A evo i koda: Code: #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<ctype.h> #include<string.h> /******************************************************************************************************************/ //PROTOTIP F-JE int upis(void); void ispis(int br_studenata); /******************************************************************************************************************/ typedef struct student{ char prezime[15]; char ime[15]; char br_ind[5]; int poeni; }Tstudent; void main (void) { int br_studenata; char izbor; do{ printf("\t\t\tStatistika studenata\n\n\n"); printf("Izaberi opciju:\n1) Upis novih studenata\n2) Listanje\n3) Kraj\nTvoj izbor je:"); do{ izbor=getche(); }while((izbor!='1')&&(izbor!='2')&&(izbor!='3')); switch(izbor) { case '1':br_studenata=upis(); break; case '2':ispis(br_studenata); break; case '3':exit(1); } }while(izbor!='3'); } /******************************************************************************************************************/ //F-ja ITN UPIS(VOID) (VRACA BROJ STUDENATA KOJI JE UNET) int upis(void) { Tstudent jstudent[50];//jstudent mi predstavlja jednog studenta! char pom1[15],pom2[5]; char c='1'; int k,p,i=0;//i je ustvari brojac studenata while(c=='1') { clrscr(); printf("Trenutno je uneto %d studenata\n",i); printf("Unesi prezime studenta:"); scanf("%s",&jstudent[i].prezime); printf("Unesi ime studenta:"); scanf("%s",&jstudent[i].ime); printf("Uneo si ime:%s\n",jstudent[i].ime); //UKOLIKO POSTOJI BR_IND PONOVI UNOS UKOLIKO NE UBACI TEKUCI I IDI DALJE NA SL UNOS k=0; do { printf("Unesi broj indeksa:"); scanf("%s",&jstudent[i].br_ind); for(p=0;p<i;p++) { if( strcmp(jstudent[p].br_ind,jstudent[i].br_ind)==0 ) { printf("Ovaj broj indeksa vec postoji!!!\n"); k=1; break; }else k=0; } }while(k==1); printf("Unesi broj osvojenih bodova:"); do { scanf("%d",&jstudent[i].poeni); if((jstudent[i].poeni<0)||(jstudent[i].poeni>100)) printf("Vrednost moze biti izmedju 0-100!!!"); }while(jstudent[i].poeni<0||jstudent[i].poeni>100); printf("\nDa li zelis da nastavis sa unosom novih studenta?\n"); printf("1-DA\n2-NE\nTvoj izbor je:"); c=getche(); i++; if(c=='2') { clrscr(); break; } } return i;//vrati mi broj koliko sam studenata uneo } /******************************************************************************************************************/ //F-ja VOID ISPIS void ispis(int broj_st){ int i,j,n,pom; char prezime1[15],ime1[15],br_ind1[5]; Tstudent jstudent[50]; clrscr(); for(i=0;i<broj_st;i++) { for(j=i+1;j<broj_st;j++) { if(jstudent[i].poeni<jstudent[j].poeni) { //SORTIRAJU SE POENI pom=jstudent[i].poeni; jstudent[i].poeni=jstudent[j].poeni; jstudent[j].poeni=pom; //ISTO TAKO MORAM DA PREMESTAM I PREZIME I IME I BR IND strcpy(prezime1,jstudent[i].prezime); strcpy(jstudent[i].prezime,jstudent[j].prezime); strcpy(jstudent[j].prezime,prezime1); strcpy(ime1,jstudent[i].ime); strcpy(jstudent[i].ime,jstudent[j].ime); strcpy(jstudent[j].ime,ime1); strcpy(br_ind1,jstudent[i].br_ind); strcpy(jstudent[i].br_ind,jstudent[j].br_ind); strcpy(jstudent[j].br_ind,br_ind1); } } } printf("Poeni su sortirani a broj unetih studenata je %d:\n",broj_st); for(i=0;i<broj_st;i++) { printf("%d\t%s\t%s",jstudent[i].poeni,jstudent[i].prezime,jstudent[i].ime); } getche(); clrscr(); } |