Главная страница
Навигация по странице:

  • Заданы два целочисленных мвссива размерноси n * n . A*B , если EiAj[ A[i][j] >0] Вычислить С= A + B

  • Задано натуральное число n .

  • Выписать все числа, полученные из данного вычеркиванием одной цифры , являющиеся простыми

  • Лекции 1 семестр матанализ. лекции 1 семестр (1). Литература Герберт. Шилдт. С руководство для начинающих


    Скачать 1.38 Mb.
    НазваниеЛитература Герберт. Шилдт. С руководство для начинающих
    АнкорЛекции 1 семестр матанализ
    Дата19.02.2023
    Размер1.38 Mb.
    Формат файлаdoc
    Имя файлалекции 1 семестр (1).doc
    ТипЛитература
    #945406
    страница8 из 9
    1   2   3   4   5   6   7   8   9

    Appendix

    Templates Шаблоны

    Задача 1
    #include "stdafx.h"

    #include

    using namespace std;
    template

    void box(T length, T width, T height);// прототип функции
    int main()

    {

    setlocale( LC_ALL,"Russian" );

    box(7,20,4);

    box(50,3,2);

    box(8,6,9);

    box(7.7,20.2,4.4);

    box(50.4,3.4,2.4);

    box(8.4,6.4,9.4);

    system("pause");

    return 0;

    }

    // Определение функции box()

    template

    void box(T length, T width, T height)

    {

    cout<<"Объем параллелепипеда равен "<<

    length* width* height <
    }
    Задача 2
    #include "stdafx.h"

    #include

    using namespace std;

    const int n=5;

    /////////////////

    template

    void create ( T* x , int k);

    //возможный вариант void vvod ( int x[n])

    template

    void show ( T* x, int k);

    template

    T max ( T* x, int k);

    /////////////////////////

    int main()

    {

    setlocale( LC_ALL,"Russian" );

    int a[n];

    cout<<" введите целочисленный массив а:"<
    create(a,n);

    cout<<" целочисленный массив а:"<
    show( a, n);

    cout<< "max(a,n)= "<
    double b[n];

    cout<<" введите вещественный массив b:"<
    create(b,n);

    cout<<" вещественный массив b:"<
    show ( b, n);

    cout<< "max(b,n)= "<
    system("pause");

    return 0;
    }

    //////////////////////

    template

    void create ( T* x, int k)

    {

    int i;

    for (i=0; i
    {

    cout<<"x["<
    cin>>x[i];

    }

    }

    ///////////////////////

    template

    void show ( T* x, int k)

    {

    int i;

    for (i=0; i
    cout<
    cout<
    }

    ////////////////////////////

    template

    T max( T* x, int k)

    {

    int i;

    T m;

    m=x[0];

    for (i=0; i
    if (m
    return m;

    }

    /////////////////////////

    Задача 3

    Заданы два целочисленных мвссива размерноси n*n.
    A*B , если EiAj[ A[i][j] >0]

    Вычислить С=

    A+B, противном случае
    Задачу выполнить и для вещественных массивов


    #include "stdafx.h"

    # include

    # include

    # include
    using namespace std;
    template

    void create ( T **, int);
    template

    void show( T **, int);
    template

    bool EA( T**, int);
    template

    void mult ( T**, T**, T**,int);
    template

    void add ( T **, T**, T**,int);

    /////////////////////////////////////
    int main()

    {

    int n;

    cout<<"enter size of array n =";

    cin>>n;

    int **a, **b, **c;

    a= new int*[n];

    int i;

    for (i=0;i
    a[i]=new int[n];

    b= new int*[n];

    for (i=0;i
    b[i]=new int [n];
    c= new int*[n];

    for (i=0;i
    c[i]=new int[n];

    cout<<"enter array a:"<
    create(a,n);

    cout<<"enter array b:"<
    create(b,n);
    cout<<" array a:"<
    show(a,n);

    cout<<" array b:"<
    show(b,n);

    if (EA(a,n)) mult(a,b,c,n);

    else add(a,b,c,n);

    cout<<"array c: "<
    show(c,n);

    for(i=0;i
    delete []a[i];

    delete [] a;

    for(i=0;i
    delete []b[i];

    delete []b;

    for(i=0;i
    delete []c[i];

    delete []c;

    double **a1, **b1, **c1;

    a1= new double*[n];

    for (i=0;i
    a1[i]=new double[n];

    b1= new double*[n];

    for (i=0;i
    b1[i]=new double [n];
    c1= new double*[n];

    for (i=0;i
    c1[i]=new double[n];

    cout<<"enter array a1:"<
    create(a1,n);

    cout<<"enter array b1:"<
    create(b1,n);
    cout<<" array a1:"<
    show(a1,n);

    cout<<" array b1:"<
    show(b1,n);

    if (EA(a1,n))

    mult(a1,b1,c1,n);

    else add(a1,b1,c1,n);

    cout<<"array c1: "<
    show(c1,n);

    for(i=0;i
    delete []a1[i];

    delete [] a1;

    for(i=0;i
    delete []b1[i];

    delete []b1;

    for(i=0;i
    delete []c1[i];

    delete []c1;

    system("pause");

    return 0;
    }

    ////////////////////////////////

    template

    void create(T**x, int n)

    {

    int i,j;

    for (i=0; i
    for (j=0; j
    {

    cout<<"x["<
    cin>>x[i][j];

    }

    }

    ////////////////////////////

    template

    void show(T**x, int n)

    {

    int i,j;

    for (i=0; i
    {

    for (j=0; j
    cout<
    cout<
    }

    }

    /////////////////////////////////

    template

    bool EA(T**x, int n)

    {

    bool p,q;

    int i,j;

    p=false;

    for (i=0;i
    {

    q=true;

    for (j=0; j
    if (x[i][j]<=0) q=false;

    p=q;

    }

    return p;

    }

    //////////////////////////////

    template

    void mult ( T **x, T**y, T**z,int n)

    {

    int i, j, k;

    for (i=0; i
    for (j=0; j
    {

    z[i][j]=0;

    for (k=0; k
    z[i][j]=z[i][j]+x[i][k]*y[k][j];

    }

    }

    /////////////////////////////

    template

    void add ( T **x, T**y, T**z, int n)

    {

    int i, j;

    for (i=0; i
    for (j=0; j
    z[i][j]= x[i][j]+y[i][j];

    }
    /////////////////////////////////////////////////////////////
    Задано натуральное число n.


    1. Выписать все числа, полученные из данного, вычеркиванием одной цифры

    2. Выписать все числа, полученные из данного вычеркиванием одной цифры , являющиеся простыми



    #include "stdafx.h"

    #include

    using namespace std;
    ////////////////////////////

    int length_num(int x)

    {

    int l=0;

    while(x>0)

    {

    x=x/10;

    l++;

    }

    return l;

    }

    ///////////////////////

    int delete_cifra(int x, int k)

    {

    int j=0;

    int t=1;

    int s=0;

    while(x>0)

    {

    int p=x%10;

    j++;

    if (k!=j)

    {

    s=s+p*t;

    t=t*10;

    }

    x=x/10;

    }

    return s;

    }

    /////////////////////////////////////

    bool prime(int x)

    {

    if(x<2) return false;

    if(x==2) return true;

    bool t=true;

    int i;

    for( i=2;i<=sqrt(x)&& t;i++)

    if (x%i ==0) t=false;
    return t;

    }

    /////////////////////////////////////

    int main()

    {

    int x;

    cout<<"enter x= ";

    cin>>x;

    int l=length_num(x);

    int i;

    cout<<" all numbers"<
    for(i=1;i<=l;i++)

    cout<
    cout<<" all prime numbers"<
    for(i=1;i<=l;i++)

    if(prime(delete_cifra(x,i)))

    cout<
    system("pause");

    return 0;

    }

    ////////////////////////////////////////////

    Example n=234
    all: 23, 24, 34

    primes: 23
    ////////////////////////////////////////////////////////////////////////////////

    Дихотомический поиск элемента в массиве
    Задан упорядоченный массив. Найти позицию элемента х в массиве. o(log n) итераций цикла
    #include "stdafx.h"

    #include

    using namespace std;
    int main()

    {

    setlocale(LC_ALL, "rus");
    const int n = 10;

    int a[n] = { 1,2,3,4,5,6,7,8,9,10 };

    int left = 0, right = n - 1, x;

    int mid;

    cout << "введите x= ";

    cin >> x;

    bool flag = false;

    while (!flag && (left <=right))

    {

    mid = (right + left) / 2;

    if (a[mid] == x) flag = true;

    if (x > a[mid])
    left = mid + 1;
    else right = mid - 1;

    }

    if (flag) cout << "Индекс элемента " << x << " в массиве равен: " << mid << endl;

    else cout << "Извините, но такого элемента в массиве нет" << endl;

    system("pause");

    return 0;

    }
    1   2   3   4   5   6   7   8   9


    написать администратору сайта