13
1 STRUKTURE 1.Napisati program kojim se učitavaju podaci za 2 osobe i ispiduju podaci o starijoj osobi. #include <stdio.h> #include <stdlib.h> #include<string.h> struct Licnost { char Ime[30]; char Prezime[30]; char Adresa[40]; unsigned Starost; }; int main() { struct Licnost osoba1,osoba2,stariji; printf("Unesite ime prve osobe: "); gets(osoba1.Ime); printf("Unesite prezime prve osobe: "); gets(osoba1.Prezime); printf("Unesite adresu prve osobe: "); gets(osoba1.Adresa); printf("Unesite starost prve osobe: "); scanf("%u",&osoba1.Starost); while (getchar()!='\n'); printf("Unesite ime druge osobe: "); gets(osoba2.Ime); printf("Unesite prezime druge osobe: "); gets(osoba2.Prezime); printf("Unesite adresu druge osobe: "); gets(osoba2.Adresa); printf("Unesite starost druge osobe: "); scanf("%u",&osoba2.Starost); if (osoba1.Starost > osoba2.Starost) stariji=osoba1; else stariji=osoba2; printf("Stariji je:\n"); printf("%s %s, %s %u godina",stariji.Ime,stariji.Prezime,stariji.Adresa,stariji.Starost); return 0; } STRUKTURNE PROMENLJIVE I POKAZIVAČI Pošto strukturne promenljive imaju adrese to je moguće definisati pokazivačke promenljive koje će pokazivati na njih. tj. dodeliti im adresu strukturne promenljive na koju pokazuju. Ako je definisana pokazivačka promenljiva osoba struct Licnost*osoba elemntima strukture na koju ova promenljiva pokazuje može se pristupiti na 2 načina (*osoba).Ime osoba->Ime (*osoba).Prezime osoba-> Prezime (*osoba).Adresa osoba-> Adresa (*osoba). Starost osoba-> Starost

STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

Embed Size (px)

Citation preview

Page 1: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

1

STRUKTURE 1.Napisati program kojim se učitavaju podaci za 2 osobe i ispiduju podaci o starijoj osobi. #include <stdio.h> #include <stdlib.h> #include<string.h> struct Licnost { char Ime[30]; char Prezime[30]; char Adresa[40]; unsigned Starost; }; int main() { struct Licnost osoba1,osoba2,stariji; printf("Unesite ime prve osobe: "); gets(osoba1.Ime); printf("Unesite prezime prve osobe: "); gets(osoba1.Prezime); printf("Unesite adresu prve osobe: "); gets(osoba1.Adresa); printf("Unesite starost prve osobe: "); scanf("%u",&osoba1.Starost); while (getchar()!='\n'); printf("Unesite ime druge osobe: "); gets(osoba2.Ime); printf("Unesite prezime druge osobe: "); gets(osoba2.Prezime); printf("Unesite adresu druge osobe: "); gets(osoba2.Adresa); printf("Unesite starost druge osobe: "); scanf("%u",&osoba2.Starost); if (osoba1.Starost > osoba2.Starost) stariji=osoba1; else stariji=osoba2; printf("Stariji je:\n"); printf("%s %s, %s %u godina",stariji.Ime,stariji.Prezime,stariji.Adresa,stariji.Starost); return 0; } STRUKTURNE PROMENLJIVE I POKAZIVAČI Pošto strukturne promenljive imaju adrese to je moguće definisati pokazivačke promenljive koje će pokazivati na njih. tj. dodeliti im adresu strukturne promenljive na koju pokazuju. Ako je definisana pokazivačka promenljiva osoba struct Licnost*osoba elemntima strukture na koju ova promenljiva pokazuje može se pristupiti na 2 načina (*osoba).Ime osoba->Ime (*osoba).Prezime osoba-> Prezime (*osoba).Adresa osoba-> Adresa (*osoba). Starost osoba-> Starost

Page 2: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

2

