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

  • Лекция Задана квадратная матрица из положительных целых чисел. Вычислить op1(A), prime(SP(A[i][j])) A= op2(A), otherwise.

  • Лекция Новые функции int** create(ifstream f , int n ) int** add(int** x, int** y, int n)

  • возвращает указатель на массив. Функции add , subtr , mult – возвращают указатель на массив, можно использовать выражения d =

  • Лекция Структуры и перечисления. Структура Employee - работник Перечисление transport – транспортное средство

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


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

    Файл arb.txt
    Session results on Faculty of Computer Science(VMK)

    first second third fourth fifth

    perfect good satisf poor

    2 3 4 5

    2 3 3 3

    3 3 3 3

    3 3 3 3

    3 3 3 3

    Файл vmk.txt

    Session results on Faculty of Computer Science(VMK)






    perfect

    good

    satisfy

    poor

    first

    2

    3

    4

    5

    second

    2

    3

    3

    3

    third

    3

    3

    3

    3

    fourth

    3

    3

    3

    3

    fifth

    3

    3

    3

    3

    Total:

    13

    15

    16

    17


    Лекция

    Задана квадратная матрица из положительных целых чисел. Вычислить
    op1(A), prime(SP(A[i][j]))

    A=

    op2(A), otherwise.
    prime(SP(A[i][j])) – сумма( по i) произведение (по j) A[i][j]

    есть простое число.

    Операция op1(A)- транспонированная матрица A.

    Операция op2(A) - i –ая строка матрицы A сдвигается циклически влево на 1 позицию, если она содержит число, сумма цифр, которого является простым число, и

    сдвигается циклически вправо на 1 позицию, в противном случае.

    //arb2015_mas_bool

    #include "stdafx.h"

    #include

    #include

    #include

    using namespace std;

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

    void create(ifstream &f,int** x, int n)

    {

    int i,j;

    for(i=0;i
    for(j=0;j
    f>>x[i][j];
    }

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

    void show(ofstream &f,int** x, int n)

    {

    int i,j;

    for(i=0;i
    {

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

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

    int sum_cifr(int x)

    {

    int s=0;

    while(x>0)

    {

    s=s+x%10;

    x=x/10;

    }

    return s;
    }

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

    int sum_mult(int** x, int n)

    {

    int i,j;

    int s=0;

    int p;

    for(i=0;i
    {

    p=1;

    for(j=0;j
    p=p*x[i][j];

    s=s+p;

    }

    return s;

    }

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

    bool prime(int x)

    {

    int i;

    if (x<=1) return false;

    if(x==2)return true;

    bool p=true;

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

    if (x%i==0)p=false;

    return p;

    }

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

    bool f1(int**x, int n)

    {

    return prime(sum_mult(x,n));

    }

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

    bool f2(int*x, int n)

    {

    int j;

    bool p=false;

    for(j=0;j
    if (prime(sum_cifr(x[j]))) p=true;

    return p;

    }

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

    void shift_left(int* x,int n)

    {

    int r,i;

    r=x[0];

    for(i=0;i
    x[i]=x[i+1];

    x[n-1]=r;

    }

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

    void shift_right(int* x,int n)

    {

    int r,i;

    r=x[n-1];

    for(i=n-1;i>0;i--)

    x[i]=x[i-1];

    x[0]=r;

    }

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

    void op1(int** x,int n)

    {

    int i,j;

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

    int r=x[i][j];

    x[i][j]=x[j][i];

    x[j][i]=r;

    }

    }

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

    void op2(int** x,int n)

    {

    int i;

    for(i=0;i
    if (f2(x[i],n)) shift_left(x[i],n);

    else shift_right(x[i],n);

    }

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

    int main()

    {

    int n,i;

    int** a;

    ifstream in("arb.txt");

    ofstream out("out.txt");

    if(!in)

    {

    cout<<"can't open file!"<
    exit(-1);

    }

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

    cin>>n;

    a=new int*[n];

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

    create(in,a,n);

    out<<"array a:"<
    show(out,a,n);


    if(f1(a,n))op1(a,n);else op2(a,n);

    out<<" new array a:"<
    show(out,a,n);

    in.close();

    out.close();

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

    delete []a;
    system("pause");

    return 0;
    }
    Файл arb.txt

    1 22 33

    4 5 6

    7 8 9
    Файл out.txt

    array a:

    1 22 33

    4 5 6

    7 8 9

    new array a:

    33 1 22

    5 6 4

    8 9 7

    1.8 Преобразование матрицы.

    По заданной матрице А (размерности nn) вычислить новую матрицу X:



    где Е1 и Е2 - заданные преобразования матрицы А. Входными данными программы являются: число n и элементы матрицы А; выходными  элементы матрицы X.

    В программе предусмотреть:

    - процедуру вычисления матрицы Е1(А) с формальными параметрами: размерность матрицы m, массивы А и В (исходная матрица и вычисляемая);

    - процедуру-функцию булевского типа вычисления значения предиката с формальными параметрами: размерность матрицы и массив ее элементов.

    Исходные данные

    I. Две различные операции Е1 и Е2 над вещественными матрицами из следующего списка:

    б) умножение на 3 всех элементов тех и только тех строк, в которых диагональный элемент больше 1;

    е) преобразование в симметричную с сохранением элементов, находящихся справа от главной диагонали;

    III. Предикат P(A) на вещественных матрицах:

    а) все определители второго порядка положительны (т.е.

    ;

    IV. Числовые данные. Размерность матрицы n = 5, 6, 7 или 8, а элементы матрицы выбираются произвольно.
    //arb2014_semestr_task_array

    #include "stdafx.h"

    #include

    #include

    #include

    using namespace std;
    void create(ifstream &f , int** x, int n )

    {

    int i,j;

    for(i=0;i
    for(j=0;j
    f>>x[i][j];
    }

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

    void show(ofstream &f , int** x, int n )

    {

    int i,j;

    for(i=0;i
    {

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

    f<
    }

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

    void E1(int** x, int** y, int n)

    {

    int i,j;

    for(i=0;i
    {

    if (x[i][i]>1)

    for(j=0;j
    else

    for(j=0;j
    }

    }

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

    void E2(int** x, int** y, int n)

    {

    int i,j;

    for(i=0;i
    for(j=0;j
    if (i>=j)

    {

    y[i][j]=x[i][j];

    y[j][i]=y[i][j];

    }

    }

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

    bool AA(int** x, int n)

    {

    bool p=true;

    int i,j;

    for(i=0;i
    for(j=0;j
    if ( x[i][j]*x[i+1][j+1] - x[i+1][j]*x[i][j+1]<=0) p=false;

    return p;

    }

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

    int main()

    {

    ifstream in("arb.txt");

    ofstream out("out.txt");

    int** a,**b;

    int n,i;

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

    cin>>n;

    a=new int* [n];

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

    b=new int* [n];

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

    create(in ,a,n);

    in.close();

    out<<"array a:"<
    show(out,a,n);

    if( AA(a,n)) E1(a,b,n); else E2(a,b,n);

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

    out.close();

    system("pause");

    return 0;

    }
    Файл “arb.txt”

    3 2 1

    3 3 2

    2 3 3
    Файл “out.txt”

    array a:

    3 2 1

    3 3 2

    2 3 3
    array b:

    9 6 3

    9 9 6

    6 9 9

    Лекция_Новые_функции_int**_create(ifstream_f_,_int_n_)_int**_add(int**_x,_int**_y,_int_n)'>Лекция

    Новые функции
    int** create(ifstream &f , int n )

    int** add(int** x, int** y, int n)

    int** subtr (int** x, int**y, int n)

    int** mult (int** x, int**y, int n)
    Память под массив выделяется внутри функции и функция create возвращает указатель на массив.

    Функции add, subtr,mult – возвращают указатель на массив, можно использовать выражения d=mult(add(a,b,n),a,n);

    //arb2014_array_3_function

    #include "stdafx.h"

    #include

    #include

    #include

    using namespace std;
    int** create(ifstream &f , int n )

    {

    int i,j;

    int **x=new int*[n];

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

    for(i=0;i
    for(j=0;j
    f>>x[i][j];

    return x;

    }

    void show(ofstream &f , int** x, int n )

    {

    int i,j;

    for(i=0;i
    {

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

    f<
    }

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

    int** add(int** x, int** y, int n)

    {

    int i,j;

    int **z=new int*[n];

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

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

    return z;

    }

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

    int** subtr (int** x, int**y, int n)

    {

    int i,j;

    int **z=new int*[n];

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

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

    return z;

    }

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

    int** mult(int** x, int**y, int n)

    {

    int i,j,k;

    int **z=new int*[n];

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

    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];

    }

    return z;

    }

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

    int main()

    {

    ifstream in1("arb1.txt");

    ifstream in2("arb2.txt");

    ofstream out("out.txt");

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

    int n,i;

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

    cin>>n;

    a= create(in1 ,n);

    b= create(in2 ,n);

    in1.close();

    in2.close();

    out<<"array a:"<
    show(out,a,n);

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

    c=add(a,b,n);

    out<<"array c=a+b c:"<
    show(out,c,n);

    c=add(c,c,n);

    out<<"array c=c+c c:"<
    show(out,c,n);
    c=subtr( add(c,c,n), add(a,c,n),n);

    out<<"array c=(c+c)-(a+c) c:"<
    show(out,c,n);

    int** d =mult(a,b,n);

    out<<"array d=a*b d:"<
    show(out,d,n);

    d=mult(add(a,b,n),a,n);

    out<<"array d=(a+b)*a d:"<
    show(out,d,n);

    out.close();

    }
    Файл arb1.txt

    1 1 1 1

    1 1 1 1

    1 1 1 1

    1 1 1 1
    Файл arb2.txt

    1 1 1 1

    1 1 1 1

    1 1 1 1

    1 1 1 1
    Файл out.txt

    array a:

    1 1 1 1

    1 1 1 1

    1 1 1 1

    1 1 1 1
    array b:

    1 1 1 1

    1 1 1 1

    1 1 1 1

    1 1 1 1
    array c=a+b c:

    2 2 2 2

    2 2 2 2

    2 2 2 2

    2 2 2 2
    array c=c+c c:

    4 4 4 4

    4 4 4 4

    4 4 4 4

    4 4 4 4
    array c=(c+c)-(a+c) c:

    3 3 3 3

    3 3 3 3

    3 3 3 3

    3 3 3 3
    array d=a*b d:

    4 4 4 4

    4 4 4 4

    4 4 4 4

    4 4 4 4
    array d=(a+b)*a d:

    8 8 8 8

    8 8 8 8

    8 8 8 8

    8 8 8 8

    Лекция
    Структуры и перечисления.

    Структура Employee - работник

    Перечисление transport – транспортное средство

    Структуры ( struct)

    В отличие от массивов, все элементы которого однотипны структура может содержать элементы разных типов. В языке С++ структура является видом класса и обладает всеми его свойствами, но во многих случаях достаточно использовать структуры , как они определены в языке С.

    struct имя_типа

    {

    тип_1 элемент_1;

    тип_2 элемент_2;

    …….

    тип_n элемент_n;

    };
    Элементы структуры называются полями структуры и могут иметь любой тип, кроме типа этой же структуры, но могут быть указателями на него.
    Для переменных одного и того же структурного типа определена операция присваивания, при этом происходит поэлементное копирование. Структуру можно передавать в функцию и возвращать в качестве значения функции.
    Доступ к полям структуры выполняется с помощью операции выбора . (точка) при обращении к полю через имя структуры и -> при обращении через указатель.
    struct Worker

    {

    char fio[30];

    int code;

    double salary;

    }

    Worker worker, staff[100],*ps;

    worker.fio="Иванов";

    staff[8].code=123;

    ps->salary=12000;
    Если элементом структуры является другая структура, то доступ к ее элементам выполняется через две операции выбора
    struct A { int a; double k;};

    struct B { A a; double x;};
    B x[2];

    x[0].a.a=1;

    x[1].x=0.1

    //arb2014_struct_employeе_2
    #include "stdafx.h"

    #include

    #include

    using namespace std;
    const int K=80;

    const int N=5;
    enum status { Boss=1,Accountant,Secretary,It ,Office};

    struct Employee

    {

    int Id;

    char Name[K];

    double Salary;

    status Status;

    };
    int main()

    {

    int i;

    Employee emp[N];

    for(i=0;i
    {

    emp[i].Id=i+1;

    cout<<"enter name "<
    cin.getline(emp[i].Name,80);

    cout<<" enter salary "<< emp[i].Name<<" : ";

    cin>>emp[i].Salary;
    int st;

    do

    {

    cout<<"enter status of employee (1..5) st= ";

    cin>>st;

    } while ( st<1 || st>5 );

    emp[i].Status =(status)st;

    cin.get();// снимает с потока символ «новая строка»

    }
    cout<
    for(i=0;i
    {

    cout<
    <
    switch (emp[i].Status)

    {

    case Boss: cout<<"Boss"<
    case Accountant: cout<<"Accountant"<
    case Secretary : cout<<"Secretary"<
    case It : cout<<"It"<
    case Office : cout<<"Office"<
    default: ; break;

    }

    }

    }
    1   2   3   4   5   6   7   8   9


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