You are on page 1of 9

Структурно програмирање

Семестар 1

Лаб1:

1. Да се напише програма која ќе ги изведува основните математички


операции (+, -, *, /, %) врз два броја кои се читаат од стандарден влез.
#include <stdio.h>
int main() {

int a,b;
//se vnesuvaat 2 broja od tastatura
scanf("%d %d", &a, &b);

printf("a + b = %d \n",a+b);
printf("a - b = %d \n",a-b);
printf("a * b = %d \n",a*b);
printf("a / b = %d \n",a/b);
printf("a %% b = %d \n",a%b);

return 0;

2. Да се напише програма која за дадена сума на пари, ќе испечати со колку


најмалку банкноти и монети може да се исплати. На влез се чита еден цел број.
На излез се печатат 9 редови, по колку банкноти или монети од секој апоен ни
се потребни за да ја исплатиме сумата. Пример 1583 денари, најдобро е да се
исплати како:

#include <stdio.h>

int main ()

int money, keep_track;

int ein,zwei,funf,zehn,funfzig,einhundert,funfhundert,eintausend,funftausend;

scanf("%d", &money);
printf("%d*5000\n", funftausend=money/5000);

keep_track=money-(5000*funftausend);

printf("%d*1000\n", eintausend=keep_track/1000);

keep_track=keep_track-(1000*eintausend);

printf("%d*500\n", funfhundert=keep_track/500);

keep_track=keep_track-(500*funfhundert);

printf("%d*100\n", einhundert=keep_track/100);

keep_track=keep_track-(100*einhundert);

printf("%d*50\n", funfzig=keep_track/50);

keep_track=keep_track-(50*funfzig);

printf("%d*10\n", zehn=keep_track/10);

keep_track=keep_track-(10*zehn);

printf("%d*5\n", funf=keep_track/5);

keep_track=keep_track-(5*funf);

printf("%d*2\n", zwei=keep_track/2);

keep_track=keep_track-(2*zwei);

printf("%d*1\n", ein=keep_track/1);

keep_track=keep_track-(1*ein);

return 0;

3. Да се напише програма која вчитува од стандарден влез два децимални броја


(маса во кг и висина во цм) и пресметува и печати на стандарден излез индекс
на телесна маса по формулата: $BMI = \frac{masa}{visina * visina}$
Висината претходно треба да се претвори од сантиметри во метри.

#include <stdio.h>
int main(){

float masa, visina, BMI;


//Korisnikot vnesuva masa i visina
scanf("%f%f", &masa,&visina);
visina=visina/100;
printf("%.2f", BMI = masa/(visina * visina));

return 0;
}
4. Да се напише програма која пресметува просечна оцена во семестар.
Програмата чита 5 цели броја. Треба да се испечати еден реален број на две
децимали, просек на прочитаните броеви.
#include <stdio.h>
int main () {
int a,b,c,d,e;
float sum;
scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
printf("%.2f",sum=(float)(a+b+c+d+e)/5);
return 0;
}
5. Да се напише програма коjа за даден цел броj секунди коj се чита од
стандарден влез, ќе ги отпечати на екран соодветните вредности во часови,
минути и секунди.
#include <stdio.h>
int main () {

int x, h, m, s;
scanf("%d", &x);
h=x/3600;
m=(x -(3600*h))/60;
s=x%60;
printf("%d sekundi se %d casovi, %d minuti i %d sekundi",x,h,m,s);
// printf("%d sekundi se %d casovi, %d minuti i %d sekundi",x, x/3600, (x -(3600*h))/60, s=x
%60);

return 0;
}

Лаб 2:

1. Да се напише програма каде од тастатура се внесува одреден износ на пари кој


корисник го има на својата трансакциска сметка. Потоа, во нов ред се внесува
сумата на еден производ кој го купил, на кој дополнително треба да плати и
ДДВ(18% од таа сума). Програмата печати 1 доколку после плаќањето на ДДВ
корисникот има барем 1 денар на својата сметка, а 0 во спротивно.
input: 25600
10000
output: 1

#include <stdio.h>
int main(){

int money, spent, r;


scanf("%d %d", &money, &spent);
spent=(float)spent*1.18;

printf("%d", (money-spent)>=1);

return 0;
}
2. Напишете код со којшто ќе вчитате три вредности x,y,z, и потоа еден по еден ќе
ги извршите следниве изрази:

 y = ++x && (z+5 || --y)


 z = z-- || (x>y) && (x>z)

Испечатете ги вредностите на x,y,z по секое извршување на горните изрази.


Разгледајте ги резултатите што ги добивате и објаснете му/и на
демонстраторот/демонстраторката, зошто резултатите се такви какви што се.