2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj su podaci satrije osobe predaje pokazivačkoj promenljivoj stariji, i spisuju elementi srukture na koju ova promenljiva pokazuje. #include <stdio.h> #include <stdlib.h> #include<string.h> struct Licnost { char Ime[30]; char Prezime[30]; char Adresa[40]; unsigned Starost; }; void Citaj(struct Licnost*osoba) { printf("Unesite ime osobe: "); gets(osoba->Ime); // ili gets(*osoba).Ime printf("Unesite prezime osobe: "); gets(osoba->Prezime); printf("Unesite adresu osobe: "); gets(osoba->Adresa); printf(" starost osobe: "); scanf("%u",&osoba->Starost); while (getchar()!='\n'); } int main() { struct Licnost osoba1,osoba2,*stariji; printf("Unesite podatke za prvu osobu: \n "); Citaj(&osoba1); printf("Unesite podatke za drugu osobu: \n"); Citaj(&osoba2); if (osoba1.Starost > osoba2.Starost) stariji=&osoba1; else stariji=&osoba2; printf("Stariji je:\n"); printf("%s %s, %s %u godina",stariji->Ime,stariji->Prezime,stariji->Adresa,stariji->Starost); return 0; }

Page 3: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

3

NIZOVI STRUKTURA Strukture se mogu koristiti kao komponente nizova. struct Licnost osoba[50] je niz od 50 osoba tipa strukture Licnost; osoba[0].Adresa – pristupa se podatku adresa nultog elementa osoba[0].Adresa[4] – pristupa se četvrtom znaku, karakteru elementa adresa nulte strukturne promenljive

Ako deklarišemo pokazivač na strukturu Licnost struct Licnost osoba[50], *PokLic; tada su inicijalizacije pokazivačke promenljive ekvivalentne PokLic=osoba; PokLic=&osoba[0]; Pošto PokLic pokazuje na osoba[0], to PokLic +1 pokazuje na osoba[1]. Sledeće oznake su ekvivalentne: osoba[0].starost == (*osoba).starost == osoba->starost; 3. Napisati program kojim se učitava struktura deklarisana sa struct Licnost osoba[50], *PokLic i ispisuje na 2 načina. Prvo korišćenjem elemenata niza, a zatim korišćenjem pokazivača koji se inicijalizuje adresom niza strukture. #include <stdio.h> #include <stdlib.h> #include<string.h> struct Licnost { char Ime[30]; char Adresa[40]; unsigned Starost; }; void Citaj(struct Licnost*osoba) { printf("Unesite ime osobe: "); gets(osoba->Ime); // ili gets(*osoba).Ime printf("Unesite adresu osobe: "); gets(osoba->Adresa); printf(" starost osobe: "); scanf("%u",&osoba->Starost); while (getchar()!='\n'); } int main() { int i,n; struct Licnost osoba[50], *PokLic; printf("Unesite broj osoba: \n"); scanf("%d",&n); while (getchar()!='\n'); for(i=0;i<n;i++) { printf("Unesite podatke za %d osobu\n",i+1); Citaj(&osoba[i]); } //PRVI NACIN ZA ISPIS

for(i=0;i<n;i++) printf("%s, %s, %u godine\n",osoba[i].Ime, osoba[i].Adresa,osoba[i].Starost); //DRUGI NACIN ZA ISPIS KORISCENJEM POKAZIVACA

for(PokLic=osoba;PokLic<osoba+n;PokLic++) printf("%s, %s, %u godine\n",PokLic->Ime, PokLic->Adresa,PokLic->Starost); return 0; }

Page 4: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

4

HIJERARHIJSKE STRUKTURE Strukture koje sadrže element strukturnog tipa nazivaju se hijerarhijske strukture. Npr. struktura Licnost može da sadrži element DatumRodjenja tipa Datum koji predstavlja struktura: 4. Uneti podatke i ispisati: #include <stdio.h> #include <stdlib.h> #include<string.h> struct Datum { unsigned Dan; unsigned Mesec; unsigned Godina; }; struct Licnost { char Ime[30]; char Adresa[40]; struct Datum Dat_Rodj; }; int main() { struct Licnost osoba; printf("Unesite ime osobe: "); gets(osoba.Ime); printf("Unesite adresu osobe: "); gets(osoba.Adresa); printf("Unesite dan mesec i godinu rodjenja osobe: "); scanf("%u%u%u",&osoba.Dat_Rodj.Dan,&osoba.Dat_Rodj.Mesec,&osoba.Dat_Rodj.Godina); printf("Ispis podataka:\n"); printf("%s, %s, %u. %u. %u. godine",osoba.Ime,osoba.Adresa,osoba.Dat_Rodj.Dan,osoba.Dat_Rodj.Mesec,osoba.Dat_Rodj.Godina); return 0; }

