Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Struktura STUDENT, razne operacije

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Struktura STUDENT, razne operacije

[ Pregleda: 2365 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

easyyu
Pol isidor
MSc. Elektrotehnika-Telekomunikacije
Kanjiza

Član broj: 18220
Poruke: 1729
*.sksyu.net.

ICQ: 314201297


+170 Profil

icon [Zadatak] Struktura STUDENT, razne operacije20.05.2006. u 04:33 - pre 218 meseci
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();
}
 
Odgovor na temu

klichko

Član broj: 84010
Poruke: 55
..mtsns-ns.customer.sbb.co.yu.



+6 Profil

icon Re: [Zadatak] Struktura STUDENT, razne operacije20.05.2006. u 06:49 - pre 218 meseci
Niz TStudent jstudent[50] si definisao unutar funkcije upis tj. to je lokalna promenljiva i svi podatci koje budes unosio nece biti vidljivi izvan same funkcije. TStudent jstudent[50] koji si definisao u funkciji ispis je lokalna promenljiva za tu funkciju i nema nikakve veze sa onom iz funkcije upis. U principu mozes da uradis dve stvari ili da niz definises kao globalnu promenljivu

Code:

typedef struct student{ char  prezime[15];
            char  ime[15];
            char  br_ind[5];
            int   poeni;
              }Tstudent[50];


ili da niz prosledjujes kao argument funkcije, pri cemu bi niz definisao u main-u, i iz funkcija upis i ispis izbacio liniju TStudent jstudent[50]

Code:

void main (void) {

  int br_studenata;
  TStudent jstudent[50]; //dodata linija

  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(jstudent); //dodata linija
               break;
      case '2':ispis(br_studenata, jstudent); //dodata linija
           break;
      case '3':exit(1);
    }
  }while(izbor!='3');
}


 
Odgovor na temu

easyyu
Pol isidor
MSc. Elektrotehnika-Telekomunikacije
Kanjiza

Član broj: 18220
Poruke: 1729
*.sksyu.net.

ICQ: 314201297


+170 Profil

icon Re: [Zadatak] Struktura STUDENT, razne operacije21.05.2006. u 05:05 - pre 218 meseci
Hvala ti puno na pomoci..Isprobao sam resenje pod 2) i radi,a cak sam i shvatio... :)
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Struktura STUDENT, razne operacije

[ Pregleda: 2365 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.