Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
po_programmirovaniyu_otvety.rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
22.6 Mб
Скачать

Вопрос 36. Функции сравнения строк. Проиллюстрировать работу функций на примерах

char *s1, *s2;

int strcmp (s1, s2);

сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0, если строки одинаковые, 1, если 1 -я больше 2-й и -1, если меньше. char *s1, *s2; int num;

int strncmp (s1, s2, num) ; сравнивает первые num символов строки s1 с первыми num символами строки s2. Эта функция начинает сравнивать первый символ каждой строки. Если они равны, strncmp продолжает сравнивать следующие пары символов, пока не будут найдены различные символы или пока не будет достигнут конец строки. Возвращает результат типа int:

0, если строки одинаковые, 1, если 1 -я больше 2-й и -1, если меньше.

Пример использования функции

strcmp

#include "stdafx.h"

#include <iostream>

#include <cstring>

// для strncmp()

using namespace std;

int main ()

{

char droids[ ][10] = { "R2D2" , "C3PO" , "R2A6" }; //имеющиеся дроиды

cout << "Ищете R2-дроида астромеханика...\n";

for (int counter = 0 ; counter <= 2 ; counter++) // проход по дроидам

if ( strncmp( droids[counter], "R2**", 2 ) == 0 ) //сравниваем первые два

// символа строк

cout << "дроид [+_+] >> " << droids[counter] << "\n";

return 0;

}

Сравнение строк Пример 2

#include "stdafx.h"

#include <iostream>

#include <cstring>

using namespace std;

int main ()

{ char s1[ ] = "Строка";

char s2[ ] = "Строочка";

cout << " s1 == s1 -> " << setw(2) << strcmp(s1,s1) << endl;

// строка s1 = s1

cout << " s1 < s2 -> " << setw(2) << strcmp(s1,s2) << endl;

// строка s1 < s2

cout << " s2 > s1 -> " << setw(2) << strcmp(s2,s1) << endl;

// строка s2 > s1

system("pause");

return 0;

}

Вопрос 37. Функции преобразования числа в цифровую строку и обратно. Проиллюстрировать работу функций на примерах.

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

Первый, и, наверное, самый распространенный, но далеко не самый лучший - использование штатных библиотечных функций atoi, atof, atol. Эти функции входит в стандартную библиотеку языка и присутствует в любом компиляторе. Их объявления выглядит так:

int atoi(const char* str)

long atol(const char* str)

double atof(const char* str)

Пример:

#include <string>

#include <sstream>

template <typename T>

std::string toString(T val)

{

std::ostringstream oss;

oss<< val;

return oss.str();

}

template<typename T>

T fromString(const std::string& s)

{

std::istringstream iss(s);

T res;

iss >> res;

return res;

}

// Пример использования

std::string str;

int iVal;

float fVal;

str = toString(iVal);

str = tiString(fVal);

iVal = fromString<int>(str);

fVal = fromString<float>(str);

Вопрос 38. Понятие указателя. Способы инициализации указателей. Операции с указателями. Привести примеры работы с указателями на языке С/C++.

  • Указатель является объектом (переменной), хранящим адрес другого объекта.

  • Для обращения к объекту, на который указывает указатель (адрес которого хранится в указателе), используется оператор * (звёздочка), называемый оператором разыменования или косвенным обращением.

  • Для получения адреса объекта используется унарный оператор &.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]