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

  • Вариант 21 Формальное описание задачи.

  • Блок-схема алгоритма программы. Функция vvodznac

  • Функция vvoditer

  • Функция vvodelem

  • Функция obrabotka

  • Функция vyvod

  • отчет по лабораторной работе №6. Отчет по лабораторной работе 6.1. Отчет по лабораторной работе 6 Функции по дисциплине Программирование и основы алгоритмизации


    Скачать 164.33 Kb.
    НазваниеОтчет по лабораторной работе 6 Функции по дисциплине Программирование и основы алгоритмизации
    Анкоротчет по лабораторной работе №6
    Дата20.05.2020
    Размер164.33 Kb.
    Формат файлаdocx
    Имя файлаОтчет по лабораторной работе 6.1.docx
    ТипОтчет
    #124208

    Бюджетное учреждение высшего образования
    Ханты-Мансийского автономного округа
    «Сургутский государственный университет»


    Политехнический институт
    Кафедра автоматики и компьютерных систем


    Отчет

    по лабораторной работе № 6 «Функции»

    по дисциплине «Программирование и основы алгоритмизации»

    Выполнил: Рыженко Е.С.

    студент группы 605-91
    Проверил: Гришмановский П. В.

    доцент кафедры автоматики и компьютерных систем

    Сургут

    2020 г.

    Цель работы: Закрепление теоретических знаний конструкции выбора структурного программирования, получение практических навыков объявления и реализации функций языка С, передачи параметров и возвращаемого значения при их вызове.
    Задание: Требуется выполнить реализацию задачи в соответствии с индивидуальным заданием, выданным преподавателем по теме «Одномерные массивы», с использованием функций для обработки массивов.
    Вариант 1. Заданы размер массива, начальные значения его элементов (0 или 1) и количество итераций. На каждой итерации вычислить и вывести в виде одной строки новые значения элементов (значение элемента массива равно сумме по модулю 2 значений соседних элементов на предыдущей итерации; крайний левый и крайний правый элементы массива считаются соседними). Максимальный размер исходного массива – 80 элементов.
    Вариант 21
    Формальное описание задачи.

    Задается массив, состоящий из 80 элементов. Далее пользователь задает количество используемых элементов этого массива, а также количество итераций. Далее программа, начиная с 1 элемента, используя логическую функцию “исключающее или” для соседних элементов, присваивает данному элементу новое значение. После замены всех элементов выводится обновленный массив.



    1 0 0 10 1 1 1 0
    0 1 1 0 01 0 1 1
    1 0 1 1 1 10 0 1 0


    Алгоритм программы.

    Для решения данной задачи необходимо:

    1. Ввести количество используемых элементов и количество итераций-.

    2. Ввести значения, которые будут присваиваться выбранным ранее элементам.

    3. Вычислить новые значения элементов.

    4. Вывести новые элементы


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

    1. Функция vvodznac – вызвав её, мы вводим количество чисел массива.

    2. Функция vvoditer – вызвав её, мы вводим количество итераций.

    3. Функция vvodelem – вызвав её, мы вводим элементы массива.

    4. Функция obrabotka– обрабатывает массив. Находит производные элементов.

    5. Функция vyvod – выводит массив. В работе используется два раза.

    6. Функция itteraciya – вызывает функции obrabotka и vyvod определенное количество раз. Используется для реализации иттераций.


    Блок-схема алгоритма программы.
    Функция vvodznac:

    Начало






    Ввод кол-ва используемых значений









    n>80

    Да Нет




    Ввод кол-ва используемых значений





    Возврат n

    Функция vvoditer:



    Начало






    Ввод кол-ва итераций





    Возврат w

    Функция vvodelem:


    Начало




    i = 1; i<=n








    Ввод a[i]





    Вывод: “Vvedeno nevernoe znacheniye”

    Если: a[i]>1 или a[i]<0


    Да Нет




    i=i+1






    Конец


    Функция obrabotka:


    Начало






    i = 1; i<2




    g=a[n]^a[i+1];

    c=a[1];

    l=a[i];

    a[i]=g;




    2


    2


    i = 2; i



    g=l^a[i+1];

    l=a[i];

    a[i]=g;




    i=i+1





    i = n; i




    g=l^a[i+1];

    l=a[i];

    a[i]=g;




    i=i+1




    Конец

    Функция vyvod:


    Начало






    i = 1; i



    Вывод элементов массива





    i=i+1






    Конец

    Функция itteraciya:


    Начало





    vyvod(a,n)





    i = 0..w





    obrabotka(a,n)




    vyvod(a,n)





    s




    Конец


    Главная функция:

    Начало



    n=vvodznac()





    w=vvoditer()






    vvodelem(a, n)






    itteraciya(a,n,w)




    Конец


    Листинг программы.
    /* Лабораторная работа 6

    Вариант 1. Заданы размер массива, начальные значения его элементов (0 или 1) и количество итераций. На каждой итерации вычислить и вывести в виде одной строки новые значения элементов (значение элемента массива равно сумме по модулю 2 значений соседних элементов на предыдущей итерации; крайний левый и крайний правый элементы массива считаются соседними). Максимальный размер исходного массива – 80 элементов. */
    int vvodznac()

    { int n ;

    printf("vvedenie kol-va ispolzuemyh znacheniy massiva\n");

    scanf("%d", &n);

    if(n>80){

    while(n>80){

    printf("Vvedeno nevernoe znacheniye\n");

    printf("vvedenie kol-va ispolzuemyh znacheniy massiva\n");

    scanf("%d", &n);

    }}

    return (n);

    }

    int vvoditer()

    {

    int w;

    printf("vvedenie kol-va itteraciy\n");

    scanf("%d", &w);

    return (w);

    }

    int vvodelem (int a[], int n)

    { int i;

    printf("vvedenie znacheniy massiva\n");

    for (i = 1; i<=n; i++ )

    {

    printf("a[%d] = ", i);

    scanf("%d", &a[i]);

    if (a[i]>1 || a[i]<0) {

    printf("Vvedeno nevernoe znacheniye\n");

    while(a[i]>1 || a[i]<0){

    printf("a[%d] = ", i);

    scanf("%d", &a[i]); }}}}

    int obrabotka(int a[], int n)

    {int i, c, l, g;

    for (i = 1; i<2; i++){

    g=a[n]^a[i+1];

    c=a[1];

    l=a[i];

    a[i]=g;
    }

    for (i = 2; i
    g=l^a[i+1];

    l=a[i];

    a[i]=g;

    }

    for (i = n; i
    g=l^c;

    l=a[i];

    a[i]=g;

    }}

    int vyvod(int a[], int n){

    int i;

    for (i = 1; i<=n; i++ ){

    printf("%d",a[i]);

    }}

    int itteraciya (int a[], int n, int w){

    int s;

    vyvod(a,n);

    printf("\n");

    s=0;

    while (s <= w){

    obrabotka(a,n);

    vyvod(a,n);

    printf("\n");

    s=s+1;

    }}

    int main(){

    int s;

    int a[80], i, n, w, c, l, g;

    n=vvodznac();

    w=vvoditer();

    vvodelem(a, n);

    itteraciya(a,n,w);

    system("pause");
    return 0;

    }

    Пояснения к программе.

    В программе для выведения ответа используется логическая операция “исключающее или”, а также вывод значения “a[i]”.

    Все действия производятся внутри циклов for.

    Для организации дружественного интерфейса пользователя перед вводом данных выводится сообщение для пользователя. Ввод и вывод организован при помощи стандартных функций scanf() и printf(), для этого подключен заголовочный файл stdio.h. Для организации дружественного интерфейса пользователя перед вводом данных выводится сообщение для пользователя.

    Заголовочный файл stdlib.h необходим для использования функции system(), чтобы приостановить выполнение программы перед завершением (выполняется команда «pause» операционной системы).

    Выводы:

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

    Функция vvodznac – вызвав её, мы вводим количество чисел массива.

    Для данной функции был выбран тип int, так как возвращаемое значение может быть только целым числом.

    Функция vvoiter – вызвав её, мы вводим количество иттераций.

    Функция vvodelem – вызвав её, мы вводим элементы массива.

    Функция obrabotka– обрабатывает массив. Находит новые значения массива.

    Функция vyvodmassiva – выводит массив.

    Функция itteraciya – реализует итерации в программе, вызывает функции obrabotka и vyvod.

    Для данной функции был выбран тип int, так как возвращаемое значение может быть только целым числом.


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