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

  • Реализация функций приложения

  • //Определение количества цифр в числе

  • Задание 1 Массив одномерный. Отчет по выполнению заданий 1 и 2 по статическому и динамическому массивам. По заданию 3 в отчет включить код, комментируя функции. 2


    Скачать 116.17 Kb.
    НазваниеОтчет по выполнению заданий 1 и 2 по статическому и динамическому массивам. По заданию 3 в отчет включить код, комментируя функции. 2
    Дата19.02.2022
    Размер116.17 Kb.
    Формат файлаdocx
    Имя файлаЗадание 1 Массив одномерный.docx
    ТипОтчет
    #366770
    страница3 из 6
    1   2   3   4   5   6

    Пример разработки приложения и оформления отчета по заданию 2


    1. Условие задачи варианта

      1. Скопировать задание

      2. Скопировать условие варианта

    Дан массив из n элементов целого типа long. Массив исходный динамический.

    Сформировать массив из чисел Армстронга (153=13+53+33). Массив динамический.

    1. Определение функций

    Создание массива из n элементов целого типа для исходного массива.

    Предусловие Нет

    Постусловие вводит размер массива с клавиатуры. Создает динамический массив из n элементов целого типа. Возвращает указатель на массив из n и n, либо NULL, если память под массив не выделена.

    long *create_array(int &n);

    Добавление нового элемента в массив

    Предусловие. Массив должен существовать, т.е. L отлично от NULL.

    Постусловие. Увеличивает размер массива на один элемент, добавляя новую ячейку в конец массива. Используется функция realloc из malloc.h

    void insert_elems(long *&L,int &n,long x);

    Удаление последней ячейки из массива

    Предусловие. Массив должен существовать.

    Постусловие. Из массива удаляется последняя ячейка. Размер массива уменьшается.

    void delete_elems(long *&L,int &n);

    Ввод значений

    Предусловие. n – число заполняемых элементов,0 ≤n≤Max, где MAX – максимальное число элементов, L – массив с переменной верхней границей.

    Постусловие. Заполненный массив из n элементов

    void input_ar(long L[], int n);

    Вывод значений массива

    void output_ar(long L[], int n);

    Предусловие. n>0

    Постусловие. Вывод значений массива
    //Операции для решения поставленной задачи

    Определение количества цифр в числе

    Предуслвие. n≥10

    Постусловие. Результат целое, сумма цифр

    int count(long n);

    Возведение целого числа в степень

    Предуслвие. а>0 – цифра числа, p>0 – количество цифр в числе

    Постусловие. Результат целое, возведение а в сtтепень p

    long double pow_1(unsigned short a, unsigned short p);

    Определение числа Армстронга

    Предуслвие. x>0 целое число,

    Постусловие. Результат true если х число Армстронга и false иначе

    bool Armstrong(long x);

    Формирование массива чисел Армстронга

    Предусловие. A исходный массив размера n>0.

    Постусловие. Результат: создает и заполняет массив B если в массиве А есть числа Армстронга; изменяет nB если числа Армстронга есть в А. Если в массиве А нет чисел Армстронга, то nB=0 и результат возвращаемый функцией NULL

    long* newArrayB(long *A, int n, int &nB);


    1. Реализация функций приложения

    #include

    #include"malloc.h"

    #include"string.h"
    long *create_array(int &n);

    void output_ar(long L[], int n);

    void input_ar(long L[],int n);

    void insert_elems(long *&L,int &n,long x);

    void delete_elems(long *&L,int &n);

    void insert(long *&L,int &n,long x);

    long* newArrayB(long *A, int n, int &nB);

    //Определение количества цифр в числе

    int count(long x);

    //Возведение целого числа в степень p

    long double pow_1(unsigned short a, unsigned short p);

    //Определение числа Армстронга

    bool Armstrong(long x);
    int main(int argc, char* argv[])

    {int n;

    long *A=create_array(n);

    input_ar(A, n);

    int x=10;

    insert_elems( A, n,x); //добавили еще одно значение в массив А

    output_ar(A, n);

    delete_elems(A,n); //удалили последний элемент

    output_ar(A, n);

    cout<<(sizeof(a)/sizeof(long))<
    int nB=0;

    long *B=newArrayB(A, n, nB);

    if (nB>0){

    cout<<”Найдены числа Армстронга в массиве А\n”;

    output_ar(B, nB);

    }

    else

    cout<<”Не найдены числа Армстронга в массиве А\n”;

    return 0;

    }

    long *create_array(int &n)

    {

    cout<<"Введите количество элементов n=";

    cin>>n;

    long *ptr=new long[n];

    return ptr;

    }

    void input_ar(long L[],int n)

    { cout<<"введите "<
    for(int i=0;i
    cin>>L[i];

    }
    void output_ar(long L[], int n)

    { cout<<"Массив "<< endl;

    for (int i=0;i< n; i++)

    cout<<"a["<
    }

    void insert(long *&L,int &n,long x) //вставка нового значения в массив

    {

    memcpy(L,L,n+1); //увеличение размера массива –функция из string.h

    L[n]=x;n++;

    }

    void insert_elems(long *&L,int &n,long x) //вставка нового значения в массив

    {

    L=(long*) realloc((long*)L,(n+1)*sizeof(long)); //увеличение размера массива –функция из malloc.h

    //увеличение памяти по указателю L

    L[n]=x; n++;
    }

    void delete_elems(long *&L,int &n) //удаление элемента из массива

    {

    L=(long*)realloc((long*)L,(n-1)*sizeof(long)); // уменьшение размера памяти по указателю L

    n--;
    }

    long* newArrayB(long *A, int n, int &nB){

    long *B=new long[0];

    for(int i=0;i
    if (Armstrong(A[i]==true)

    if (nB==0)

    long *B=new long[1];

    else

    B=(long*)realloc((long*)B,sizeof(long)*(nB+1));

    B[nB]=A[i];

    nB++;

    }

    return (nB>0?B:NULL);

    }
    1   2   3   4   5   6


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