Page 5: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

5

5.Unosi se broj fudbalskih ekipa, za svaki tim naziv, broj osvojenih bodova, gol razlika, a zatim se ispisuje tabela. Ako dve ekipe imaju isti broj bodova bolja je ona koja ima veću gol razliku. #include <stdio.h> #include <stdlib.h> #include<string.h> struct Tabela { char Ime[30]; unsigned Bodovi; int Razlika; }; void Citaj(struct Tabela x[]) { printf("Unesite ime ekipe: "); gets(x->Ime); // ili gets(*osoba).Ime printf("Unesite bodove: "); scanf("%u",&x->Bodovi); printf("Unesite gol razliku: "); scanf("%u",&x->Razlika); while (getchar()!='\n'); } void Pisi(struct Tabela x[],int n) { int i; for(i=0;i<n;i++) printf("%d. %s %u %d\n",i+1,x[i].Ime,x[i].Bodovi,x[i].Razlika ); } void Razmeni(struct Tabela *a, struct Tabela *b) { struct Tabela pom; pom=*a; *a=*b; *b=pom; } void Sort(struct Tabela x[], int n) { int i,j; for (i=0;i<n-1;i++) for (j=i+1;j<n;j++) if((x[i].Bodovi<x[j].Bodovi)||((x[i].Bodovi==x[j].Bodovi)&&(x[i].Razlika<x[j].Razlika))) Razmeni(&x[i],&x[j]); } int main() { int i,n; struct Tabela Ekipa[30]; printf("Unesite broj ekipa:"); scanf("%d",&n); while (getchar()!='\n'); for(i=0;i<n;i++) { printf("Unesite podatke za %d ekipu\n",i+1); Citaj(&Ekipa[i]); } Sort(Ekipa,n); printf("Rang lista ekipa:\n"); Pisi(Ekipa,n); return 0;}

Page 6: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

6

II NAČIN

#include <stdio.h>

#include <stdlib.h>

#include<string.h>

struct Tabela

{

char Ime[30];

unsigned Bodovi;

int Razlika;

};

void Citaj(struct Tabela x[],int n )

{ int i;

for(i=0;i<n;i++)

{printf("Unesite podatke za %d ekipu\n",i+1);

printf("Unesite ime ekipe: "); gets(x[i].Ime); // ili gets(*osoba).Ime

printf("Unesite bodove: "); scanf("%u",&x[i].Bodovi);

printf("Unesite gol razliku: "); scanf("%u",&x[i].Razlika);

while (getchar()!='\n');

}

}

void Pisi(struct Tabela x[],int n)

{ int i;

for(i=0;i<n;i++)

printf("%d. %s %u %d\n",i+1,x[i].Ime,x[i].Bodovi,x[i].Razlika );

}

void Razmeni(struct Tabela *a, struct Tabela *b)

{

struct Tabela pom;

pom=*a; *a=*b; *b=pom;

}

void Sort(struct Tabela x[], int n)

{ int i,j;

for (i=0;i<n-1;i++)

for (j=i+1;j<n;j++)

if((x[i].Bodovi<x[j].Bodovi)||((x[i].Bodovi==x[j].Bodovi)&&(x[i].Razlika<x[j].Razlika)))

Razmeni(&x[i],&x[j]);

}

int main()

{

int n;

struct Tabela Ekipa[30];

printf("Unesite broj ekipa:");

scanf("%d",&n); while (getchar()!='\n');

Citaj(Ekipa,n);

Sort(Ekipa,n);

printf("Rang lista ekipa:\n");

Pisi(Ekipa,n);

return 0;

}

Page 7: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

7

