You are on page 1of 3

Вовед во програмирање 2010

Задачи 10
1. Пример за структури

#include <stdio.h>
#include <stdlib.h>

struct student{
char ime[15];
char prezime[15];
int index;
int vozrast;
float prosek;
};
int main(int argc, char *argv[])
{
struct student primer={"Goran","Noveski",8103,25,8.35};
printf("Ime: %s\n",primer.ime);
printf("Prezime: %s\n",primer.prezime);
printf("Indeks: %d\n",primer.index);
printf("Vozrast: %d\n",primer.vozrast);
printf("Prosek: %.2f\n",primer.prosek);
system("PAUSE");
return 0;
}

2. Креирање на структура датум и функција која за аргумент прима објект од структурата датум и
податочниот член godina го зголемува за 10.

#include <stdio.h>
#include <stdlib.h>

struct datum{
int den;
int mesec;
int godina;
};

struct datum dodaj10(struct datum);

int main(int argc, char *argv[])


{
struct datum denes;
printf("Koj den e denes: ");
scanf("%d",&denes.den);
printf("Koj mesec e denes: ");
scanf("%d",&denes.mesec);
printf("Koja godina: ");
scanf("%d",&denes.godina);

denes=dodaj10(denes);
printf("Posle 10 godini ke bide:
%d.%d.%d\n",denes.den,denes.mesec,denes.godina);
system("PAUSE");
return 0;
}

struct datum dodaj10(struct datum d){


d.godina+=10;
return d;
}

3. Да се дефинира структура точка со податочни членови x и y кои ги дефинираат координатите. Да


се дефинираат функции:
a. void pecati(struct tocka) – која ја печати точката во форма (x,y)
b. struct tocka pomesti(struct tocka, int, int) – која ги зголемува
вредностите на x и y.
c. float rastojanie(struct tocka, struct tocka) – која го враќа растојанието
помеѓу точките зададени како аргументи

#include <stdio.h>
#include <stdlib.h>

struct tocka{
float x;
float y;
};

void pecati(struct tocka);

struct tocka pomesti(struct tocka,float,float);

float rastojanie(struct tocka,struct tocka);

int main(int argc, char *argv[])


{
struct tocka M,N;
M.x=3.0;
M.y=4.0;
N.x=2.5;
N.y=-1.7;
pecati(M);
M=pomesti(M,2.5,3.1);
pecati(M);
printf("Rastojanieto megu dvete tocki e %.1f \n",rastojanie(M,N));
system("PAUSE");
return 0;
}

void pecati(struct tocka t){


printf("(%.1f,%.1f) \n",t.x,t.y);
}

struct tocka pomesti(struct tocka t,float a,float b){


t.x+=a;
t.y+=b;
return t;
}
float rastojanie(struct tocka t,struct tocka p){
return sqrt((t.x-p.x)*(t.x-p.x)+(t.y-p.y)*(t.y-p.y));
}

4. Да се дефинира структура студент со податочни членови за име, презиме и поени. Преку


тастатура да се внесат податоци за n студенти, да се подредат според бројот на поени и да се
испечатат. Со една линија да се одделат оние кои имаат повеќе од 50 поени од оние кои имаат
помалку!

#include <stdio.h>
#include <stdlib.h>

struct student{
char ime[15];
char prezime[15];
int poeni;
};

int main(int argc, char *argv[])


{
struct student a[100];
int n,i,j;
printf("Vnesi broj na studenti: ");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Vnesete podatoci za %d student\n",i+1);
printf("Ime: ");
scanf("%s",a[i].ime);
printf("Prezime: ");
scanf("%s",a[i].prezime);
printf("Poeni: ");
scanf("%d",&a[i].poeni);
}

struct student temp;

for(i=n-1;i>0;i--){
for(j=0;j<i;j++){
if(a[j].poeni<a[j+1].poeni){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}

for(i=0;i<n;i++){
printf("%s\t%s\t%d\n",a[i].ime,a[i].prezime,a[i].poeni);
if(a[i].poeni>50 && a[i+1].poeni<50){
printf("----------------------------------\n");
}
}

system("PAUSE");

You might also like