1

Тема: Задачка з використання шаблонів

Я старався.

Умова:
Написати перегружені шаблони функцій для знаходження коренів лінійного (a*x + b = 0) і квадратного (ax^2 + bx + c = 0) рівнянь. У функції передаються коефіцієнти.

Мій код, який не працює:

#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;

template <typename t> t res(t q, t w);
template <typename t> t res(t a, t b, t c);

int main()
{
    system("color A");
    setlocale(LC_CTYPE, "ukr");

    cout << "Лінійне рівняння ax + b = 0" << endl;
    cout << "Введіть коефіцієнти [a,b] --> ";

    int x, y;
    cin >> x >> y;

    cout << "\n" << "Розв'язки: " << res(x, y) << endl;

    cout << "\n=-=-=-=-=-=-=-=-=-=-=-=-=-</>-=-=-=-=-=-=-=-=-=-=-=-=-=" << endl;
    cout << "Квадратне рівняння ax^2 + bx + c = 0" << endl;
    cout << "Введіть коефіцієнти [a,b,c] --> " << endl;

    int a, b, c;
    cin >> a >> b >> c;

    cout << "Розв'язки: " << res(a, b, c) << endl;

    _getch();
    return 0;
}

template <typename t> t res(t q, t w)
{
    return (-b) / a;
}
template <typename t> t res(t a, t b, t c)
{
    t D;
    D = (b*b )- 4 * a*c;

    if (D < 0)
        return -1;
    else if (D == 0)
        return (-b + sqrt(D)) / 2 * a;
    else {
        cout << (-b - sqrt(D)) / 2 * a;
        return (-b + sqrt(D)) / 2 * a;
    }
}

2

Re: Задачка з використання шаблонів

Ви серйозно не змогли прочитати повідомлення компілятора про те, що a і b не оголошені, а замість них оголошені q та w?

Подякували: Joker, koala2

3

Re: Задачка з використання шаблонів

Сорі
Виправив:

Прихований текст
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;

template <typename t> t res(t q, t w);
template <typename t> t res(t a, t b, t c);

int main()
{
    system("color A");
    setlocale(LC_CTYPE, "ukr");

    cout << "Лінійне рівняння ax + b = 0" << endl;
    cout << "Введіть коефіцієнти [a,b] --> ";

    int x, y;
    cin >> x >> y;

    cout << "\n" << "Розв'язки: " << res(x, y) << endl;

    cout << "\n=-=-=-=-=-=-=-=-=-=-=-=-=-</>-=-=-=-=-=-=-=-=-=-=-=-=-=" << endl;
    cout << "Квадратне рівняння ax^2 + bx + c = 0" << endl;
    cout << "Введіть коефіцієнти [a,b,c] --> " << endl;

    int a, b, c;
    cin >> a >> b >> c;

    cout << "Розв'язки: " << res(a, b, c) << endl;

    _getch();
    return 0;
}

template <typename t> t res(t q, t w)
{
    return (-w) / q;
}
template <typename t> t res(t a, t b, t c)
{
    t D;
    D = (b*b )- 4 * a*c;

    if (D < 0)
        return -1;
    else if (D == 0)
        return (-b + sqrt(D)) / 2 * a;
    else {
        cout << (-b - sqrt(D)) / 2 * a;
        return (-b + sqrt(D)) / 2 * a;
    }
}

Все працює, дякую. А ж самому дивно   *FACEPALM*

4

Re: Задачка з використання шаблонів

Вітаю мої соратники.  Слава нашій батьківщині.

Допоможіть вирішити проблему з шаблонами класу.

Не можу зрозуміти в чому помилка.

Клас PRIMA повинен працювати з типами змінних int та float

.........................

#include <stdio.h>
#include <conio.h>

template <class T>

class PRIMA

{
    private:

    T x,y;

    public:

    void rara(T k, T c)

    {
        x=k;

        y=c;


    }

    T mara()

    {
        return x>y ? x : y;
    }


};

void rara(int, int) {}

void rara(char, char) {}

int mara() {}

char mara() {}

void main()

{
    PRIMA k,m;

    clrscr();

    int x=100,y=500,z;

    char a='N',b='S',c;

    k.rara(x, y);

    m.rara(a,b);

    z=k.mara();

    c=m.mara();

    printf("\n\nz=%d",z);

    printf("\n\nc=%c",c);
    
    getch();
}

5

Re: Задачка з використання шаблонів

RAFA, створіть окрему тему для вашого завдання.

Подякували: RAFA1

6

Re: Задачка з використання шаблонів

я не найшов кнопки нова тема.   де вона ?

7

Re: Задачка з використання шаблонів

Шукайте в розділі С/С++ кнопку "Створити нову тему" (знаходиться внизу)

Подякували: koala, RAFA2

8

Re: Задачка з використання шаблонів

добре будемо шукати.