6.Napisati program za formiranje strukture student sa karakteristikama Ime, Prezime, broj indeksa, srednja ocena. Za uneti broj studenata n, sortirati studente prema srednjoj oceni i ispisati na ekranu. #include<stdio.h> struct student { char Ime[20], Prezime[20]; int broj_indeksa; float srednja_ocena; }; void razmeni(struct student *a, struct student *b) { struct student pom; pom=*a; *a=*b; *b=pom; } void sort(struct student STF[], int n) { int i, j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(STF[i].srednja_ocena<STF[j].srednja_ocena) razmeni(&STF[i],&STF[j]); } int main() { int n,i; struct student STF[100]; printf("Unesite broj studenata: \n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("Unesi ime: \n"); scanf("%s",STF[i].Ime); printf("Unesi prezime: \n"); scanf("%s",STF[i].Prezime); printf("Unesi broj indeksa: \n"); scanf("%d",&STF[i].broj_indeksa); printf("Unesi srednju ocenu: \n"); scanf("%f",&STF[i].srednja_ocena); } sort(STF,n); for(i=0;i<n;i++) {printf("student broj %d\n",i+1); printf("Ime:%s\n",STF[i].Ime); printf("Prezime:%s\n",STF[i].Prezime); printf("Broj indeksa: %d\n",STF[i].broj_indeksa); printf("Srednja ocena: %5.2f\n\n\n",STF[i].srednja_ocena); } return 0;}

Page 8: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

8

7. Napisati program koji pravi rang listu studenata koji su polagali prijemni ispit. Sa standardnog ulaza se unose sledeci podaci: ime studenta, cetiri ocene iz prethodnog skolovanja i broj bodova na prijemnom ispitu. #include<stdio.h>

#include <stdlib.h>

#include<string.h>

struct student

{

char ime[20];

float brBodova;/*Ukupna suma bodova svakog studenta: ocene + prijemni*/

};

void razmeni(struct student *a, struct student *b)

{

struct student tmp;

tmp=*a; *a=*b; *b=tmp;

}

void sort(struct student niz[], int n)

{

int i, j;

for(i=0; i<n-1; i++)

for(j=i+1; j<n; j++)

if(niz[i].brBodova<niz[j].brBodova)

razmeni(&niz[i], &niz[j]);

}

int main()

{

struct student nizStudenata[50];

int n, i, j;

float ocene[10];

float bodovi;

float sumaOcena[100];/*Suma ocena iz prethodnog skolovanja*/

printf("Uneti broj studenta koji je polagao prijemni: ");

scanf("%d", &n);

for(i=0; i<n; i++)

{

printf("Uneti ime studenta: "); while (getchar()!='\n');

gets(nizStudenata[i].ime);

printf("Uneti cetiri ocene iz prethodnog skolovanja: ");

for(j=0; j<4; j++)

{scanf("%f", &ocene[j]);

sumaOcena[i]+=ocene[j];

}

printf("Uneti broj bodova sa prijemnog: ");

scanf("%f", &bodovi);

nizStudenata[i].brBodova=sumaOcena[i]+bodovi;

printf("Ukupna suma bodova svakog studenta: ocene + prijemni je: %.2f\n",nizStudenata[i].brBodova);

}

sort(nizStudenata, n);

printf("Rang lista studenata je:\n\n");

for(i=0; i<n; i++)

printf("%s\t%.2f\n", nizStudenata[i].ime, nizStudenata[i].brBodova);

return 0;}

Page 9: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

9

8.Definisati strukturu GRAD sa podacima clanovima: ime, broj_stanovnika, prosecan_dohodak_radnika. Napisati program kojim se unose podaci o gradovima u Srbiji i stampati na standardnom izlazu ime grada sa najvecim brojem stanovnika. Izracunati ukupan dohodak svih unetih gradova. #include<stdio.h>

#include<string.h>

struct grad

{

char ime[20];

int brStan;

float dohodak;

};

