Аудиториски вежби 5
Да се напише програма што на екран ќе ги испечати сите четири-цифрени броеви кај кои збирот на трите најмалку значајни цифри е еднаков со најзначајната цифра.
4031 (4=0+3+1), 5131 (5=1+3+1)
Решение:
#include <iostream>
using namespace std;
int main() {
int i, n, sum, first_digit, digit;
= 1000;
i while (i <= 9999) {
= i / 1000;
first_digit = i % 1000;
n = 0;
sum while (n > 0) {
= n % 10;
digit += digit;
sum /= 10;
n }
if (sum == first_digit) cout << i << "\t";
++;
i}
return 0;
}
Да се напише програма што ќе ги испечати сите броеви од зададен опсег кои се читаат исто и одлево надесно и оддесно налево.
пример броеви
12321 5061605
Решение:
#include <iostream>
using namespace std;
int main() {
int i, from, to, temp, op, digit;
>> from >> to;
cin for (i = from; i <= to; i++) {
= i;
temp = 0;
op while (temp > 0) {
= temp % 10;
digit = op * 10 + digit;
op /= 10;
temp }
if (op == i) cout << i << "\t";
}
return 0;
}
Да се напише програма што од непознат број на цели броеви што се внесуваат од тастатура ќе го определи бројот со максимална вредност. Програмата завршува ако се внесе невалидна репрезентација на број.
Решение:
#include <iostream>
using namespace std;
int main() {
int n, max;
if (cin >> max) {
while (cin >> n) {
if (max < n) {
= n;
max }
}
<< max;
cout } else {
<< "Ne e vnesen broj.";
cout }
return 0;
}
Да се напише програма што од непознат број на цели броеви што се внесуваат од тастатура ќе го определи бројот со максимална вредност. Притоа, броевите поголеми од 100 не се земаат предвид т.е. се игнорираат. Програмата завршува ако се внесе невалидна репрезентација на број.
Решение:
#include <iostream>
using namespace std;
int main() {
int n, max;
if (cin >> max) {
while (cin >> n) {
if (n > 100) continue;
if (max < n) {
= n;
max }
}
<< max;
cout } else {
<< "Ne e vnesen broj.";
cout }
return 0;
}
Да се напише програма што од непознат број на цели броеви што се внесуваат од тастатура ќе ги определи двата броја со најголеми вредности. Програмата завршува ако се внесе невалидна репрезентација на број.
пример
Ако се внесат броевите 2 4 7 4 2 1 8 6 9 7 10 3 програмата ќе отпечати 10 и 9.
Решение:
#include <iostream>
using namespace std;
int main() {
int n, max1, max2, temp;
if (cin >> max1 >> max2) {
if (max2 > max1){
= max1;
temp = max2;
max1 = temp;
max2 }
while(cin >> n) {
if(n > max1){
= max1;
max2 = n;
max1 } else if (n > max2) {
= n;
max2 }
}
<< max1 << endl;
cout << max2 << endl;
cout } else {
<< "Vnesete najmalku 2 broja";
cout }
return 0;
}
Да се напише програма што од N цели броеви внесени од тастатура ќе ја определи разликата од сумите на броевите на парни и непарни позиции (според редоследот на внесување). Ако оваа разлика е помала од 10 на екран се печати “Dvete sumi se slicni”, а во спротивно “Dvete sumi mnogu se razlikuvaat”.
пример
За броевите внесени од тастатура:
2 4 3 4 2 1 1 6 1 7
suma_neparni_pozicii = 9
suma_parni_pozicii = 22
На екран ќе се испечати:
Dvete sumi mnogu se razlikuvaat
Решение:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int difference, i, n = 0, number = 0;
int sum_odd_positions = 0, sum_even_positions = 0;
>> n;
cin for (i = 1; i <= n; i++) {
>> number;
cin if (i % 2) {
+= number;
sum_odd_positions } else {
+= number;
sum_even_positions }
}
= sum_even_positions - sum_odd_positions;
difference if (abs(difference) < 10){
<< "Dvete sumi se slicni";
cout } else {
<< "Dvete sumi mnogu se razlikuvaat";
cout }
return 0;
}
Да се напише програма што од непознат број на цели броеви кои се внесуваат од тастатура ќе ги определи позициите (редните броеви на внесување) на двата последователни броја што ја имаат најголемата сума. Програмата завршува ако едно по друго (последователно) се внесат два негативни цели броја.
Решение:
#include <iostream>
using namespace std;
int main() {
int pol_position, position, max_sum, sum, previous, next;
>> previous >> next;
cin = position = 2;
pol_position = sum = previous + next;
max_sum while (1) {
if (previous < 0 && next < 0) {
break;
}
= previous + next;
sum if (sum > max_sum) {
= sum;
max_sum = position;
pol_position }
= next;
previous >> next;
cin ++;
position}
if (position > 2)
<< "Broevite se na pozicii " << pol_position - 1 << " i " << pol_position << " i nivnata suma e " << max_sum;
cout return 0;
}
Со Морзеовата азбука, знаците (букви, цифри) се претставуваат со точки и цртички. Цифрите од 0 до 4 се претставуваат, соодветно, на следниот начин: “—–”, “.—-”, “..—”, “…–”, “….-”. Од тастатура се внесува даден природен број N (N<100 000), и потоа се внесуваат N други природни броеви. За секој од внесените броеви, во посебен ред, да се отпечати остатокот при делењето на тој број со 5 во Морзеов код.
Решение:
#include <iostream>
using namespace std;
int main() {
int n, current_number;
>> n;
cin
for (int i = 0; i < n; ++i) {
>> current_number;
cin int rest = current_number%5;
if (rest == 0) {
<<"-----"<<endl;
cout} else if (rest == 1) {
<<".----"<<endl;
cout} else if (rest == 2) {
<<"..---"<<endl;
cout} else if (rest == 3) {
<<"...--"<<endl;
cout} else {
<<"....-"<<endl;
cout}
}
return 0;
}
Бројаница е „број“ добиен со слепување на првите N броеви, по редослед. На пример, за N=4 тоа е 1234, за N=11 тоа е 1234567891011. Обратна бројаница е слично како погоре, но се започнува од N па броевите се слепуваат обратно. Така за N=5 тоа е 54321.
За дадено N, на екран испишете ги по редослед: Бројаница за 1, обратна бројаница за 1, бројаница за 2, обратна бројаница за 2…, се така до обратна бројаница за N.
На пример, за N=5 треба да отпечатите:
1
1
12
21
123
321
1234
4321
12345
54321
Решение:
#include <iostream>
using namespace std;
int main() {
int i, j, N;
>> N;
cin
for (i = 1; i <= N; i++) {
for (j = 1; j <= i; j++) {
<< j;
cout }
<< endl;
cout for (j = i; j > 0; j--) {
<< j;
cout }
<< endl;
cout }
return 0;
}
Среден број е број кај кој секоја следна цифра е помала на претходната (гледајќи од најзначајната кон најмалку значајната). На пример, 7421. Едноцифрените броеви не се средни броеви.
Да се напише програма во која прво се внесува број N кој го определува вкупниот број на броеви кои ќе бидат внесени од тастатура. Потоа се внесуваат N-те броеви, еден по еден. На излез, потребно е да се испечатат сите броеви кои го исполнуваат условот за среден број, а потоа да се отпечати и минималниот среден број од внесените броеви.
Доколку не постои број кој го задоволува условот се печати вредност -1.
Пример за влез:
5
435
643
12234
721
7720
Пример за излез:
643
721
643
Решение:
#include <iostream>
using namespace std;
int main() {
int num, i, tmp, min = -1, N;
>> N;
cin
for (i = 0; i < N; i++) {
>> num;
cin = num;
tmp while (tmp > 9) {
if (tmp % 10 >= (tmp / 10) % 10) break;
/= 10;
tmp }
if (tmp < 10) {
<< num << endl;
cout if (min == -1) min = num;
else if (num < min) min = num;
}
}
<< min;
cout return 0;
}
#include <iostream>
using namespace std;
int main() {
char odgovor;
<< "Dali SP e lesen predmet? (d/n): "<<endl;
cout >> odgovor;
cin switch (odgovor) {
case 'D':
case 'd':
<< "I jas mislam taka!" << endl;
cout break;
case 'N':
case 'n':
<< "Navistina?" << endl;
cout break;
default:
<< "Ova e DA ili NE?" << endl;
cout }
return 0;
}
#include <iostream>
using namespace std;
int main() {
int vrednost, izbor;
<< "Внесете почетна вредност: ";
cout >> vrednost;
cin
do {
do {
<< "Мени:" << endl;
cout << "1 - Зголеми" << endl;
cout << "2 - Намали" << endl;
cout << "3 - Дуплирај" << endl;
cout << "0 - Крај" << endl;
cout << "Избор: ";
cout >> izbor;
cin } while (izbor < 0 || izbor > 3);
switch (izbor) {
case 1:
++;
vrednostbreak;
case 2:
--;
vrednostbreak;
case 3:
*= 2;
vrednost break;
case 0:
<< "Крај" << endl;
cout break;
default:
<< "Невалиден избор!" << endl;
cout break;
}
<< "Вредност = " << vrednost << endl;
cout } while (izbor != 0);
return 0;
}
Да се напише програма што за знак внесен од тастатура ќе одреди дали е самогласка, цифра или другo.
#include <iostream>
using namespace std;
int main() {
char znak;
<< "Enter a character: ";
cout >> znak;
cin
switch (znak) {
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U':
<< "Самогласка: " << znak << endl;
cout break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
<< "Цифра: " << znak << endl;
cout break;
default:
<< "Внесено е: " << znak << endl;
cout }
return 0;
}
Да се напише програма што ќе претставува едноставен калкулатор. Во програмата се вчитуваат два броја и оператор во формат:
operator broj2 broj1
По извршената операција во зависност од операторот, се печати резултатот во формат:
operator broj2 = rezultat broj1
Решение:
#include <iostream>
using namespace std;
int main() {
double broj1, broj2, rezultat;
char operator;
<< "Внесете два броја и оператор (пр. 5 + 3): ";
cout >> broj1 >> operator >> broj2;
cin
switch (operator) {
case '+':
= broj1 + broj2;
rezultat break;
case '-':
= broj1 - broj2;
rezultat break;
case '*':
= broj1 * broj2;
rezultat break;
case '/':
if (broj2 != 0) {
= broj1 / broj2;
rezultat } else {
<< "Делење со 0 не е дозволено." << endl;
cout return 1;
}
break;
default:
<< "Непознат оператор." << endl;
cout return 1;
}
<< broj1 << ' ' << operator << ' ' << broj2 << " = " << rezultat << endl;
cout
return 0;
}