Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

31-36 вопрос

.docx
Скачиваний:
61
Добавлен:
10.01.2016
Размер:
26.36 Кб
Скачать
  1. Алгоритм поиска максимального элемента матрицы и его индексов. Реализация алгоритма на языке С/C++.

1) отсортировать массив(пройтись последовательно по каждому элементу массива и выкинуть из него повторяющиеся(точнее создать новый массив и скопировать в него неповторяющиесяв новом массиве осуществить элементарный поиск максимального элемента 2) несортируя массив ищем максимальный(предполагая, а вдруг он будет в единственном экземпляре; в цикле ищем дубликаты(все) найденного значения и каким то образом исключаем их из массива; в оставшемся массиве опять ищем максимальный и все повторяем

#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

int i, j, n, m, mi(0), mj(0);

cout<<"Vvedite n: ";

cin>>n;

cout<<"Vvedite m: ";

cin>>m;

cout<<"Vvedite massiv:";

int** mas = new int* [n];

for(i = 0; i < n; ++i)

{

mas[i] = new int [m];

for(j = 0; j < m; ++j)

cin>>mas[i][j];

}

for(i = 0; i < n; ++i)

for(j = 0; j < m; ++j)

if(mas[i][j] > mas[mi][mj])

mi = i, mj = j;

cout<<"Max - mas["<<mi<<"]["<<mj<<"] = "<<mas[mi][mj];

cin.get();

cin.get();

system ("pause");

return 0;

}

32.Символы. Привести примеры обработки символов с использованием библиотечных функций на языке С/C++.

Функция ввода символов

Для ввода символов может использоваться функция

char getchar();

которая возвращает значение символа, введенного с клавиатуры.

Функция вывода символов

Для вывода символов может использоваться функция

char putchar(char);

которая возвращает значение выводимого символа и выводит на экран символ, переданный в качестве аргумента.

(пример)Посчитать количество введенных символов во введенной строке.

#include "stdafx.h"

#include <string>

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL, "");

char input[256];

cout<<"Введите строку: ";

cin>> input;

cout <<"Строка"<<input<<"содержится"<<strlen(input)<<"символов \n";

system ("pause");

return 0;

}

33.Символьные строки. Два эквивалентных способа объявления и инициализации строк. Привести примеры обработки строк в С/C++.

Объявление и инициализация строк.                 Строкой называется массив символов, который заканчивается пустым символом ‘\0’. Строка объявляется как обычный символьный массив, например,           

      char  s1[10];          

    char  *s2;              // указатель на строку Различие между указателями s1 и s2 заключается в том, что указатель s1 является именованной константой, а указатель s2 – переменной.             

    Строковые константы заключаются в двойные кавычки в отличие от символов, которые заключаются в одинарные кавычки. Например,                 “This is a string.” Длина строковой константы не может превышать 509 символов по стандарту..      При инициализации строк размерность массива лучше не указывать, это выполнит компилятор, подсчитав длину строки и добавив к ней единицу. Например,                 char  s1[ ] = “This is a string.”;       

     #include <string>  .  .  .  .  .  {  getline(cin,stroka);(ввод строки с клавы)  n=stroka.lenght(); (считает колл символов в строке)

    

34.Библиотечные функции языка С/C++ для работы со строками и символами. Привести примеры обработки строк с использованием библиотечных функций.

Функции для работы со строками объявлены в заголовочном файле string.h. Приведем некоторые из них:

char *strcpy(char *dest, const char *src);

копирует второй аргумент в первый. Возвращает указатель на копию. Память для dest должна быть заранее зарезервирована.

char *strdup(const char *s);

копирует строку во вновь создаваемую функцией malloc() область памяти. Возвращает указатель на созданную копию или 0 при неудаче. Программист ответственен за освобождение памяти функцией free();

size_t strlen(const char *s);

подсчитывает размер строки. Возвращает количество символов строки без нулевого символа. Тип size_t определен в файле string.h и других заголовочных файлах как целое без знака: typedef unsigned size_t;

char *strcat(char *dest, const char *src);

присоединяет вторую строку к первой. Возвращает указатель на начало нарощенной строки.

char *strchr(const char *s, int c);

сканирует строку s в поисках первого вхождения заданного символа с. Нулевой символ можно искать наряду с другими. Возвращает указатель на найденный символ или 0, если символа нет.

char *strrchr(const char *s, int с);

то же, что strchr, но находит последнее вхождение символа с в строку s.

char *strstr(const char *s1, const char *s2);

находит первое вхождение подстроки s2 в строку s1. Возвращает указатель на место первого вхождения или 0, если такового нет.

int strcmp(const char *s1, const char*s2);

сравнивает две строки. Возвращает целое меньше нуля, если s1 < s2, равное нулю, если s1 == s2, и большее нуля, если s1 > s2.

char *strpbrk(const char *s1, const char *s2);

сканирует первую строку в поисках первого вхождения любого символа из второй строки. Возвращает указатель на найденный символ или 0 при неудаче.

char *strtok(char *s1, const char *s2);

сканирует первую строку в поисках первого участка, не содержащего символов из s2.

  1. Алгоритмы копирования строк, реализованные через массивы и стандартные строковые функции языка С/C++.

strcpy() (от слова copy – копирование)

Реализуем копирование одной строки и её вставку на место другой строки.

#include <iostream>

using namespace std;

 

int main()

{

setlocale(LC_ALL, "rus");

 

char someText1[64] = "Сaйт purecodecpp.com!";

char someText2[] = "Основы С++";

 

cout << "Строка someText1 - \"" << someText1 << "\" \n";

cout << "Строка someText2 - \"" << someText2 << "\" \n\n";

 

int count = 0;

while (true) // запускаем бесконечный цикл

{

someText1[count] = someText2[count]; // копируем посимвольно

 

if (someText2[count] == '\0') // если нашли \0 у второй строки

{

break; // прерываем цикл

}

 

count++;

}

 

cout << "Строка someText1 после копирования someText2 -\n\"" << someText1 << "\" \n\n";

 

return 0;

}

36.Функции поиска одиночного символа и подстроки в строке. Проиллюстрировать работу функций в С/C++ на примерах.

char *s

char c

char *strchr (s,c)

поиск первого вхождения символа (с) в строке (s) В случаи удачного поиска возвращает указатель на место первого нахождения символа (с) а если не находит то возвращает NULL(пустой указатель)

char *s1,*s2

char *strstr(s1,s2)

функция ищет в строке s1 подстроку s2 и возвращает на нее указатель или NULL если не найдено

Соседние файлы в предмете Программирование на C++