int main(){

struct grad nizGradova[30];

int i, n;

float ukupanDohodak=0.0;

int najveci;

int indeksNajvecegGrada;

printf("Uneti koliko gradova ima: ");

scanf("%d", &n);

for(i=0; i<n; i++){

printf("Uneti ime grada: ");while (getchar()!='\n');

gets(nizGradova[i].ime);

printf("Uneti broj stnovnika: ");

scanf("%d", &nizGradova[i].brStan);

printf("Uneti dohodak: ");

scanf("%f", &nizGradova[i].dohodak);

ukupanDohodak+=nizGradova[i].dohodak;

}

printf("Ukupan dohodak svih gradova je: %6.2f\n", ukupanDohodak);

najveci=nizGradova[0].brStan;

indeksNajvecegGrada=0;

for(i=0; i<n; i++)

{

if(nizGradova[i].brStan>najveci){

najveci=nizGradova[i].brStan;

indeksNajvecegGrada=i;

}

}

printf("Grad sa najvise stanovnika je %s\n", nizGradova[indeksNajvecegGrada].ime);

return 0;

}

Page 10: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

10

9. Napisati program za formiranje strukture podataka telefonski_imenik sa poljima: prezime, broj i adresa. Napisati program za sortiranje imenika prema prezimenu pretplatnika. #include<stdio.h>

#include<string.h>

struct telefonski_imenik

{

char prezime[20];

char broj[10];

char adresa[20];

};

void razmeni(struct telefonski_imenik *a, struct telefonski_imenik *b)

{

struct telefonski_imenik tmp;

tmp=*a;

*a=*b;

*b=tmp;

}

void sort(struct telefonski_imenik niz[], int n)

{

int i, j;

for(i=0; i<n-1; i++)

for(j=i+1; j<n; j++)

if(strcmpi(niz[i].prezime,niz[j].prezime)>0)

razmeni(&niz[i], &niz[j]);

}

int main()

{

struct telefonski_imenik nizImenik[100];

int n, i;

printf("Uneti broj telefonskih pretplatnika: ");

scanf("%d", &n);while (getchar()!='\n');

for(i=0; i<n; i++)

{

puts("Uneti prezime pretplatnika: ");

gets(nizImenik[i].prezime);

puts("Uneti broj telefona pretplatnika: ");

gets(nizImenik[i].broj);

puts("Uneti adresu pretplatnika: ");

gets(nizImenik[i].adresa);

}

sort(nizImenik, n);

printf("\nTelefonski imenik sortiran po prezimenu pretplatnika je:\n\n");

for(i=0; i<n; i++)

printf("%s\t%s\t%s\n", nizImenik[i].prezime, nizImenik[i].broj, nizImenik[i].adresa);

return 0;

}

Page 11: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

11

10. Program koji za za zadato tekuće vreme određuje naredno vreme. #include<stdio.h> struct vreme { int sat; int minut; int sekund; }; int main() { struct vreme tekuce_vreme,naredno_vreme; printf("Unesite tekuce vreme?[cc:mm:ss]"); scanf("%d%d%d",&tekuce_vreme.sat,&tekuce_vreme.minut,&tekuce_vreme.sekund); naredno_vreme=tekuce_vreme; if(++naredno_vreme.sekund==60) {naredno_vreme.sekund=0; if(++naredno_vreme.minut==60) {naredno_vreme.minut=0; if(++naredno_vreme.sat==24) naredno_vreme.sat=0; } } printf("Naredno vreme je %d:%d:%d\n", naredno_vreme.sat,naredno_vreme.minut, naredno_vreme.sekund); return 0;}

Page 12: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

12

11. Napisati program koji za zadati slog učenik sa podacima ime, prezime i prosek računa srednju ocenu

odeljenja i sortira učenike prema proseku i štampa spisak.

#include<stdio.h>

#include <stdlib.h>

#include<string.h>

struct Ucenik

{

char prezime[30];

char ime[30];

float prosek;

};

void Citaj(struct Ucenik x[],int n,float *prosek )

{ int i;float s=0;

for(i=0;i<n;i++)

{printf("Unesite podatke za %d ucenika\n",i+1);

printf("Unesite ime: "); gets(x[i].ime);

printf("Unesite prezime: "); gets(x[i].prezime); // ili gets(*osoba).Ime

printf("Unesite prosek: "); scanf("%f",&x[i].prosek);

s+=x[i].prosek;

*prosek=s/n;

while (getchar()!='\n');

}

}

