1. Контролни структури за избор if-else
1.1. Потсетување од предавања

if ( uslov ) {
naredbi_za_vistinit_uslov ;
}
else {
naredbi_za_nevistinit_uslov ;
}
1.2. Што ќе отпечати?
ex4_1.c
#include <stdio.h>
int main() {
int m = 5, n = 10;
if (m > n)
++m;
++n;
printf("m = %d, n = %d\n", m, n);
return 0;
}
m = 5, n = 11
2. Задачи
2.1. Задача 1
Да се напише програма со која ќе се отпечати максимумот од два броја чии вредности се читаат од тастатура.
p4_1a.c
#include <stdio.h>
int main() {
int a, b;
printf("Vnesi 2 broja: \n");
scanf("%d %d", &a, &b);
if (a > b)
printf("Maximum: %d\n", a);
else
printf("Maximum: %d\n", b);
return 0;
}
p4_1b.c
#include <stdio.h>
int main() {
int a, b;
printf("Vnesi 2 broja: \n");
scanf("%d %d", &a, &b);
printf("Maximum: %d\n", (a > b) ? a : b);
return 0;
}
2.2. Задача 2
Да се напише програма што проверува дали дадена година што се вчитува од тастатура е престапна или не и на екран печати соодветна порака.
1976, 2000, 2004, 2008, 2012…
Годината е престапна ако е делива со 4 но не е делива со 100 или е делива со 400. |
p4_2.c
#include <stdio.h>
int main() {
int godina;
printf ("Vnesi godina: \n");
scanf ("%d", &godina);
if ((godina % 4 == 0 && godina % 100 != 0) || godina % 400 == 0)
printf("%d e prestapna.\n", godina);
else
printf("%d e prosta.\n", godina);
return 0;
}
2.3. Задача 3
Од тастатура се внесуваат координати на една точка од рамнина. Да се напише програма со која ќе се испечати на кој квадрант припаѓа внесената точка.

p4_3a.c
#include <stdio.h>
int main () {
float x, y;
printf("Vnesi koordinati \n");
scanf("%f %f", &x, &y);
if (x > 0 && y > 0)
printf("I kvadrant.\n");
if (x > 0 && y < 0)
printf("IV kvadrant.\n");
if (x < 0 && y > 0)
printf("II kvadrant.\n");
if (x < 0 && y < 0)
printf("III kvadrant.\n");
return 0;
}

