Операции над матрицами

Автор: Пользователь скрыл имя, 19 Мая 2011 в 12:36, курсовая работа

Краткое описание

Целью моей курсовой работы является написание программы, которая рассчитывает знаменательные даты жизни (например 100ый день вашей жизни или 100000ая секунда вашей жизни).

Оглавление

Введение 4
1 Анализ задания по курсовой работе 7
1.1 Основные задачи 7
1.2 Дополнительные задачи 7
2 Математическая модель решаемой проблемы 8
2.1 Расчет знаменательной даты 8
2.2 Учёт високосных годов 8
2.3 Расчёт времени 8
3 Алгоритмизация модели решаемой проблемы 9
4 Модульная структура приложения 11
4.1 Схема работы приложения 11
4.2 Описание основных процедур 11
5 Листинг программы 12
6 Описание процесса отладки программы 17
7 Тестирование приложения 18
8 Инструкция для пользователя приложения 19
Заключение 21
Список использованной литературы 22

Файлы: 1 файл

Пояснительная Записка.doc

— 219.50 Кб (Скачать)

    2.2 Учёт високосных  годов 

    Учёт  високосных годов один из важнейших  этапов поставленной задачи. Потому что  каждый 4ый год в феврале становится на 1 день больше, что может повлиять на правильный расчет знаменательной даты без его учёта.

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

    2.3 Расчёт времени 

    Для того чтобы рассчитать знаменательную дату с точностью до часа, минуты и секунды необходимо сложить  введенную секунду рождения с  введенной секундой знаменательной даты. После чего создать цикл при  котором от суммы отнимается число 60 (секунд), а к минуте прибавляется 1, но если минута достигает больше числа 60, тогда она обнуляется, а к часу прибавляется единица. Если час становится больше 24, тогда он обнуляется, а к дню прибавляется 1.

    Цикл  завершается в том случае, когда  сумма становится меньше 60, т.е. количества секунд в минуте. Когда завершается цикл, рассчитываются дни/месяца/года и результат выводится на экран.

 

    3 Алгоритмизация  модели решаемой проблемы 

 

    4 Модульная  структура приложения 
     

    4.1 Схема работы приложения 

    

    Рисунок 1 – Схема работы программы 

    4.2 Описание основных процедур 

    Основные  использованные процедуры в данной программе это:

    -условия IF;

    -циклы FOR;

    -массивы;

    -метки и переходы на метки GOTO.

 

    5 Листинг программы 
     

    #include <iostream> 

    using namespace std; 

    int main()

    {  

    int d=0, m=0, y=0, mas[50], v=0, db=0, h=0, min=0, sec=0, hb=0, minb=0, secb=0, yb=0, mb=0; 

        cout << "Vvedite svoy god rozhdeniya: ";

        cin >> yb;

        cout << "Vvedite svoy mesyac rozhdeniya: ";

        cin >> mb;

        cout << "Vvedite svoy den' rozhdeniya: ";

        cin >> db;

        cout << "Vvedite svoy chas rozhdeniya: ";

        cin >> hb;

        cout << "Vvedite svoyu minutu rozhdeniya: ";

        cin >> minb;

        cout << "Vvedite svoyu sekundu rozhdeniya: ";

        cin >> secb; 

        cout << "--------------------------------------------------------------------" << endl;

        cout << "TEPER' VVEDITE DANNIE ZNAMENATEL'NOY DATY, KOTORUYU VY HOTITE UZNAT'" << endl;

        cout << "--------------------------------------------------------------------" << endl; 

        cout << "Vvedite god: ";

        cin >> y;

        cout << "Vvedite mesyac: ";

        cin >> m;

        cout << "Vvedite den': ";

        cin >> d;

        cout << "Vvedite chas: ";

        cin >> h;

        cout << "Vvedite minuty: ";

        cin >> min;

        cout << "Vvedite sekundy: ";

        cin >> sec; 

        if (y==0)

        {

     y=1;

     }

      

     if (m==0)

       {

     m=1;

     } 

       if (d==0)

       {

     d=1;

     } 

       if (h==0)

       {

     h=1;

     } 

       if (min==0)

       {

     min=1;

     } 

       if (sec==0)

       {

     sec=1;

     } 

        y=y+(yb-1);   // расчет дней, месяцев, лет

        m=m+(mb-1);

        d=d+(db-1);

        h=h+(hb-1);

        min=min+(minb-1);

        sec=sec+(secb-1); 

    M: 

    if (h>23)   // процедура расчета времени

    {

    h=h-24;

    d++;

    } 

    if (min>59)

    {

    min=min-60;

    h++;

    } 

    if (sec>59)

    {

    sec=sec-60;

    min++;

    goto M;

    } 

    for (v=0; v<=49; v++) // цикл високосного года

    {

    mas[v]=1900+(4*(v+1));

    } 

    N:

    if (m==1 and d>31)

    {

    d=d-31;

    m++;

    } 

    for (v=0; v<=49; v++)

    {

    if (y==mas[v])

        {

        if (m==2 and d>29)

            {

            d=d-29;

            m++;

            }

            goto L;

        }

    } 

    for (v=0; v<=49; v++)

    {

    if (y!=mas[v])

        {

        if (m==2 and d>28)

            {

            d=d-28;

            m++;

            }

        }

    }

    L:

    if (m==3 and d>31)

    {

    d=d-31;

    m++;

    } 

    if (m==4 and d>30)

    {

    d=d-30;

    m++;

    } 

    if (m==5 and d>31)

    {

    d=d-31;

    m++;

    } 

    if (m==6 and d>30)

    {

    d=d-30;

    m++;

    } 

    if (m==7 and d>31)

    {

    d=d-31;

    m++;

    } 

    if (m==8 and d>31)

    {

    d=d-31;

    m++;

    } 

    if (m==9 and d>30)

    {

    d=d-30;

    m++;

    } 

    if (m==10 and d>31)

    {

    d=d-31;

    m++;

    } 

    if (m==11 and d>30)

    {

    d=d-30;

    m++;

    } 

    if (m==12 and d>31)

    {

    d=d-31;

    m++;

    } 

    if (m>12 and d>1)

    {

    y++;

    m=1;

    goto N;

    } 

        cout << "--------------------------------------------------------------------" << endl;

        cout << "Data: " << d << "." << m << "." << y << endl;

        cout << "Vremya: " << h << ":" << min << ":" << sec << endl;

        cout << "--------------------------------------------------------------------"; 

        return 0;

    }

 

    6 Описание  процесса отладки программы 
     

    for (v=0; v<=49; v++)

    {

    if (y==mas[v])

        {

        if (m==2 and d>29)

            {

            d=d-29;

            m++;

            }

            goto L;

        }

    } 

    for (v=0; v<=49; v++)

    {

    if (y!=mas[v])

        {

        if (m==2 and d>28)

            {

            d=d-28;

            m++;

            }

        }

    }

    L: 

    Одна  из ошибок разрабатываемой программы. Программа рассчитывала дату, не учитывая високосные года.

    В результате Проблема была решена при  помощи метки (L). Если выполняется цикл с високосным годом, т.е. с учетом двадцати девяти дней в феврале, тогда не должен выполняться цикл с двадцати-восьмидневным февралем.

    Поэтому при выполнении цикла с високосным одом (двадцати-девятидневным февралем) по окончанию цикла программа переходит на метку L, перескакивая цикл с двадцати-восьмидневным февралем.

 

    7 Тестирование  приложения 
 

 

Рисунок 2 – Тестирование программы 

Введены данные рождения пользователя: 

Год: 1991

Месяц: 1 (январь)

День: 4

Время: 6:00:00 
 

Введены данные расчета знаменательной даты: 

Год: 10ый

Месяц: 100ый

День: 1000ый

Час: 10000ый

Минута: 100000ая

Секунда: 1000000ая 

Результат: 

Десятый год, сотый  месяц, тысячный день, десятитысячный час, стотысячная минута, миллионная секунда жизни пользователя была: 

Дата: 8.02.2005

Время: 21:25:39

 

    8 Инструкция  для пользователя приложения 
 

    После запуска программа просит ввести год рождения пользователя:

    

    С клавиатуры вводится год рождения, затем нажимается Ввод. Далее программа просит ввести месяц рождения:

Информация о работе Операции над матрицами