Лабораторная работа 0 – Потоковый ввод/вывод и динамическое выделение памяти в C++

Лабораторная работа для школ и вузов по решению задач по потоковому вводу/выводу и динамическому выделению памяти на языке C++ (Си++). Перечень задач лабораторной работы (клик по ссылке направляет на решение задачи, если таковое имеется):

  1. Часть 1. Потоковый ввод-вывод. Написать консольное приложение, принимающее с клавиатуры произвольную текстовую строку длиной до 80 символов и затем выводящую её в консоль задом наперёд.
  2. Часть 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;
}



Реклама

Поддержать