Скачать презентацию Программа 1 Определить количество запятых во вводимой последовательности Скачать презентацию Программа 1 Определить количество запятых во вводимой последовательности

prog_lk5_new.pptx

  • Количество слайдов: 68

Программа 1 Определить количество запятых во вводимой последовательности символов. Программа 1 Определить количество запятых во вводимой последовательности символов.

Таблица имён c – символ, вводимый с клавиатуры; k – количество введенных символов; n Таблица имён c – символ, вводимый с клавиатуры; k – количество введенных символов; n – количество введенных запятых.

#include<conio. h> #include<iostream> #include <stdio. h> using namespace std; int main() { setlocale(LC_ALL, #include #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int k, n; char c; k=n=0; do { cout << (k+1) << " Введите символ "; cin >> c; k++; if (c==', ') n++; } while (c!='. '); cout << «Количество введенных символов" << k << endl; cout << «Количество запятых = " << n << endl; return 0; }

Программа 2 Напечатать чётные числа в диапазоне 0 – n, где n – заданное Программа 2 Напечатать чётные числа в диапазоне 0 – n, где n – заданное целое число.

#include<conio. h> #include<iostream> #include <stdio. h> #include <math. h> using namespace std; int main() #include #include #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int x, n; cout << “Введите целое число n= "; cin >> n; cout << «Четные числа в интервале [0, n]: "; for (x=0; x<=n; x++) { if (x%2) continue; cout << x << " "; } return 0; }

Массивы и строки Массивы и строки

Формат • для одномерного массива тип<имя массива> [размер] • для двумерного массива тип<имя массива> Формат • для одномерного массива тип<имя массива> [размер] • для двумерного массива тип<имя массива> [размер1][размер2]

Примеры int a[100]; unsigned arr[40]; long double a 1[20], char ch[80]; Примеры int a[100]; unsigned arr[40]; long double a 1[20], char ch[80];

Инициализация массивов Инициализировать массив, т. е. присвоить элементам массива некоторые начальные значения. Примеры: a) Инициализация массивов Инициализировать массив, т. е. присвоить элементам массива некоторые начальные значения. Примеры: a) int a[3][5]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; b) char str[7]={‘r’, ’o’, ’A’, ’z’, ’X’, ’+’, ’b’}; c) float c[]={1. 1, 2. 2, 3. 3, 4. 4, 5, 6}; при инициализации массива без указания его размера компилятор сам определит необходимое количество элементов массива

Программа 3 Сформировать целочисленный массив. Программа 3 Сформировать целочисленный массив.

// Программа 19. Формирование целочисленного массива #include <iostream> #include <conio. h> using namespace std; // Программа 19. Формирование целочисленного массива #include #include using namespace std; int main() { int x[10], k; setlocale(LC_ALL, "rus"); cout << “Массив x[k]: “; for (k=0; k<10; k++) { x[k]=k; cout << x[k] << " "; } while (!kbhit()); return 0; }

Программа 4 Напечатать матрицу. Программа 4 Напечатать матрицу.

// Программа 20. Печать матриц. #include <iostream> #include <conio. h> using namespace std; int // Программа 20. Печать матриц. #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); const int k=3, l=3; int c[k][l]={1, 2, 3, 4, 5, 6, 7, 8, 9}; int i, j; for (i=0; i

Программа 5 Сформировать матрицу с помощью генератора случайных чисел. Программа 5 Сформировать матрицу с помощью генератора случайных чисел.

// Программа 21. #include <iostream> #include <conio. h> #include <stdlib. h> #include <time. h> // Программа 21. #include #include #include #include using namespace std; int main() { int c[100], i, j, k, l; srand(time(0)); cout << “Введите количество строк k="; cin >> k; cout << «Введите количество столбцов l="; cin >> l; for (i=0; i

Программа 6 Задан одномерный массив целых чисел. Выполнить сортировку его элементов по возрастанию. Метод Программа 6 Задан одномерный массив целых чисел. Выполнить сортировку его элементов по возрастанию. Метод “пузырька”.