#include <stdio.h>
int main() {

int x,y,z;
scanf("%d %d %d",&x,&y,&z);

y= ++x && (z+5 || --y);


printf("%d %d %d \n",x,y,z);

z=z-- || (x>y) && (x>z);


printf("%d %d %d \n",x,y,z);

return 0;

3. Да се напише програма која ќе чита три цели броја (x,y,z) од тастатура и на


екран ќе го испечати резултатот од следниот израз ++x - --y + z++ + (x>z) Кој
резултат ќе се добие доколку ги нема заградите, т.е. изразот е ++x - --y + z++ +
x>z? Испечатете го и овај резултат, одделен со празно место од првиот резултат,
како во примерот.

#include <stdio.h>
int main() {

int x,y,z,r;
scanf("%d %d %d", &x, &y, &z);
r=++x - --y + z++ + (x>z);
printf("%d %d", r, ++x - --y + z++ + x>z);

return 0;

4. Во градот постојат 2 такси компании. Едната наплаќа фиксна цена C денари за


првите К километри, а за секој нареден километар наплаќа уште P денари.
Другата такси компанија има возила кои возат со брзина V километри во
минута, а наплаќа B денари пред почетокот на возењето, за секој извозен
километар уште D денари и дополнително за секоја минута возење
наплаќа М денари. Ваша задача е за даден број на километри до дестинацијата
да пресметате со која такси компанија најмногу ви се исплати да се возите.
Влез: Во првата линија е даден бројот на километри до дестинацијата. Во наредната
линија се дадени C, K и P. Во третата и последна линија се дадени V, B, M и D.
Излез: Во првиот ред се печатат цените на двете компании одвоени со празно место, а
во вториот ред се печати 1 доколку цената за возење со првата компанија е помала
или еднаква на цената на возење со втората компанија, се печати 0 инаку.
Пример: За влезот
13
6 7 4
4 2 1 2
Се добива дека првата компанија ќе наплати 6 + (13 - 7) * 4 = 30
Втората компанија ќе се наплати 2 + [13 / 4] * 1 + 13 * 2 = 31

#include <stdio.h>

int main() {

int KM,c,k,p,v,b,m,d,first,second;

//Vlez

scanf("%d \n", &KM);

scanf("%d %d %d", &c, &k, &p);

scanf("%d %d %d %d", &v, &b, &m, &d);

printf("%d %d \n",first=c+(KM-k)*p, second=b+(KM/v)*m+KM*d);

printf("%d", first<=second);

return 0;

}
5. Од стандарден влез се вчитуваат следните податоци за еден студент на ФИНКИ:

 индекс (шестцифрен цел број)


 шест оценки од последниот семестар кој го слушал

Да се напише програма која што на стандарден излез ќе ги испечати следните


информации за студентот: (погледнете во тест примерите за форматот на печатење)

 просек на студентот
o просекот да се испечати со точност од 3 децимали
 година на студии
o студентите чијшто индекс почнува на 17 се трета година, на 16 се четврта
година, на 15 се петта година итн.
 дали е награден (1 = награден, 0 = не е награден)
o Еден студент се наградува доколку има просек еднаков или поголем од
9.5

#include <stdio.h>

int main() {

//indeks i 6 ocenki od posleden semestar

int indeks, a,b,c,d,e,f;

scanf("%d %d %d %d %d %d %d",&indeks, &a, &b, &c, &d, &e, &f);

float prosek=(float)(a+b+c+d+e+f)/6;

printf("Prosek: %.3f \n", prosek);

printf("Student: %d \n",indeks);

printf("%d godina \n", 10-((indeks/10000)%10));

printf("Nagraden: %d", prosek>=9.5);

return 0;

}
6. Да се напише програма каде од тастатура ќе се внесе еден број кој има пет
цифри, но не мора да е петцифрен, како на пример 04569 или 00256.
Програмата ги печати сумите на паровите цифри од надвор кон внатре, за на
крај да ја испечати средишната цифра. Така, ако внесениот број е 12596,
програмата враќа 7 11 5.
влез: 12596
излез: 7 11 5

#include <stdio.h>
int main () {

int number;
scanf("%d", &number);
printf("%d %d %d",(number/10000)+(number%10),((number/1000)%10)+((number
%100)/10),(number%1000)/100);

return 0;
}

7. Да се напише програма каде од тастатура се внесува одреден износ на пари кој


корисник го има на својата трансакциска сметка. Потоа, во нов ред се внесуваат
пет други износи оддвоени со празно место. Тие претставуваат некаква
трансакција - одреден трошок или добивка на пари. Програмата печати 1
доколку после извршените трансакции корисникот сеуште има пари на својата
сметка, а 0 во спротивно.
input: 25600
10000 250 899 10 -45000
output: 0

#include <stdio.h>
int main () {

int money, t1,t2,t3,t4,t5;


scanf("%d \n%d %d %d %d %d", &money, &t1, &t2, &t3, &t4, &t5);
printf("%d", (money+t1+t2+t3+t4+t5)>=1);

return 0;
}

8. Да се напише програма која што од стандарден влез ќе вчитува 3 знаци и истите


ќе ги шифрира во две секвенции од бинарни броеви (1/0) со должина 3.
Шифрирањето треба да се одвива на следниот начин:

 во првата бинарна секвенца, за секој еден знак да се испечати 0 доколку знакот


е некој специјален знак, а 1 во спротивно.
 во втората бинарна секвенца, за секој еден знак да се испечати 0 доколку
знакот е буква, а 1 во спротивно.
Пример: Влез:
/ * 1

Излез:
001
111

#include <stdio.h>
int main () {

char uno,dos,tres;
scanf("%c %c %c", &uno, &dos, &tres);
printf("%d%d%d \n", (uno>='A'&& uno<='Z') || (uno>='a' && uno<='z') || (uno>='0'
&& uno<='9'), (dos>='A'&& dos<='Z') || (dos>='a' && dos<='z') || (dos>='0' &&
dos<='9'),(tres>='A'&& tres<='Z')|| (tres>='a'&& tres<='z') || (tres>='0' &&
tres<='9'));
printf("%d%d%d", !((uno>='A' && uno<='Z') || (uno>='a' && uno<='z')), !
((dos>='A'&& dos<='Z') || (dos>='a' && dos<='z')),!((tres>='A'&& tres<='Z')||
(tres>='a'&& tres<='z')));

return 0;
}

You might also like