void Pisi(struct Ucenik x[],int n)

{ int i;

for(i=0;i<n;i++)

printf("%d. %s %s %.2f\n",i+1,x[i].prezime,x[i].ime,x[i].prosek );

}

void Razmeni(struct Ucenik *a, struct Ucenik *b)

{

struct Ucenik pom;

pom=*a; *a=*b; *b=pom;

}

void Sort(struct Ucenik x[], int n)

{ int i,j;

for (i=0;i<n-1;i++)

for (j=i+1;j<n;j++)

if((x[i].prosek<x[j].prosek)||((x[i].prosek==x[j].prosek)&&(strcmpi(x[i].prezime,x[j].prezime)>0)))

Razmeni(&x[i],&x[j]);

}

int main()

{

int n; float prosek_od;

struct Ucenik Odeljenje[50];

printf("Unesite broj ucenika:");

scanf("%d",&n); while (getchar()!='\n');

Citaj(Odeljenje,n,&prosek_od);

printf("prosek je %.2f\n",prosek_od);

Sort(Odeljenje,n);

printf("Sortirani:\n");

Pisi(Odeljenje,n);

return 0;}

Page 13: STRUKTURE - · PDF file2 2.Napisati program kojim se korišćenjem funkcije void Citaj(struct Licnost*osoba) učitavaju podaci za 2 osobe, zatim adresa strukturne promenljive u kojoj

13

DOMAĆI: 12.Za nepoznat broj studenata(ime, broj indeksa, koji put izlazi na ispit, bodovi sa kolokvijuma, bodovi sa pismenog) napraviti rang listu studenata koji se pozivaju na usmeni (uslov je da je ukupan broj bodova >60). 13. Napisati program koji za strukturu o radnicima koja sadrži polja: ime, ukupan radni staž i staž u rad. org. prikazuje sortiranu listu radnika po ukupnom stažu i listu radnika koji imaju više od deset godina staža u rad. org. Unosi se nepoznat broj radnika. 14. Napisati program u kojem se za strukturu Radnici koja sadrži sledeća polja: ime radnika, stambeno stanje (0 – nema stan, 1 – ima stan, 2 – ima kuću), kvadraturu stambenog prostora i broj članova domaćinstava prikazuje spisak radnika koji nemaju rešeno stambeno pitanje, i spisak radnika koji su ugroženi. Radnik je ugrožen ako je prosek kvadrature po članu domaćinstva manji od 17. Ako radnik ima kuću veću od 100 kvadratnih metara, kvadratura se množi sa 0.90. Za radnike koji nemaju stan ne unosi se kvadratura ni broj članova domaćinstva. 15. Za unetu strukturu o podacima zaposlenih koja sadrži ime, stručnu spremu i iznos plate izračunati ukupan iznos za isplatu i prikazati radnika sa najvećom platom. 16. Napisati program gde se za unetu strukturu koja sadrži sledeća polja: ime osobe (string), horopskopski znak (string), datum rođenja (slog sa poljima: dan rođenja (1..31), mesec (1..12), godina (1900..2010)) obezbeđuje unos nepoznatog broja slogova, i zatim prikaz osoba koji su rođeni u zadatom horoskopskom znaku. 17. Napisati program koji sadrži strukturu film koja se sastoji od sledećih komponenti: naziv filma, žanr, zemlja porekla i trajanje. a) Prikazati sve domaće komedije b) Sortirati filmove po dužini trajanja, od najkraćeg do najdužeg c) U strukturu film dodati komponentu glumci koji se sastoji od dve komponenete: glavni glumac i sporedni glumac, s tim što film ne mora imati sporednog glumca. Prikazati samo one filmove koji imaju sporednog glumca. 18. Napisati program koji sadrži strukturu o takmičarima iz atletike sa sledećim podacima: ime i prezime takmičara (string), disciplina (disciplina) i ocene za šest pokušaja za (niz od šest brojeva). Uneti strukture i zatim prikazati listu takmičara koji idu u drugi krug. U drugi krug idu takmičari koji iz prva tri pokušaja imaju srednju ocenu veću ili jednaku 10.