1

(14 відповідей, залишених у C++)

Перепрошую за нечітке формулювання умови. Таки малось на увазі, що буде створено велику чергу з 10 000+ елементів та виводити кожен 1000 елемент на екран. Тому діапазон, в якому вибирати випадкові числа, не потрібен у даній задачі, проте дякую за додаткове пояснення

2

(14 відповідей, залишених у C++)

Попередня назва: функція rand

Загалом, суть завдання полягає у тому, щоб заповнити чергу рандомними числами (велике число, 10 000+), використовуючи STL, виконати функції занесення елемента у чергу, вилучення елемента з черги, виведення кожного 1000 елемента екран. Проте функція заповнює лиш одним і тим самим числом, хоча в прикладах з інтернету все так само, як у цьому коді. В чому помилка?

#include <iostream>
#include <queue>
#define N 10000
using namespace std;

int main(void)
{
    setlocale(LC_ALL, "ukr");
    queue < int > ourQueue;
    cout << "Місце у пам'яті = " << ourQueue.size() << endl;
  
    for (int i = 0; i < N; i++) {
        ourQueue.push(rand());
    }

    cout << "Місце у пам'яті = " << ourQueue.size() << endl;
    cout << "І у байтах =" << ourQueue.size() * sizeof(int) << endl;

    for (int i = 0; i < 10; i++) {
        cout << ourQueue.front() << "\t";
    }

    while (!ourQueue.empty())
    {
        ourQueue.pop();
    }
    system("pause");
    
}

3

(5 відповідей, залишених у C++)

Дякую велике!

topprogrammer написав:
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
using namespace std;
#define MAX 3
class Triangle {
private:
    double *abc;                  //cторони
public:
    Triangle();            //  конструтор без параметрів
    Triangle(double abc[]); // конструтор з параметром
    ~Triangle();
    double Area();
    double Per();
    bool Check();
    double printAngle();
};
Triangle::Triangle() {    // конструктор без параметрів 
    abc = new double[MAX];
    abc[0] = 4.0;
    abc[1] = 3.0;
    abc[2] = 5.0;
}
Triangle::Triangle(double abc[]) { // конструктор з параметром
    this->abc = new double[MAX];
    this->abc[0] = abc[0];
    this->abc[1] = abc[1];
    this->abc[2] = abc[2];
    if (Check()) {
        printf("\nCorrect input in constructor");
    }
    else {
        printf("\nIncorrect input in constructor");
    }
}
Triangle::~Triangle() {
    delete[] abc;
    abc = nullptr;
}
bool Triangle::Check() {
    if (abc[0] < (abc[1] + abc[2]) && abc[1] < (abc[0] + abc[2]) && abc[2] < (abc[1] + abc[0])) {
        return true;
    }
    else {
        return false;
    }
}
double Triangle::Area() {//площа
    double ar, p;
    p = (abc[1] + abc[2] + abc[0]) / 2;  //півпериметр
    ar = sqrt(p * (p - abc[0]) * (p - abc[1]) * (p - abc[2]));
    return ar;
}
double Triangle::Per() {          //периметр
    return (abc[0] + abc[2] + abc[1]);
}
double Triangle::printAngle() {  // квадрати сторін будуть a2, b2, c2
    double a2 = pow(abc[0], 2);
    double b2 = pow(abc[1], 2);
    double c2 = pow(abc[2], 2);
    // довжини сторін a, b, c
    double a = sqrt(a2);
    double b = sqrt(b2);
    double c = sqrt(c2);
    // теорема косинусів
    double alpha = acos((b2 + c2 - a2) / (2 * b * c));
    double betta = acos((a2 + c2 - b2) / (2 * a * c));
    double gamma = acos((a2 + b2 - c2) / (2 * a * b));
    // перевід з радіан в градуси
    alpha = alpha * 180 / M_PI;
    betta = betta * 180 / M_PI;
    gamma = gamma * 180 / M_PI;

    //виведення
    cout << "\nalpha : " << alpha << endl;
    cout << "betta : " << betta << endl;
    cout << "gamma : " << gamma << endl;
    return 0;
}
int main() {
    double val[MAX];
    cout << "Input values" << endl;
    cin >> val[0];
    cin >> val[1];
    cin >> val[2];

    Triangle trian1(val);
    cout << " with param" << endl;
    cout << "Area " << trian1.Area() << endl;
    cout << "Perimetr  " << trian1.Per() << endl;

    Triangle trian2;
    cout << " without param" << endl;
    cout << "Area " << trian2.Area() << endl;
    cout << "Perimetr  " << trian2.Per() << endl;

    trian2.printAngle();
    system("PAUSE");
    return 0;
}

4

(5 відповідей, залишених у C++)

