/* * cycles.cpp * * Created on: 23.10.2014 г. * Author: trifon */ #include #include using namespace std; int fact() { int n; cout << "n = "; cin >> n; long fact = 1; for( int i = 2 ; i <= n ; i++ ) fact *= i; cout << n << "! = " << fact << endl; return 0; } int strange_sum() { double x; int n; cout << "n = "; cin >> n; cout << "x = "; cin >> x; double sum = 0; for( int i = 0; i <= n; i++) { long fact = 1; for( int j = 2 ; j <= i ; j++ ) fact *= j; sum += pow(x, i) / fact; } cout.precision(20); cout << "sum = " << sum << endl; return 0; } int stranger_sum() { double x; int n; cout << "n = "; cin >> n; cout << "x = "; cin >> x; double sum = 0; double y = 1; for( int i = 0; i <= n; i++) { // y = y(i) sum += y; // трябва да променим y, така че y = y(i+1) y *= x / (i + 1); } cout.precision(20); cout << "sum = " << sum << endl; return 0; } int strangest_sum() { double x; int n; cout << "n = "; cin >> n; cout << "x = "; cin >> x; double sum = 0; double y = 1; long fact = 1; for( int i = 0; i <= n; i++) { sum += pow(x, i) / fact; // трябва да променим fact fact *= i + 1; } cout.precision(20); cout << "sum = " << sum << endl; return 0; } int weird_sum() { double x; int n; cout << "n = "; cin >> n; cout << "x = "; cin >> x; double sum = 1; double y = 1; for( int i = 1; i <= n; i++) { // y = y(i-1) // трябва да променим y, така че y = y(i) y *= x / i; sum += y; } cout.precision(20); cout << "sum = " << sum << endl; return 0; } int div3max() { int n; cout << "n = "; cin >> n; // int count = 0, max = n*n*n - 5*n - 8; int count = 0, max = -12; // f(1) for(int i = 1; i <= n; i++) { int x = n*n*n - 5*i*i*n - 8*i; if (x % 3 == 0) count++; if (x > max) max = x; } cout << "Броят на числата, кратни на 3 е " << count << endl; cout << "Максимумът е " << max << endl; return 0; } int factw() { int n; cout << "n = "; cin >> n; long fact = 1; int i = 2 ; while( i <= n ) { fact *= i; i++; } // i > n cout << n << "! = " << fact << endl; return 0; } int average() { int x = 1; int sum = 0, count = -1; while (x != 0) { cout << "Въведете число: ";cin >> x; // if (x != 0) { sum += x; count++; // } } /* cout << sum << endl; cout << count << endl; */ cout << "Средното аритметично е "; cout << (double)sum / count << endl; return 0; } int average_better() { int x = 1; int sum = 0, count = 0; while (cin) { cout << "Въведете число: ";cin >> x; if (cin) { sum += x; count++; } } cout << "Средното аритметично е "; cout << (double)sum / count << endl; return 0; } int weirdest_sum() { double x, eps; cout << "x = ";cin >> x; cout << "eps = "; cin >> eps; double sum = 0, y = 1; int i = 0; while (fabs(y) >= eps) { sum += y; y *= x / (i + 1); i++; } // fabs(y) < eps cout.precision(20); cout << "sum = " << sum << endl; return 0; } int first_digit() { int n; cout << "n = ";cin >> n; int d = n; while (d >= 10) d /= 10; // d < 10 // d е първата цифра на първоначалното n cout << "Първата цифра на " << n << " е " << d << endl; return 0; } int digit5() { int n; cout << "n = ";cin >> n; int d = n; bool hasDigit5 = false; while (d != 0 && !hasDigit5) { // d % 10 е последната цифра на d if (d % 10 == 5) hasDigit5 = true; // изтриваме последната цифра на d d /= 10; } // d == 0 || hasDigit5 cout << "В числото " << n; if (!hasDigit5) cout << " НЕ"; cout << " се съдържа 5" << endl; } int digit5better() { int n; cout << "n = ";cin >> n; int d = n; while (d % 10 != 5 && d != 0) // изтриваме последната цифра на d d /= 10; // ДА: d % 10 == 5 // НЕ: d == 0 // d % 10 == 5 || d == 0 cout << "В числото " << n; if (d == 0) // <-> d % 10 != 5 cout << " НЕ"; cout << " се съдържа 5" << endl; return 0; } int average_best() { int x; int sum = 0, count = -1; do { cout << "Въведете число: ";cin >> x; sum += x; count++; } while (x != 0); if (count > 0) { cout << "Средното аритметично е "; cout << (double)sum / count << endl; } return 0; } int div7() { int n; cout << "n = "; cin >> n; int i = 1; // int x = n*n*n - 5*i*i*n - 8*i; int x; do { x = n*n*n - 5*i*i*n - 8*i; i++; } while (x % 7 != 0 && i <= n); // ДА: x % 7 == 0; // НЕ: i > n if (x % 7 == 0) cout << "Има"; else cout << "Няма"; /* !!! if (i > n) cout << "Няма"; else cout << "Има"; */ cout << " число, кратно на 7." << endl; return 0; } int prime() { int n; cout << "n = "; cin >> n; // искаме да проверим има ли делител на // n между 2 и n - 1 int i = 2; while (n % i != 0 && i < n) i++; // ДА, ИМА ДЕЛИТЕЛ: n % i == 0 // НЕ, НЯМА ДЕЛИТЕЛ: i == n cout << n; if (i != n) cout << " НЕ"; cout << " е просто" << endl; return 0; } int print_clock() { for(int hours = 0; hours < 24; hours++) for(int minutes = 0; minutes < 60; minutes++) { cout << hours << ':'; cout << ((minutes < 10) ? "0" : ""); cout << minutes << endl; } return 0; } int triangle1() { int n; cout << "n = "; cin >> n; for(int i = 1; i <= n; i++) { // Извеждаме ред с номер i // Трябва да изведем всички числа от 1 до i, вкл. for(int j = 1; j <= i ; j++) cout << j << ' '; cout << endl; } return 0; } int triangle2() { int n; cout << "n = "; cin >> n; // горна част // for(int i = 1, k = 1; i <= n; i++, k += 2) { for(int i = 1; i <= n; i++) { // извеждаме ред с номер i от горната част // извеждаме числата от k до i (намаляващи!) for(int j = 2 * i - 1; j >= i; j--) cout << j << ' '; cout << endl; } // долна част for(int i = 1; i <= n - 1; i++) { // извеждаме ред с номер i от долната част for(int j = 2 * n - i - 1; j >= n; j--) cout << j << ' '; cout << endl; } return 0; } int domino() { /* for(int i = 0; i <= 6; i++) for(int j = 0; j <= i; j++) cout << '[' << i << '|' << j << ']' << endl; */ int count = 0; for(int i = 0; i <= 6; i++) for(int j = i; j <= 6; j++) { cout << '[' << i << '|' << j << ']' << endl; count++; } cout << count << endl; return 0; } int samedigits() { int n; cout << "n = "; cin >> n; // за всяка цифра int d = n, a = 0; bool found = false; while (d >= 10 && !found) { // с поредната цифрата a == d % 10 a = d % 10; // да проверим дали a се среща в n? int e = d / 10; while (e % 10 != a && e != 0) // изтриваме последната цифра на e e /= 10; // e % 10 == a || e == 0 /* if (e % 10 == a) cout << "Цифрата " << a << " се повтаря!" << endl; */ // if (e % 10 == a) if (e != 0) found = true; d /= 10; } // found == true || d < 10 if (found) cout << "Цифрата " << a << " се повтаря!" << endl; else cout << "Няма повтарящи се цифри!" << endl; return 0; } // проверява дали d се среща в n // без странични ефекти! bool hasDigit(int n, int d) { if (n == 0) return d == 0; // n > 0 <--> в n има още цифри // n % 10 != d <--> последната цифра на n не е d while (n % 10 != d && n > 0) // изтриваме последната цифра на n n /= 10; // n <= 0 <--> в n няма повече цифри // n % 10 == d <--> последната цифра на n e равна на d /* if (n > 0) return true; else return false; */ return n > 0; } // проверява дали n има еднакви цифри // true <-> има две еднакви цифри // false <-> има само различни цифри bool sameDigits(int n) { while (n >= 10 && !hasDigit(n / 10, n % 10)) n /= 10; // hasDigit(остатъка от числото, поредната цифра) // hasDigit(n / 10, n % 10) // n < 10 <-> няма повече цифри return n >= 10; } int samedigits_better() { int n; cout << "n = "; cin >> n; // за всяка цифра int d = n, a = 0, e = 0; while (d >= 10 && e == 0) { // с поредната цифрата a == d % 10 a = d % 10; // да проверим дали a се среща в d / 10? e = d / 10; // да проверим дали a се среща в e? while (e % 10 != a && e != 0) // изтриваме последната цифра на e e /= 10; // e % 10 == a || e == 0 d /= 10; } // e != 0 || d < 10 if (e != 0) cout << "Цифрата " << a << " се повтаря!" << endl; else cout << "Няма повтарящи се цифри!" << endl; return 0; } void hasDigitTest() { int n, d; cin >> n >> d; cout << hasDigit(n, d) << endl; cout << n << d << endl; } void test(bool ok) { if (ok) cout << "OK!" << endl; else cout << "FAIL!" << endl; } void hasDigitUnitTest() { test(hasDigit(123, 1) == true); test(hasDigit(120, 0) == true); test(hasDigit(555555, 5) == true); test(hasDigit(1287, 6) == false); test(hasDigit(123, 0) == false); test(hasDigit(555555, 7) == false); test(hasDigit(0, 0) == true); } void sameDigitsUnitTest() { test(sameDigits(123) == false); test(sameDigits(1231) == true); test(sameDigits(55555) == true); test(sameDigits(5) == false); test(sameDigits(0) == false); test(sameDigits(1020) == true); test(sameDigits(10000001) == true); } int main() { /* fact(); factw(); */ /* strange_sum(); stranger_sum(); strangest_sum(); weird_sum(); */ //div3max(); //average(); //average_better(); //weird_sum(); //weirdest_sum(); // first_digit(); // digit5(); // digit5better(); // prime(); // print_clock(); // triangle1(); //triangle2(); //domino(); // samedigits(); hasDigitTest(); hasDigitUnitTest(); sameDigitsUnitTest(); return 0; }