«ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет автоматики и вычислительной техники
Кафедра радиоэлектронных средств
Утвержден:
ТПЖА.18124-01 12 01-1-ЛУ
Flow-формы и диаграммы Насси-Шнейдермана
Программа по дисциплине
«Языки программирования»
Текст программы
ТПЖА.18124-01 12 01-1
Листов 2
1. Формы и диаграммы.cpp
//Вводится строка, содержащая буквы, целые неотрицательные числа и иные символы.
//Требуется все числа, которые встречаются в строке, поместить в отдельный целочисленный массив.
//Например, если дана строка "data 48 call 9 read13 blank0a", то в массиве должны оказаться числа 48, 9, 13 и 0.
//Воронова Мария-2021.ИКТб-1301
#include
#include
#include //isdigit
#include //atoi
#include
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int yn = 0;
do {
string str;
int* ar = nullptr;
int sizeAr = 0;
cout << "Введите строку:" << endl;
getline(cin, str);
for (int i = 0; i < str.length(); i++)
{
if (isdigit(str[i]))
for (int j{ i }; j < str.length(); j++)
if (!isdigit(str[j]) || j + 1 == str.length())
{
/* Извлекаем число из строки */
int nElement = atoi(str.substr(i, j).c_str());
cout << nElement << endl;
/* Инициализация буфера */
int* nBuffer = new int[sizeAr];
for (int k = 0; k < sizeAr; k++)
nBuffer[k] = ar[k];
/* Увеличиваем размер массива int */
sizeAr++;
/* Осовбождаем память под новый массив */
if (ar) delete[] ar;
/* Резервируем память под новый массив */
ar = new int[sizeAr];
/* Инициализация нового массива */
for (int k = 0; k < sizeAr; k++)
ar[k] = nBuffer[k];
ar[sizeAr - 1] = nElement;
/* Освобождаем буфер */
delete[] nBuffer;
i = j;
j = str.length() + 1;
}
}
cout << "Полученный массив:" << endl;
for (int i = 0; i < sizeAr; i++)
cout << ar[i] << ((i + 1 < sizeAr) ? " " : "");
delete[] ar;
cout << endl << "Хотите продолжить?ДА-1;Нет-0" << endl;
cin >> yn;
cin.ignore();
} while (yn == 1);
return 0;
}
Достарыңызбен бөлісу: |