Метод «пузырька» • Алгоритм состоит в повторяющихся проходах по сортируемому массиву. • На каждой Метод «пузырька» • Алгоритм состоит в повторяющихся проходах по сортируемому массиву. • На каждой итерации последовательно сравниваются соседние элементы, и, если порядок в паре неверный, то элементы меняют местами. • За каждый проход по массиву как минимум один элемент встает на свое место, поэтому необходимо совершить не более n 1 проходов, где n размер массива, чтобы отсортировать массив.

Пример • a[n] = {8, 5, 6, 3} 1 шаг: 8; 5; 6; 3 Пример • a[n] = {8, 5, 6, 3} 1 шаг: 8; 5; 6; 3 5; 8; 6; -3 3; 8; 6; 5 2 шаг: 3; 8; 6; 5 3; 6; 8; 5 3; 5; 8; 6 3 шаг: 3; 5; 8; 6 3; 5; 6; 8

Обозначения • • n – количество элементов; a[n] – массив целых чисел; i, j Обозначения • • n – количество элементов; a[n] – массив целых чисел; i, j – текущие номера элементов; r – “ячейка обмена”.

Начало 1 2 i=0 n a[n] j=i+1 a[n] Конец a[i]>a[j] 1 да r=a[i]=a[j]=r j=j+1 Начало 1 2 i=0 n a[n] j=i+1 a[n] Конец a[i]>a[j] 1 да r=a[i]=a[j]=r j=j+1 да j

#include <iostream> #include <conio. h> #include <stdlib. h> #include <time. h> using namespace std; #include #include #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int a[100]; int i, j, n, r; cout << “Введите размерность массива n="; cin >> n; for (i=0; ia[j]) { r=a[i]; a[i]=a[j]; a[j]=r; } cout << «Отсортированный массив a[n]: "; for (i=0; i

Программа 7 Задан одномерный массив целых чисел. Выполнить сортировку его элементов по возрастанию. Метод Программа 7 Задан одномерный массив целых чисел. Выполнить сортировку его элементов по возрастанию. Метод попарных сравнений.

Пример • x[n] = {8, 5, 6, 3} 1 шаг: 8; 5; 6; 3, Пример • x[n] = {8, 5, 6, 3} 1 шаг: 8; 5; 6; 3, a=true 5; 8; 6; 3, a=false 5; 6; 8; -3, a=false 5; 6; 3; 8, a=false 2 шаг: 5; 6; 3; 8, a=true 5; 6; -3; 8, a=false 5; 3; 6; 8, a=false 3 шаг: 5; -3; 6; 8, a=false 3; 5; 6; 8, a=false 4 шаг: -3; 5; 6; 8, a=true

Обозначения • • • x[n] заданный массив целых чисел; n количество элементов в массиве Обозначения • • • x[n] заданный массив целых чисел; n количество элементов в массиве а[n]; i номер элемента в массиве; u ячейка обмена; a флаг перестановок.

Начало 1 a=false n a=false a[n] Нет Да a[n] a=true 1 i=0 Конец x[i]>x[i+1] Начало 1 a=false n a=false a[n] Нет Да a[n] a=true 1 i=0 Конец x[i]>x[i+1] Да u=x[i]=x[i+1]=u a=false i=i+1 Да i

// Программа 22. #include <iostream> #include <conio. h> #include <stdlib. h> #include <time. h> // Программа 22. #include #include #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int x[100]; int i, j, n, u; bool a; cout << “Введите размерность массива n="; cin >> n; for (i=0; ix[i+1]) { u=x[i]; x[i]=x[i+1]; x[i+1]=u; a=false; } } } cout << «Упорядоченный массив x[n]: "; for (i=0; i

Строки Строки

Строки • Строка — последовательность (массив) символов. • Строки в С/С++ представляются как массивы Строки • Строка — последовательность (массив) символов. • Строки в С/С++ представляются как массивы элементов типа char, заканчивающиеся нультерминатором • Символьные строки состоят из набора символьных констант заключённых в двойные кавычки. • При объявлении строкового массива необходимо учитывать наличие в конце строки нуль терминатора, и отводить дополнительный байт под него.

