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

  • «Программирование»

  • Иркутск 2021 Задание А 1. Условие задачи.

  • 3. Алгоритмизация

  • 4. Кодирование алгоритма или запись алгоритма на языке С++

  • Задание B 1. Условие задачи.

  • 2. Таблица внешних спецификаций

  • Лабораторная работа по программированию. Лаба 3 Финал Зайцев. Программирование


    Скачать 24.67 Kb.
    НазваниеПрограммирование
    АнкорЛабораторная работа по программированию
    Дата18.05.2022
    Размер24.67 Kb.
    Формат файлаdocx
    Имя файлаЛаба 3 Финал Зайцев.docx
    ТипОтчет
    #536393

    Министерство науки и высшего образования РФ

    Федеральное государственное бюджетное образовательное учреждение
    высшего образования

    ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
    Институт информационных технологий и анализа данных


    Отчет
    о лабораторной работе № 3 (вариант №8)

    «Массивы и строки»

    по дисциплине

    «Программирование»

    Выполнил: студент гр. АСУб-21-3




    Зайцев А.Е.

    Руководитель:

    Дорофеев А.С.

    Оценка:




    Дата защиты:




    Иркутск 2021

    Задание А

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

    Написать программу для формирования и печати одномерного массива. Сформированный массив выдать на экран до и после сортировки: если номер варианта четный – расположить элементы по убыванию, если номер варианта нечетный – по возрастанию.
    Задан вектор A(n), n≤12. Сформировать вектор Х из элементов вектора А, значения которых не превышают среднее арифметическое массива А. Выполнить сдвиг полученного массива вправо на две позиции.
    Вводим следующие обозначения

    1. n- размер массива;

    2. A- заданный вектор;

    3. X- сформированный вектор;


    2. Таблица внешних спецификаций

    Таблица 1 – Внешние спецификации




    Имя

    Назначение

    Тип

    Вх/Вых.

    Диапазон

    1

    n

    размер массива

    Цел.

    вход

    (1…13)

    2

    A

    заданный вектор

    Массив целых чисел

    вход

    [-2147483647

    ...

    2147483647]


    3

    X

    сформированный вектор

    Массив целых чисел

    выход

    [-2147483647

    ...

    2147483647]



    3. Алгоритмизация
    Словесный алгоритм:

    1. Объявление переменной n;

    2. Объявление строки s;

    3. Ввод n;

    4. Объявление массива A[12];

    5. Объявление и ввод переменной type;

    6. Ввод массива A;

    7. Объявление переменной average;

    8. Вывод массива A, подсчёт среднего арифметического в переменную average;

    9. Объявление массива X, переменной num;

    10. Заполнение массива X элементами, меньшими average;

    11. Сдвиг массива X на 2 элемента вправо;

    12. Сортировка массива A методом пузырька по убыванию;

    13. Вывод массива X;

    14. Вывод массива A.


    Таблица 2 – Таблица тестов

    Номер теста

    Назначение

    теста

    Входные данные

    Выходные данные

    1.

    Проверка алгоритма при заполнении массива случайными числами

    n=12

    Массив A

    804 -519 412 -415 777 -53 -982 -164 824 861 132 922

    Массив X

    -164 132 -519 -415 -53 -982

    Массив A после сортировки

    922 861 824 804 777 412 132 -53 -164 -415 -519 -982

    2.

    Проверка алгоритма при заполнении массива числами с клавиатуры

    n=7

    A=-14 5 19 0 13 782 1

    Массив A

    -14 5 19 0 13 782 1

    Массив X

    13 1 -14 5 19 0

    Массив A после сортировки

    782 19 13 5 1 0 -14

    3.

    Проверка алгоритма при одном элементе в новом массиве

    n=2

    Массив A

    -12 533

    Массив X

    -12

    Массив A после сортировки

    533 -12

    4.

    Проверка алгоритма при двух элементах в новом массиве

    n=3

    Массив A

    167 -129 9

    Массив X

    -129 9

    Массив A после сортировки

    167 9 -129



    4. Кодирование алгоритма или запись алгоритма на языке С++

    #include

    #include

    #include
    using namespace std;
    int input(string s){

    string l;

    int b;

    cout<<"Введите "<
    while (getline(cin,l)){

    stringstream ss(l);

    if (ss >> b)

    if (ss.eof())

    break;

    cout << "Ошибка, повторите ввод\nВведите "<
    }

    return(b);

    }
    int main(){

    srand(time(0));

    setlocale (LC_ALL, "Russian");

    int n=0;

    string s;

    s="количество элементов массива";

    while(n<1||n>12){

    n=input(s);

    if(n<1||n>12)

    cout<<"Ошибка, повторите ввод"<
    }

    int A[12];

    int type;

    s="каким способом вы хотите заполнить массив\n1. Вручную\n2. Случайными числами\nВаш выбор";

    while((type<1)||(type>2)){

    type=input(s);

    if((type<1)||(type>2))

    cout<<"Ошибка"<
    }

    if(type==1)

    for(int i=0;i
    s=to_string(i+1)+" элемент массива";

    A[i]=input(s);

    }

    if(type==2)

    for(int i=0;i
    A[i]=-1000+rand()%2000;

    float average=0.0;

    cout<<"Массив A"<
    for(int i=0;i
    average+=A[i];

    cout<
    }

    cout<
    average/=n;

    int X[12],num=0;

    for(int i=0;i
    if(A[i]<=average){

    X[num]=A[i];

    num++;

    }

    if(num>2){

    int temp1=X[num-2],temp2=X[num-1];

    for(int i=num-1;i>=2;i--)

    X[i]=X[i-2];

    X[0]=temp1;

    X[1]=temp2;

    }

    for(int i=0;i
    for(int j=0;j
    if(A[j]
    swap(A[j],A[j+1]);

    cout<<"Массив X"<
    for(int i=0;i
    cout<
    cout<
    for(int i=0;i
    cout<
    return 0;

    }
    Задание B

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

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

    1. s – введенная строка;

    2. w – строка слов по возрастанию их длины.


    2. Таблица внешних спецификаций

    Таблица 1 – Внешние спецификации




    Имя

    Назначение

    Тип

    Вх/Вых.

    Диапазон

    1

    s

    введенная строка

    Строка

    вход

    0…200 символов

    2

    w

    строка слов по возрастанию их длины

    Массив символов

    выход

    0…200 символов


    3. Алгоритмизация


    1. Объявление строки s;

    2. Ввод строки s;

    3. Объявление переменных i,l,c,line,num,fl и массивов w,Row;

    4. Пока(i

      1. Если s[i] не знак разделения, то c+1

      2. Иначе

        1. Если c≠0

          1. Ввод слова в массив w;

          2. Проверка слово на цифровое;

          3. Если слово первое цифровое

            1. Число делится на 100 и возвращается в массив;

          4. Сохранение длины слова в массив Row;

          5. line+1;

        2. c=0;

      3. i+1;

    5. Сортировка слов по длине методом пузырька;

    6. Вывод отсортированного массива слов;

    7. Вывод сообщения о статусе цифрового слова.


    Таблица 2 – Таблица тестов


    Номер теста

    Назначение

    теста

    Входные данные

    Выходные данные

    1.

    Проверка алгоритма при наличии цифрового слова

    ksl b pasl djmasnjn skajd 92176 lsap

    Слова по возрастанию их длины

    b ksl pasl lsap skajd djmasnjn 921,76

    Цифровое слово было изменено

    2.

    Проверка программы при отсутствии цифровых слов

    jsa kjakk jnuwuai ksmkjnka powos wajnsk pwiq smaks

    Слова по возрастанию их длины

    jsa pwiq kjakk powos smaks wajnsk jnuwuai ksmkjnka

    Цифровых слов нет

    4. Кодирование алгоритма или запись алгоритма на языке С++

    #include
    using namespace std;
    int main(){

    setlocale(LC_ALL,"rus");

    string s,cl;

    cl.clear();

    getline(cin,s);

    s+=" ";

    char w[200][200];

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

    for(int j=0;j<200;j++)

    w[i][j]=cl[0];

    int i=0,l=s.length(),Row[200]={0},c=0,line=0,num=0;

    bool fl=true;

    while(i
    if(s[i]!=','&&s[i]!=' ')

    c++;

    else{

    if(c!=0){

    bool f=true;

    num=0;

    for(int j=i-c;j
    w[line][num]=s[j];

    num++;

    if((s[j]<'0'||s[j]>'9')&&s[j]!='-')

    f=false;

    }

    if(fl&&f){

    float ch=atoi(w[line]);

    ch/=100;

    for(int j=0;j<200;j++)

    w[line][j]=cl[0];

    string a=to_string(ch);

    for(int j=0;j
    {

    w[line][j]=a[j];

    num++;

    }

    fl=false;

    }

    Row[line]=num;

    line++;

    c=0;

    }

    }

    i++;

    }

    for(i=0;i
    for(int j=0;j
    if(Row[j]>Row[j+1]){

    swap(w[j],w[j+1]);

    swap(Row[j],Row[j+1]);

    }

    cout<<"Слова по возрастанию их длины"<
    for(i=0;i
    for(int j=0;j
    cout<
    cout<<" ";

    }

    cout<
    if(fl)

    cout<<"Цифровых слов нет";

    else

    cout<<"Цифровое слово было изменено";

    return 0;

    }


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