Лабораторная работа 0 – Потоковый ввод/вывод и динамическое выделение памяти в C++
Лабораторная работа для школ и вузов по решению задач по потоковому вводу/выводу и динамическому выделению памяти на языке C++ (Си++). Перечень задач лабораторной работы (клик по ссылке направляет на решение задачи, если таковое имеется):
- Часть 1. Потоковый ввод-вывод. Написать консольное приложение, принимающее с клавиатуры произвольную текстовую строку длиной до 80 символов и затем выводящую её в консоль задом наперёд.
- Часть 2. Динамическое выделение памяти. Перепишите программу из части 1 так, чтобы она работала следующим образом: вначале пользователь вводит число – желаемое количество строк. Затем вводит эти строки, разделяя их нажатием клавиши “Enter”. По окончании ввода программа выводит на экран каждую из введённых строк задом наперёд.
Работоспособность всех программ проверена в CodeBlocks 16.01 (MinGW, Windows 10). Свои пожелания по улучшению программ можете давать в комментариях внизу страницы.
Скачать файл лабораторной и все исходные коды программ в архиве:
Часть 1. Потоковый ввод-вывод. Написать консольное приложение, принимающее с клавиатуры произвольную текстовую строку длиной до 80 символов и затем выводящую её в консоль задом наперёд.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "";
int i = 0;
while (str != "stop"){
cin >> str;
if (str.length() > 80){
cout << "String more than 80 characters!" << endl;
continue;
}
for (i = 0; i < str.length(); i++){
cout << str.substr(str.length() - i - 1, 1);
}
cout << endl;
}
return 0;
}
Часть 2. Динамическое выделение памяти. Перепишите программу из части 1 так, чтобы она работала следующим образом: вначале пользователь вводит число – желаемое количество строк. Затем вводит эти строки, разделяя их нажатием клавиши “Enter”. По окончании ввода программа выводит на экран каждую из введённых строк задом наперёд.
#include <iostream>
#include <string>
using namespace std;
void getMemory(string*& str, int n){
str = new string[n];
}
void outputLine(string*& str, int countStr){
int i, j;
for (i = 0; i < countStr; i++){
for (j = 0; j < str[i].length(); j++){
cout << str[i].substr(str[i].length() - j - 1, 1);
}
cout << endl;
}
}
int main()
{
int i, countStr = 0;
string *str;
cout << "Enter the numbers of rows: ";
cin >> countStr;
getMemory(str, countStr);
for (i = 0; i < countStr; i++){
cin >> str[i];
if (str[i].length() > 80){
cout << "String more than 80 characters!" << endl;
return 0;
}
}
outputLine(str, countStr);
delete[] str;
return 0;
}