Пример char string[10]; • string – имя строковой переменной • 10 – размер массива, Пример char string[10]; • string – имя строковой переменной • 10 – размер массива, в данной строке может поместиться 9 символов , последнее место отводится под нуль терминатор.

Строки • Строка может содержать символы, цифры и специальные знаки. • Строки заключаются в Строки • Строка может содержать символы, цифры и специальные знаки. • Строки заключаются в двойные кавычки. • Имя строки является константным указателем на первый символ.

Инициализация строки char string[10] = Инициализация строки char string[10] = "abcdefghf"; Посимвольная инициализация строки: char string[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'f', ''}; Десятый символ это нуль терминатор. Инициализация строки без указания размера: char string[] = "abcdefghf";

Инициализация строки Массив строк: char s[3][25] = { Инициализация строки Массив строк: char s[3][25] = {"Пример", "использования", "строк"}; Массив из 3 х строк по 25 байт каждая.

Возможности работы со строками • функции стандартной библиотеки С; • библиотечный класс С++ string; Возможности работы со строками • функции стандартной библиотеки С; • библиотечный класс С++ string;

Функции стандартной библиотеки С копирования строк (strcpy, strncpy); сравнения (strcmp); объединения строк (strcat, strncat); Функции стандартной библиотеки С копирования строк (strcpy, strncpy); сравнения (strcmp); объединения строк (strcat, strncat); поиска подстроки (strstr); поиска вхождения символа (strchr, strrchr, strpbrk); • определения длины строки (strlen); • и др. • • •

Заголовочные файлы • <ctype. h>, <cctype> содержат объявления функций для классификации и преобразования отдельных Заголовочные файлы • , содержат объявления функций для классификации и преобразования отдельных символов; • , содержат в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие.

Ввод – вывод строк Ввод – вывод строк

Использование объектов cout и cin Программа 8. Ввод вывод строк с использованием объектов cout, Использование объектов cout и cin Программа 8. Ввод вывод строк с использованием объектов cout, cin

// Пример 1 // Ввод вывод строк с использованием объектов cout, cin. #include <iostream> // Пример 1 // Ввод вывод строк с использованием объектов cout, cin. #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); char str[80]; system ("cls"); cout << "Введите строку символов str: "; cin >> str; cout << "Вы ввели строку: " << str << endl; while (!kbhit()); return 0; }

Использование методов getline или get класса iostream Функции предназначены для ввода данных из потока, Использование методов getline или get класса iostream Функции предназначены для ввода данных из потока, например, для ввода данных из консольного окна. Формат вызова методов: cin. getline (s, n) cin. get(s, n)

Использование методов getline или get класса iostream • Метод getline считывает из входного потока Использование методов getline или get класса iostream • Метод getline считывает из входного потока (n-1) символов или менее и записывает их в строковую пере менную . s • Символ перевода строки также считывается из входного потока, но не записывается в строковую переменную, вместо него размещается завер шающий 0. • Символ перевода строки ‘n’ появляется во входном потоке после нажатия клавиши Enter. • Метод get работает аналогично, но не оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий .

Программа 9 Ввод вывод строк с использованием методов getline и get Программа 9 Ввод вывод строк с использованием методов getline и get

// Пример 2 // Ввод вывод строк с использованием методов getline и get #include // Пример 2 // Ввод вывод строк с использованием методов getline и get #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); char str[80]; const int n=80; cout << "Введите строку символов str: "; cin. getline (str, n); cout << "Вы ввели строку: " << str << endl; cout << "Введите строку символов str: "; cin. get (str, n); cout << "Вы ввели строку: " << str << endl; while (!kbhit()); return 0; }

Функции ввода вывода библиотеки С • • scanf(); printf (); gets (); puts (). Функции ввода вывода библиотеки С • • scanf(); printf (); gets (); puts ().

scanf() • Является процедурой ввода общего назначения, считывающей данные из пото ка stdin. • scanf() • Является процедурой ввода общего назначения, считывающей данные из пото ка stdin. • Может считывать данные всех базовых типов и автоматически конвертировать их в нужный внутренний формат. Формат: scanf(const char *format, arg-list)

scanf() Код Значение %c Считать один символ %d Считать десятичное число целого типа %i scanf() Код Значение %c Считать один символ %d Считать десятичное число целого типа %i Считать целое число в любом формате %e %f %g Считать число с плавающей точкой %o Считать восьмеричное число %s Считать строку %x Считать шестнадцатеричное число %p Считать указатель %n Принять целое значение, равное кол ву прочитанных символов %u Считать десятичное целое без знака %% Считать знак процента

Примеры scanf() • scanf( Примеры scanf() • scanf("%d", &co); считать целое число и присвоить его переменной сo • scanf("%s", address); считать строку и сохранить ее в массив address

printf() • Записывает в stdout аргументы из списка arg list под управлением строки, на printf() • Записывает в stdout аргументы из списка arg list под управлением строки, на которую указывает аргумент format. • Формат: • printf(const char *format, arg-list)

printf() Код Формат %с Символ типа char %d %i Десятичное число целого типа со printf() Код Формат %с Символ типа char %d %i Десятичное число целого типа со знаком %f Десятичное число с плавающей точкой %о Восьмеричное целое число без знака %s Строка символов %u Десятичное число целого типа без знака %x или %X Шестнадцатеричное целое число без знака (буквы нижнего или верхнего регистра) %p Вывести на экран значение указателя %% Выводит символ %

Пример printf() • printf ( Пример printf() • printf ("Hello %с %d %s", ‘a’, 17, “world!"); Результат “Hello a 17 world”

// Пример // Ввод вывод строк с использованием функций printf, scanf #include <stdio. h> // Пример // Ввод вывод строк с использованием функций printf, scanf #include #include #include int main() { setlocale(LC_ALL, "rus"); char str[80]; printf ("Введите строку символов str: "); scanf ("%s", str); printf ("Вы ввели строку: %s", str); while (!kbhit()); return 0; }

Примечание • Если необходимо, чтобы функция считала за знак разделителя только конец строки, то Примечание • Если необходимо, чтобы функция считала за знак разделителя только конец строки, то рекомендуется использовать следующий формат: scanf ("%[^n]s", str);

gets() • Cчитывает символы из стандартного потока ввода до символа новой строки n или gets() • Cчитывает символы из стандартного потока ввода до символа новой строки n или до тех пор, пока не будет достигнут конец файла EOF, после чего сохраняет считанные символы в строку типа char. • Символ новой строки n не копируется в строку. • Нулевой символ автоматически добавляется последнего копируемого символа в string, чтобы сигнализировать о конце строки. Формат: gets (string);

puts() • Выводит строку типа char*, на которую указывает параметр string в стандартный поток puts() • Выводит строку типа char*, на которую указывает параметр string в стандартный поток вывод и добавляет символ новой строки ‘n’. • Заключительный, нулевой символ не копируется в стандартный поток вывода. Формат: puts(string);

// Программа // Ввод вывод строк с использованием функций gets() и puts() #include <stdio. // Программа // Ввод вывод строк с использованием функций gets() и puts() #include #include #include int main() { setlocale(LC_ALL, "rus"); char str[80]; printf ("Введите строку символов str: "); gets (str); printf ("Вы ввели строку: "); puts (str); while (!kbhit()); return 0; }

Операции со строками Операции со строками

/* Программа Использование библиотечных функций обработки строк */ #include <iostream> #include <stdio. h> #include /* Программа Использование библиотечных функций обработки строк */ #include #include #include #include #include #include using namespace std; int main ( ) { setlocale(LC_ALL, "rus"); int n; char str[80], s 1[80], s 2[80]; char first[20], second[10]; // Функция считывания символов с клавиатуры GETS() printf (" 1 функция GETS ( )n"); cout<<"Введите строку символов: "; gets(str); cout<<"Вы ввели следующие символы: "; printf ("%s", str); printf ("nn");

// Функция копирования строки STRCPY() // и функция объединения (сцепления) 2 х строк STRCAT() // Функция копирования строки STRCPY() // и функция объединения (сцепления) 2 х строк STRCAT() printf ("2 функции STRCPY () и STRCAT ()n"); strcpy (first, "Hello "); strcpy (second, "Mickle !"); strcat (first, second); printf ("%s", first); printf ("nn");

// Функция определения длины строки STRLEN () printf ( // Функция определения длины строки STRLEN () printf ("3 функция STRLEN()n"); printf ("Введите строку символов: "); gets (str); printf ("Результат: во введенной строке содержится %d", strlen(str)); printf (" символов. "); printf ("nn");

// Функция сравнения STRCMP () cout<< // Функция сравнения STRCMP () cout<<"4 функция STRCMP()n"; cout<<"Введите строку символов s 1: "; gets(s 1); printf ("Введите строку символов s 2: "); gets (s 2); printf ("Длина s 1 = %dn", strlen(s 1)); printf ("Длина s 2 = %dn", strlen(s 2)); if (!strcmp(s 1, s 2)) printf ("Эти строки равны. n"); strcat (s 1, s 2); printf ("%sn", s 1); printf ("nn");

printf ( printf ("5 Печать введенной с клавиатуры строки символовn"); printf (" в обратном порядке. n"); printf ("Введите строку символов: "); gets (str); printf ("Вы ввели следующие символы: "); printf ("%s", str); cout<=0; n ) printf ("%c", str[n]); while (!kbhit ()); }

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

Пример 1. Задан массив слов. Определить количество символов в словах. Обозначения: • a[n] – Пример 1. Задан массив слов. Определить количество символов в словах. Обозначения: • a[n] – массив слов; • n – количество слов; • i – текущий номер слова; • b[i] – массив, элементы которого количество символов в словах.

Отладочный пример n=3; a[n] = {abc; qq; xxxxx}; Результат: b[n] = {3; 2; 5} Отладочный пример n=3; a[n] = {abc; qq; xxxxx}; Результат: b[n] = {3; 2; 5}

#include<iostream> #include<conio. h> #include<string. h> #include <locale> using namespace std; int i, n, b[10]; #include #include #include #include using namespace std; int i, n, b[10]; char a[10]; int main() { setlocale(LC_ALL, "rus"); cout << « Введите количество слов n="; cin >> n; cout << "n Введите слова, после каждого слова Enter: n"; for (i=0; i> a[i]; for (i=0; i

Пример 2 Задан массив слов. Определить количество слов, в которых встречается буква, вводимая с Пример 2 Задан массив слов. Определить количество слов, в которых встречается буква, вводимая с клавиатуры. Обозначения: n количество слов; a[n] массив слов; c буква, вводимая с клавиатуры; m количество слов с буквой “с”; i текущий номер слова; l длина i го слова; j текущий номер буквы в слове.

Отладочный пример n=5; a[n]= {asd; xqxx; cfx; klm; xxxxx}; c=x. Результат: m=3 Отладочный пример n=5; a[n]= {asd; xqxx; cfx; klm; xxxxx}; c=x. Результат: m=3

Начало 1 n i=0 a[n] i<n Нет Да c a[n] j=0 Конец m=0 Нет Начало 1 n i=0 a[n] i

#include<iostream> #include<string. h> #include <locale> using namespace std; int i, j, l, m, n; #include #include #include using namespace std; int i, j, l, m, n; char a[30][10], c; int main() { setlocale(LC_ALL, "rus"); cout << "Введите количество слов n="; cin >> n; cout << "n. Введите список слов; после каждого слова Enter: n"; for (i=0; i> a[i]; cout << "n. Введите символ c="; cin >> c; m=0; for (i=0; i