Символы. Строки

Автор работы: Пользователь скрыл имя, 24 Декабря 2009 в 13:57, Не определен

Описание работы

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

Файлы: 1 файл

лаба 3.docx

— 53.58 Кб (Скачать файл)

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

Лабораторная  работа №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Для  продолжения нажмите любую клавишу  . . .

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

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

Информация о работе Символы. Строки