Rešeni primeri sa nizovima struktura
1. Opisati strukturu proizvod koji sadrži sledeća polja: naziv, proizvođač, cena, količina.
Napisati program u kome se :
-vrši unos podataka o n proizvoda u jednoj prodavnici auto-delova (n<100),
-računa ukupan broj proizvoda,
-računa broj proizvoda koje proizvodi FIAT,
-štampaju nazivi proizvoda čija je količina 0,
-štampa spisak proizvoda sortiranih po ceni.
#include <stdio.h>
#include <string.h>
struct proizvod
{
char naziv[30];
char proiz[20];
float cena;
int kolicina;
};
main()
{
struct proizvod x[100], p;
int bp, bf, max, n, i, j,k, jedinstven;
char a[20] [50];
printf("Unesi broj proizvoda u prodavnici:");
scanf("%d",&n);
printf("Unesi podatke o proizvodima:\n");
for (i=0;i<n;i++)
{
printf("naziv:"); scanf("%s",&x[i].naziv);
printf("proizvođač:"); scanf("%s",&x[i].proiz);
printf("cena:"); scanf("%f",&x[i].cena);
printf("kolicina:"); scanf("%d",&x[i].kolicina);
}
bp=0;
for (i=0;i<n;i++)
bp+=x[i].kolicina;
printf("ukupan broj proizvoda u prodavnici:%d",bp);
bf=0;
for (i=0;i<n;i++)
if (strcmp(x[i].proiz,"FIAT")==0)
bf++;
printf("ukupan broj proizvoda FIAT-a je :%d",bf);
printf("Proizvodi koji nedostaju u prodavnici :");
for (i=0;i<n;i++)
if (x[i].kolicina==0)
printf("%s %s", x[i].naziv, x[i].proiz);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if ( x[i].cena>x[j].cena)
{
p=x[i];
x[i]=x[j]; x[j]=p;
}
printf("Proizvodi
sortirani po ceni : \n");
for(i=0;i<n;i++)
printf("%s %s %f", x[i].naziv, x[i].proiz,
x[i].cena);
}
2. Opisati strukturu apartman koji sadrži sledeća polja: naziv, mesto, broj kreveta, cena.
Napisati program u kome se:
- vrši unos podataka za n apartmana turističke agencije,
- računa prosečna cena apartmana u toj agenciji,
- broj apartmana u mestu Paralia,
- štampa naziv apartmana za 2 osobe sa najmanjom cenom,
- štampa spisak apartmana sortiranih po ceni.
#include <stdio.h>
#include <string.h>
struct apartman
{
char naziv[20];
char mesto[20];
int brojk;
float cena;
};
main()
{
struct apartman x[100], p;
int b, min, n, i, j, k, rb, jedinstven;
float s, prosek;
char a[20] [50];
printf("Unesi broj ponuda u agenciji:");
scanf("%d",&n);
printf("Unesi podatke o ponudama:\n");
for (i=0;i<n;i++)
{
printf("naziv:"); scanf("%s",&x[i].naziv);
printf("mesto:"); scanf("%s",&x[i].mesto);
printf("broj kreveta:"); scanf("%d",&x[i].brojk);
printf("cena:"); scanf("%f",&x[i].cena);
}
s=0;
for (i=0;i<n;i++)
s+=x[i].cena;
prosek=s/n;
printf("Prosečna cena apartmana u agenciji je:%f",prosek);
b=0;
for (i=0;i<n;i++)
if (strcmp(x[i].mesto,"Paralia")==0)
b++;
printf("Broj apartmana u Paraliji je :%d", b);
min= x[0].cena;
rb=0;
for (i=1;i<n;i++)
if (x[i].cena<min)
{
min=x[i].cena; rb=i;
}
printf("Najjeftiniji dvokrevetni apartman je %s u mestu %s :", x[rb].naziv, x[rb].mesto );
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if ( x[i].cena>x[j].cena)
{
p=x[i];
x[i]=x[j]; x[j]=p;
}
printf("Apartmanii
sortirani po ceni : \n");
for(i=0;i<n;i++)
printf("%s %s %f", x[i].naziv, x[i].mesto,
x[i].cena);
}
3. Uneti niz od n struktura tipa radnik koja sadrži ime, pol, broj godina radnog staža, stepen stručne spreme i platu. Izračunati:
1)broj radnika koji imaju više od 5 godina radnog staža
2)prosečnu platu radnika
3)imena radnika sa najvišim stepenom stručne spreme
4)broj žena sa više od 20 godina radnog staža
5)sortirati dati niz struktura u abecednom poretku
Rešenje:
#include <stdio.h>
#include <string.h>
struct radnik
{
char ime[30];
char pol;
int radnistaz;
int sss;
float plata;
};
main()
{
struct radnik x[50],pom;
int n,i,b1,b2,max;
float s, prosek;
printf(“unesi broj radnika”); scanf(“%d”,&n);
printf(“unesi podatke o radnicima\n”);
for (i=1;i<=n;i++)
{
printf(“%d.radnik:”,i); scanf(“%s”,&x[i].ime);
printf(“pol:”); scanf(“%c”,&x[i].pol);
printf(“godine radnog staza:”); scanf(“%d”,&x[i].radnistaz);
printf(“stepen strucne spreme:”); scanf(“%d”,&x[i].sss);
printf(“plata:”); scanf(“%f”,&x[i].plata);
}
b1=0;
for (i=1;i<=n;i++)
if ( x[i].radnistaz > 5) b1++;
printf(“broj radnika sa vise od 5 godina radnog staza:%d”,b1);
s=0;
for (i=1;i<=n;i++)
s+= x[i].plata;
prosek=s/n;
printf(“prosecna plata radnika:%f”,prosek);
max= x[1].sss;
for (i=2;i<=n;i++)
if ( x[i].sss > max)
max= x[i].sss;
printf(“Imena radnika sa najvišim stepenom stručne spreme:”);
for (i=1;i<=n;i++)
if ( x[i].sss == max) printf(“%s”, x[i].ime);
b2=0;
for (i=1;i<=n;i++)
if (x[i].pol==’Z” && x[i].radnistaz>20)
b2++;
printf(“Broj zena sa vise od 20 godina radnog staza:%d”,b2);
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if ( strcmp (x[i].ime, x[j].ime)>0)
{
pom=x[i]; x[i]=x[j];
x[j]=pom;
}
printf( “Radnici sortirani po abecedi:\n”);
for (i=1;i<=n;i++)
printf(“%d. %s ”,i, x[i].ime);
}
4. Uneti niz od n struktura tipa učenik koja sadrži sledeća polja: ime,pol, prosek, razred(1-4). Napisati program koji računa:
broj učenika 4.razreda;
broj muških učenika;
ispisati imena učenika koji imaju odličan uspeh;
ispisati ime učenika koji ima najbolji prosek;
ispisati imena učenika sortiranih po razredima u školi i to do 1. do 4.razreda.
#include <stdio.h>
#include
<string.h>
struct
ucenik {
char
ime[30];
char pol;
int
razred;
float prosek;
};
main()
{
struct
ucenik x[50],p;
int
n,i,j,b4=0,bm=0;
float
max;
printf("Unesi
broj ucenika");
scanf("%d",&n);
printf("Unesi
podatke o ucenicima\n");
for
(i=0;i<n;i++)
{
printf("%d.ucenik:",i+1);
scanf("%s",&x[i].ime);
printf("\n");
printf("pol:");
scanf("%s",&x[i].pol);
printf("\n");
printf("razred:");
scanf("%d",&x[i].razred);
printf("\n");
printf("prosek:");
scanf("%f",&x[i].prosek);
printf("\n");
}
for
(i=0;i<n;i++)
if (
x[i].razred==4)
b4++;
printf("Broj ucenika sa
odlicnim uspehom:%d\n",b4);
for
(i=0;i<n;i++)
if (
x[i].pol=='m' || x[i].pol=='M')
bm++;
printf("Broj
muskih ucenika:%d\n",bm);
printf("Spisak odličnih
ucenika:\n");
for
(i=0;i<n;i++)
if
( x[i].prosek>=4.5)
printf("%s\n",x[i].ime);
max=x[0].prosek;
for (i=1;i<n;i++)
if ( x[i].prosek>max)
max=x[i].prosek;
printf("Ucenici
sa najboljim prosekom:");
for
(i=0;i<n;i++)
if
( x[i].prosek==max)
printf("%s\n",x[i].ime);
for
(i=1;i<n;i++)
for
(j=i+1;j<=n;j++)
if (x[i].razred>x[j].razred)
{
p=x[i];
x[i]=x[j]; x[j]=p;
}
printf("Ucenici
sortirani po razredu:\n");
for
(i=0;i<n;i++)
printf("%d. %s ",i+1, x[i].ime);
}
5.
Opisati strukturu klijent
koja sadrzi sledeca polja : ime, mesto, telefonski broj i poslednji
racun. Napisati program koji realizuje sledece :
1)
unos podataka za n klijenata;
2)
prosecan racun za poslednji mesec;
3)
broj klijenata iz Kraljeva;
4)
ime i broj klijenata sa najvecim racunom;
5)
sortiranje klijenata po telefonskom broju.
#include<stdio.h>
#include<string.h>
struct
klijent
{
char
ime[30];
char
mesto[30];
int
broj;
float
pr;
};
main()
{
struct
klijent x[100], pom;
int
i, j, n, b=0, max, rb;
float
sr, s;
printf("Uneti
broj klijenata :
\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Ime
: \n");
scanf("%s",&x[i].ime);
printf("Mesto
: \n");
scanf("%s",&x[i].mesto);
printf("Telefonski
broj : \n");
scanf("%d",&x[i].broj);
printf("Poslednji
racun : \n");
scanf("%f",&x[i].pr);
}
for(i=0;i<n;i++)
s+=x[i].pr;
sr=s/n;
printf("Prosecni
racun za prosli mesec : %f\n ",sr);
for(i=0;i<n;i++)
if (x[i].mesto=="Kraljevo")
b++;
printf("Broj
klijenata iz Kraljeva : %d\n ",b);
max=
x[0].pr; rb=0;
for(i=1;i<n;i++)
if (x[i].pr>max)
{
max=x[i].pr; rb=i;
}
printf("Klijent
sa najvecim racunom : \n", x[rb].ime);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if ( x[i].broj>x[j].broj)
{
pom=x[i];
x[i]=x[j]; x[j]=pom;
}
printf("Klijenti
sortirani po telefonskom broju : \n");
for(i=0;i<n;i++)
printf("%s",x[i].ime);
}
Tags: nizovima struktura, struktura, strukturu, rešeni, opisati, primeri, nizovima, proizvod