Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_po_labaratornym_robotam_ASD-S.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
566.78 Кб
Скачать

4 Вихідні дані роботи

Дано рядок з цифрами та літерами, необхідно здійснити перетворення, з цього рядка в такий рядок, таким чином, що всі букви переносяться в початок, при цьому в кінець рядка всі вхідні в неї цифри зі збереженням вихідного взаємного порядку як серед цифр, так і серед решти букв рядка.

Вираз вводиться з вибираного файлу.

Також вираз вводиться з клавіатури.

  1. Хід виконання практичної роботи

У програмі використовується стек, який реалізовано таким чином:

type

tRange = Integer;

tValue = string;

tMas = array[0..MaxMem] of tValue;

tStack = record

Mas: tMas;

Top: tRange;

end;

Опис процедур і функцій:

function CreateStack: tLink;

Призначення: Створення стека.

Параметри: -

function Null (stack: tLink): boolean;

Призначення: Повертає true, якщо стек порожній.

Параметри: stack-посилання на стек [вх.]

function Top (stack: tLink): tValue;

Призначення: Повертає значення верхнього елементу стека.

Параметри: stack-посилання на стек [вх.]

procedure Pop (var stack: tLink);

Призначення: Видаляє верхній елемент стека.

Параметри: stack-посилання на стек [вх. - Вих.]

procedure Push (var stack: tLink; Val: tValue);

Призначення: Додає елемент в стек, який станови-ться верхнім елементом.

Параметри: stack-посилання на стек [вх. - Вих.]; Val-вставляється значення [вх.]

function TopPop (var stack: tLink): tValue;

Призначення: Повертає значення верхнього елементу стека і видаляє його з стека.

Параметри: stack-посилання на стек [вх. - Вих.]

procedure DestroyStack (var stack: tLink);

Призначення: Видаляє стек.

Параметри: stack-посилання на стек [вх. - Вих.]

function Transfer (InputStr: tValue): tValue;

Призначення: функція яка обробляє рядок, ко-торая вводиться в поле введення (InputStr) і виводить в поле виводу (Result).

Параметри: Inpustr [вх.]

Код програми

#include <iostream> //подключение основных команд

#include <fstream> //подключение работы над файлами

#include <string> //подключение строковой переменной

#include <Windows.h> //подключение любого языка

using namespace std; //стандартная Библиотека означает коллекцию классов и функций, написанных на базовом языке

int main() //основной код(процедура)

{ //операторская скобка открывается #1

SetConsoleCP(1251); //язык

SetConsoleOutputCP(1251); //язык

ifstream a; // переменная файла с которого считывает

ofstream b; // переменная файла в которй записывает

string stroka; // переменная запоминающая строку

a.open("vvod.txt"); //открываем файл

b.open("vivod.txt"); //открываем файл

char temp; //переменные символьного типа

int t2, t4; //переменны числовго типа

string chisla, bykv, str; // переменные строчного типа

while(getline(a,str)) //цикл считывание строк

{

t4=str.size(); // подсчет длины строки

for(int i=0; i<t4;i++) //цикл для обработки строки

{

temp=str[i]; //Приравниваем символ строки к переменной Темп

t2=(int)temp; //ID элемента в таблице аски

if(t2 > 47 && t2 < 58) //условие для отдельного вывода чисел

{

chisla=chisla+temp; //запоминание чисел в переменную типа строки

}

else

{

bykv=bykv+temp; //запоминание букв в переменную типа строки

}

}

b << bykv << " " << chisla << endl; //запись в файл остортированых строк

bykv="";// обнуление переменной типа строки для букв

chisla="";//обнуление переменной типа строки для чисел

}

a.close(); //закрываем файл

b.close(); //закрываем файл

cout << "Файл <a> был успешно записан в файл <b>!!!" << endl; //вывод об удачно сделаной операции над файлом

} //операторская скобка закрівается #1