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

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

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

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

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

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

от 25%

Подписываем

договор

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

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



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


Лабораторная работа №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. Контрольная работа Деловые бумаги языковое оформление и редактирование
2. Диплом Исследование возможностей преподавателя в системе дистанционного обучения Moodle
3. Курсовая на тему Планування виробничо господарської діяльності деревообробного підприємства
4. Реферат Влияние физической нагрузки на организм занимающихся
5. Диплом на тему Оперативно розыскная деятельность в борьбе с организованной преступностью 2
6. Реферат на тему Манифест 17 октября 1905 года его политическое и юридическое значение
7. Реферат Охрана труда 10
8. Реферат на тему Silicon Essay Research Paper Silicon
9. Реферат на тему Satellites Essay Research Paper Satellites orbit the
10. Реферат Типовые композиции прямой рекламы