p4_3b.c
#include <stdio.h>
int main () {
float x, y;
printf ("Vnesi koordinati \n");
scanf ("%f %f", &x, &y);
if (x > 0)
if (y > 0)
printf("I kvadrant.\n");
else
printf("IV kvadrant.\n");
else if (y > 0)
printf("II kvadrant.\n");
else
printf("III kvadrant.\n");
return 0;
}
-
Дали ваквата програма ги опфаќа сите случаи?
-
Дали ќе испечати нешто за која било внесена точка?
p4_3c.c
#include <stdio.h>
int main () {
float x, y;
printf ("Vnesi koordinati \n");
scanf ("%f %f", &x, &y);
if (x > 0)
if (y > 0)
printf("I kvadrant.\n");
else if (y < 0)
printf("IV kvadrant.\n");
else
printf("Pozitivna X oska.\n");
else if (x < 0)
if (y > 0)
printf("II kvadrant.\n");
else if (y < 0)
printf("III kvadrant.\n");
else
printf("Negativna X oska.\n");
else
if (y > 0)
printf("Pozitivna Y oska.\n");
else if (y < 0)
printf("Negativna Y oska.\n");
else
printf("Koordinaten pocetok.\n");
return 0;
}
2.4. Задача 4
Да се напише програма што за внесен број на поени од испит ќе генерира соодветна оценка според следната табела:
Поени | Оценка |
---|---|
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
p4_4a.c
#include <stdio.h>
int main () {
int poeni, ocenka = 0;
printf("Vnesi poeni: \n");
scanf("%d", &poeni);
if (poeni >= 0 && poeni <= 50) ocenka = 5;
else if (poeni > 50 && poeni <= 60) ocenka = 6;
else if (poeni > 60 && poeni <= 70) ocenka = 7;
else if (poeni > 70 && poeni <= 80) ocenka = 8;
else if (poeni > 80 && poeni <= 90) ocenka = 9;
else if (poeni > 90 && poeni <= 100) ocenka = 10;
else printf("Nevalidna vrednost na poeni!\n");
printf("Ocenka %d\n", ocenka);
return 0;
}
p4_4b.c
#include <stdio.h>
int main () {
int poeni, ocena = 0;
printf("Vnesi poeni: \n");
scanf("%d", &poeni);
if (poeni < 0 || poeni > 100)
printf("Nevalidna vrednost za poeni!\n");
else {
if (poeni > 90) ocena = 10;
else if (poeni > 80) ocena = 9;
else if (poeni > 70) ocena = 8;
else if (poeni > 60) ocena = 7;
else if (poeni > 50) ocena = 6;
else ocena = 5;
printf("Ocena %d\n", ocena);
}
return 0;
}
2.5. Задача 5
Да се промени претходната програма, така што покрај оценките ќе се испечатат и знаците + и – во зависност од вредноста на последната цифра на поените:
последна цифра | печати |
---|---|
|
- |
|
prazno mesto |
|
+ |
81 = 9- 94 = 10 68 = 7+
За оценката 5 не треба да се додава + или –, а за оценката 10 не треба да се додава знакот +. |
p4_5.c
#include <stdio.h>
int main () {
int poeni, ocenka = 0;
printf("Vnesi poeni: \n");
scanf("%d", &poeni);
if (poeni < 0 || poeni > 100)
printf("Nevalidna vrednost za poeni!\n");
else {
if (poeni > 90) ocenka = 10;
else if (poeni > 80) ocenka = 9;
else if (poeni > 70) ocenka = 8;
else if (poeni > 60) ocenka = 7;
else if (poeni > 50) ocenka = 6;
else ocenka = 5;
char znak = ' ';
int pc = poeni % 10;
if (ocenka != 5) {
if (pc >= 1 && pc <= 3) znak = '-';
else if (ocenka != 10 && (pc >= 8 || pc == 0))
znak = '+';
}
printf("Ocenka %d%c\n", ocenka, znak);
}
return 0;
}
2.6. Задача 6
Од тастатура се внесуваат должини на три отсечки во произволен редослед. Да се напише програма што ќе провери дали од отсечките може да се конструира триаголник, при што ако може, да се провери дали истиот е правоаголен и да се пресмета неговата плоштина. Во спротивно, треба да се испечатат соодветни пораки.
p4_6.c
#include <stdio.h>
int main() {
float a, b, c;
printf("Vnesi dolzini na strani: \n");
scanf("%f %f %f", &a, &b, &c);
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
printf("Ne moze da se konstruira triagolnik.\n");
else {
if (a >= b) {
float tmp = a;
a = b;
b = tmp;
}
if (a >= c) {
float tmp = a;
a = c;
c = tmp;
}
if (b >= c) {
float tmp = b;
b = c;
c = tmp;
} // po ova najdolgata strana kje bide vo c
if (c * c == a * a + b * b) {
printf("Tragolnikot e pravoagolen.\n");
printf("Ploshtinata mu e %7.3f\n", a * b / 2);
} else {
printf("Tragolnikot NE e pravoagolen.\n");
}
}
return 0;
}
2.7. Задача 7
Од тастатура се внесуваат должини на три отсечки во произволен редослед. Да се провери дали од дадените отсечки може да се конструра триаголник. Ако може, да се испечати дали триаголникот е разностран, рамностран или рамнокрак и да му се пресмета плоштината.
p4_7.c
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c;
printf("Vnesi dolzini na strani: \n");
scanf("%f %f %f", &a, &b, &c);
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
printf("Ne moze da se konstruira triagolnik.\n");
else {
if (a == b && b == c)
printf("Tragolnikot e ravnostran.\n"); // equilateral
else if (a == b || b == c || a == c)
printf("Tragolnikot e ravnokrak.\n"); // isosceles
else
printf("Tragolnikot e raznostran.\n"); // scalene
float p, s = (a + b + c) / 2;
p = sqrt(s * (s - a) * (s - b) * (s - c));
printf("Ploshtinata mu e %7.3f\n", p);
}
return 0;
}
3. За дома
3.1. Задача 1
За три внесени отсечки да се одреди дали е можно да се конструира триаголник и притоа дали триаголникот е правоаголен, остроаголен или тапоаголен.
3.2. Задача 2 *
За даден центар на кружница и нејзин радиус да се одреди низ кои квадранти минува кружницата.