Лабораторная работа

Лабораторная работа Символы. Строки

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 23.11.2024



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ


Лабораторная работа №3

по дисциплине «Информатика и программирование»
Символы. Строки
Группа:
Студенты:
Преподаватель:
Твой город,2009

Задание


Вариант 07.  Заменить в строке все символьные константы вида ‘A’ на соответствующие шестнадцатиричные (т.е. ‘А’ на 0х41).


Проектирование программы

Составные части:


1.Проверка введённой строки на наличие символьной константы типа ‘A’.

        if (str[i]==39)//Если кавычка до этого момента уже была, то новая встреченная кавычка задаётся закрывающей

        {

            if (k)

            {

                k=0;

            }

            else

            {

                k=1;

            }

        }

        else if (str[i]==' ')//Если символ - пробел, вывести пробел

        {

            cout << str[i];

        }
2.С помощью деления числового значения символа на 16 получаем шестнадцатеричную константу (результат и остаток деления на 16).

b=a/j;//Деление числа на 16

                  j=j/16;//Деление j на 16. В следующем шаге b делится на 1 и выводится остаток от деления предыдущего шага

                 if (b==15)//Эта и следующие строки - вывод результатов деления. Замена чисел от 10 до 15 их 16-ричными эквивалентами

a=a-b*j*16;//а становится равно остатку от деления a на 16 в начале шага цикла
3.Замена закавыченных символов на соответствующие шестнадцатеричные. «Обычные символы» оставляем без изменений.

4.Выводим массив.

                    if (b==15)//Эта и следующие строки - вывод результатов деления. Замена чисел от 10 до 15 их 16-ричными эквивалентами

                    {

                        cout << 'F';

                    }

                    else if (b==14)

                    {

                        cout << 'E';

                    }

                    else if (b==13)

                    {

                        cout << 'D';

                    }

                    else if (b==12)

                    {

                        cout << 'C';

                    }

                    else if (b==11)

                    {

                        cout << 'B';

                    }

                    else if (b==10)

                    {

                        cout << 'A';

                    }

                    else

                    {

                        cout << b;

                    }

            }

            else

            {

                cout << str[i];//Если символ не заковычен - вывести сам символ


Текст программы с комментариями




#include <iostream>

#include <string>

#include <stdio.h>

using namespace std;
void main()

{

    char str[100];

    char s[100];

    gets(str);

    bool k=0;

    for (int i=0; str[i]!=0; i++)//Цикл замены каждого отдельного символа строки

    {

        if (str[i]==39)//Если кавычка до этого момента уже была, то новая встреченная кавычка задаётся закрывающей

        {

            if (k)

            {

                k=0;

            }

            else

            {

                k=1;

            }

        }

        else if (str[i]==' ')//Если символ - пробел, вывести пробел

        {

            cout << str[i];

        }

        else

        {

            if (k)

            {

                int a;

                int b;

                a = (int) str[i];//а - числовое значение символа строки

                cout << "0x";//Вывод 0x

                int j=1;

                while (j*16<a)//Самое больше число, кратное 16 и меньшее а. Т.к. символов 256, то число - 16.

                {

                    j=j*16;

                }

                while (j>=1)

                {

                    b=a/j;//Деление числа на 16

                    j=j/16;//Деление j на 16. В следующем шаге b делится на 1 и выводится остаток от деления предыдущего шага

                    if (b==15)//Эта и следующие строки - вывод результатов деления. Замена чисел от 10 до 15 их 16-ричными эквивалентами

                    {

                        cout << 'F';

                    }

                    else if (b==14)

                    {

                        cout << 'E';

                    }

                    else if (b==13)

                    {

                        cout << 'D';

                    }

                    else if (b==12)

                    {

                        cout << 'C';

                    }

                    else if (b==11)

                    {

                        cout << 'B';

                    }

                    else if (b==10)

                    {

                        cout << 'A';

                    }

                    else

                    {

                        cout << b;

                    }

                    a=a-b*j*16;//а становится равно остатку от деления a на 16 в начале шага цикла

                }

            }

            else

            {

                cout << str[i];//Если символ не заковычен - вывести сам символ

            }

        }

    }
}

Пример работы программы




AB'C' DE'F'

AB0x43 DE0x46Для продолжения нажмите любую клавишу . . .


Ошибки и ограничения. Выводы


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

1. Реферат на тему Demonization Fear And Jealousy Essay Research Paper
2. Реферат на тему Cuban History Essay Research Paper History of
3. Практическая работа на тему Тактика следственного эксперимента
4. Курсовая Возникновение и деятельность системы социальных детских приютов в Беларуси
5. Реферат Развiццё еўрапейскай iнтэграцыi
6. Реферат на тему Tropicana Ads Essay Research Paper The marketing
7. Реферат Экономические основы механизма деятельности инвестиционных институтов
8. Курсовая Організація і шляхи підвищення економічної ефективності виробництва зерна
9. Контрольная работа на тему Кризис системы макроэкономического регулирования и кейнсианской теории в 70 х годах XX ст
10. Контрольная работа Экологический аудит в России