Загрузка...

Помощь в решении учебных задач C++ |

Тема в разделе C/C++ создана пользователем KiL4iK 18 янв 2022. 217 просмотров

  1. KiL4iK
    KiL4iK Автор темы 18 янв 2022 Заблокирован(а) 1089 29 июл 2019
    В тг кину конкретные скрины 8 задачек. Вот половина из них. Естественно заплачу денежку:)
    Также ищу людей которые шарят в C++ на постоянную основу для решения задачек

    Ниже коды которые разбирали на уроках:

    #include <iostream>
    #include <cmath>
    #include <set>

    using namespace std;

    struct Point2D{ double x,y;};
    struct Line2D{ double A,B,C;};

    Line2D makeLine (Point2D M, Point2D N);
    double distance (Line2D l, Point2D M);
    double distance (Point2D M, Point2D N);
    bool onOneSide (Line2D l, Point2D M, Point2D N);
    Line2D makeOrtoLine (Line2D l, Point2D M);
    bool isParalel (Line2D l1, Line2D l2);
    Point2D intersection (Line2D l1, Line2D l2);

    int main()
    {
    Point2D A,B;
    A.x = 0; A.y =0;
    B.x = 1; B.y = 2;
    Line2D l = makeLine(A,B);
    cout<<l.A<<' '<<l.B<<' '<<l.C<<endl;
    return 0;
    }
    bool isParalel (Line2D l1, Line2D l2)
    {
    return l1.A*l2.B == l1.B*l2.A;
    }

    Point2D intersection (Line2D l1, Line2D l2)
    {
    Point2D ans;
    double znam = l1.A*l2.B - l2.A*l1.B;
    ans.x = (l1.B*l2.C - l2.B*l1.C)/ znam;
    ans.y = (l2.A*l1.C - l1.A*l2.C)/ znam;
    return ans;
    }



    Line2D makeOrtoLine (Line2D l, Point2D M)
    {
    Line2D ans;
    ans.A = l.B;
    ans.B = -l.A;
    ans.C = l.A*M.y - l.B*M.x;
    return ans;
    }

    bool onOneSide (Line2D l, Point2D M, Point2D N)
    {
    return (l.A*M.x+l.B*M.y+l.C)*(l.A*N.x+l.B*N.y+l.C) > 0;
    }

    double distance (Point2D M, Point2D N)
    {
    return sqrt((M.x-N.x)*(M.x-N.x) + (M.y-N.y)*(M.y-N.y));
    }


    Line2D makeLine (Point2D M, Point2D N)
    {
    Line2D ans;
    ans.A = N.y - M.y;
    ans.B = M.x - N.x;
    ans.C = M.y*(N.x-M.x) - M.x * (N.y - M.y);
    return ans;
    }

    double distance (Line2D l, Point2D M)
    {
    return fabs(l.A*M.x + l.B*M.y +l.C)/sqrt(l.A*l.A + l.B*l.B);
    }

    double angle (Line2D l1, Line2D l2)
    {
    return acos ((l1.A*l2.A + l1.B*l2.B)/
    (sqrt(l1.A*l1.A + l1.B*l1.B)*sqrt(l2.A*l2.A + l2.B*l2.B)) );
    }


    ********************************************************************************************


    #include <iostream>
    #include <cmath>

    using namespace std;

    int sum (int l, int r, int * mas, int n, int *b, int m,int size);

    int main ()
    {
    int n;
    cin>>n;
    int mas[n];
    for (int i = 0; i < n; i ++) cin >> mas;
    int m = sqrt (n)+1;
    int r = (n+m-1)/(m);
    int b [m]; // Это работает на неточных квадратах
    for (int i =0; i < m ; i ++) b =0;
    int k = 0;
    for (int i =0 ; i < n; i++)
    {
    b[i/r] += mas;
    }
    for (int i = 0; i < n; i ++) cout<< mas << ' ';
    cout<<endl;
    for (int i = 0; i < m; i ++) cout<< b << ' ';
    cout<<endl<<endl;
    cout<< sum(0,n/2,mas,n,b,m,r)<<endl;
    cout<< sum(1,2,mas,n,b,m,r)<<endl;
    cout<< sum(1,7,mas,n,b,m,r)<<endl;
    }


    int sum (int l, int r, int * mas, int n, int * b, int m, int size)
    {
    int ans = 0;
    for (int i = l; i < r; )
    {
    if (i%size == 0 && r - i >=size )
    {
    ans += b[i/size];
    i+=size;
    continue;
    }
    ans += mas[i];
    i++;
    }
    return ans;
    }





    [IMG] [IMG] [IMG] [IMG][/i]
     
    18 янв 2022 Изменено
Top
Загрузка...