Завдання полягає в тому, що у нас є клас трикутник і нам потрібно знайти його площу, периметр і значення кутів. Проте сторони повинні бути в масиві і це має бути з використанням динамічної пам'ятті. З конструктором без параметрів все гаразд, він справно працює, проте коли користувач вводить значення - програма вилітає. У чому помилка?

#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
using namespace std;
#define MAX 3
class Triangle {
private:
    double *abc;                  //cторони
public:
    Triangle();            //  конструтор без параметрів
    Triangle(double abc[]); // конструтор з параметром
    ~Triangle();
    double Area();
    double Per();
    bool Check();
    double printAngle();
};
Triangle::Triangle() {    // конструктор без параметрів 
    abc = new double[MAX];
    abc[0] = 4.0;
    abc[1] = 3.0;
    abc[2] = 5.0;
}
Triangle::Triangle(double abc[]) { // конструктор з параметром
    this->abc[0] = abc[0];
    this->abc[1] = abc[1];
    this->abc[2] = abc[2];
    if (Check()) {
        printf("\nCorrect input in constructor");
    }
    else {
        printf("\nIncorrect input in constructor");
    }
}
Triangle::~Triangle() {
    delete[] abc;
    abc = nullptr;
}
bool Triangle::Check() {
    if (abc[0] < (abc[1] + abc[2]) && abc[1] < (abc[0] + abc[2]) && abc[2] < (abc[1] + abc[0])) {
        return true;
    }
    else {
        return false;
    }
}
double Triangle::Area() {//площа
    double ar, p;
    p = (abc[1] + abc[2] + abc[0]) / 2;  //півпериметр
    ar = sqrt(p * (p - abc[0]) * (p - abc[1]) * (p - abc[2]));
    return ar;
}
double Triangle::Per() {          //периметр
    return (abc[0] + abc[2] + abc[1]);
}
double Triangle::printAngle() {  // квадрати сторін будуть a2, b2, c2
    double a2 = pow(abc[0], 2);
    double b2 = pow(abc[1], 2);
    double c2 = pow(abc[2], 2);
    // довжини сторін a, b, c
    double a = sqrt(a2);
    double b = sqrt(b2);
    double c = sqrt(c2);
    // теорема косинусів
    double alpha = acos((b2 + c2 - a2) / (2 * b * c));
    double betta = acos((a2 + c2 - b2) / (2 * a * c));
    double gamma = acos((a2 + b2 - c2) / (2 * a * b));
    // перевід з радіан в градуси
    alpha = alpha * 180 / M_PI;
    betta = betta * 180 / M_PI;
    gamma = gamma * 180 / M_PI;

    //виведення
    cout << "\nalpha : " << alpha << endl;
    cout << "betta : " << betta << endl;
    cout << "gamma : " << gamma << endl;
    return 0;
}
int main() {
    double val[MAX];
    cout << "Input values" << endl;
    cin >> val[0], val[1], val[2];

    Triangle trian1(val);
    cout << " with param" << endl;
    cout << "Area " << trian1.Area() << endl;
    cout << "Perimetr  " << trian1.Per() << endl;

    Triangle trian2;
    cout << " without param" << endl;
    cout << "Area " << trian2.Area() << endl;
    cout << "Perimetr  " << trian2.Per() << endl;

    trian2.printAngle();
    system("PAUSE");
    return 0;
}

5

(11 відповідей, залишених у C++)

Гаразд, але як найоптимальніше записувати той текст? В динамічну пам'ять, а вже звідти по реченню витягувати в окремі масиви?

6

(11 відповідей, залишених у C++)

P.Y. написав:

У чому полягає специфіка статистики для українського тексту порівняно, наприклад, з англійським?

В тому, що користувач вводить український текст в консоль, а вже з неї те все зчитується в програму. Але ж українських літер немає в ASCII таблиці, що тоді робити? Як мати змогу оперувати з тими даними?

7

(11 відповідей, залишених у C++)

FakiNyan написав:

я б регулярками робив, бо то весело
https://regex101.com/r/4z2K28/1/

  А як це використати у С?

8

(11 відповідей, залишених у C++)

koala написав:
GROUND07 написав:

максимально можливу статистику

Га?

Ну от наприклад кількість слів, речень, абзаців, букв, знаків пунктуації, який символ найчастіше повторюється, яка середня довжина речення і тд

9

(11 відповідей, залишених у C++)

Потрібно витягнути максимально можливу статистику з введеного користувачем українського тексту. Проблема полягає в тому, що невідомо якої довжини є речення. Мабуть потрібно створити масив у динамічній пам'яті і кожне окреме речення записати потім у новий. Підкажіть як це можна найефективніше зробити. Подякую, якщо наочно покажете на коді