Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
10 / 10 / 1
Регистрация: 13.12.2014
Сообщений: 87
1

Копирование строк в вводимом тексте

17.09.2015, 11:06. Показов 622. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Есть функция по копированию строк вводимого текста. Работает хорошо, но только с существующими строками. N - копируемая строка, M - номер строки, куда хотим копировать и как следствие сдвиг оставшегося текста вниз. Если вводить несуществующие строки (например всего строк 3, а копируем 5 в 4), то появляются пустые места. Надо каким-то образом ввести запрет на копирование и вставку несуществующих строк. Помогите, пожалуйста. Заранее благодарен.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//Функция поиска искомой строки
 
int search(CStringA &text, int number_line)
{
    int tmp = 0, i = 0;
    int temp;
    char* line  = text.GetBuffer();
    int lengh = text.GetLength();
    if (number_line <= 1)
    {
        return 0;
    }
    for (int L = 1; L < number_line; L++)
    {
        for (; i < lengh; i++)
        {
            if (line[i] != '\n')
            {
                
            }
            else
            {
                i++;
                break;
            }
        }
    }
    return i;
}
 
//Копирование строк
 
CStringA copy_lines(CStringA &text, int number_line)
{
    char* line = text.GetBuffer();
    int lengh = text.GetLength();
    int N = 0, M = 0;
    int temp = 0;
    printf("Enter the line number you wanna copy: ");
    std::cin >> N;
    std::cout << std::endl;
    printf("Enter the line number you wanna place paste the copied line: ");
    std::cin >> M;
    std::cout << std::endl;
    int i = 0, j = 0;
    char buffer[1000];
    CStringA res;
    int search_n = search(text, N);
    for (; line[search_n] != '\n' && search_n <= lengh; search_n++, i++)
    {
        buffer[i] = line[search_n];
    }
    buffer[i] = 0;
    int search_m = search(text, M);
    res = text.Left(search_m);
    res += buffer;
    res += '\n';
    res += text.Right(lengh - search_m);
    return res;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2015, 11:06
Ответы с готовыми решениями:

Написать программу, которая во вводимом с клавиатуры тексте сделает разбиение на предложения
Написать программу, которая во вводимом с клавиатуры тексте сделает разбиение на предложения....

Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным числом пробелов
Упражнение 1.20. Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным...

Определить количество цифр в тексте, вводимом с клавиатуры
Решить задачу 2 способами: используя рекурсивную и итеративную подпрограммы Определить количество...

Программа которая выводит статистику о вводимом тексте
Помогите Программа которая выводит статистику о вводимом тексте (количество слова и количество...

3
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
17.09.2015, 11:12 2
Цитата Сообщение от Michael_Nexus Посмотреть сообщение
C++
1
2
3
4
if (line[i] != '\n')
{
 
}
Цитата Сообщение от Michael_Nexus Посмотреть сообщение
C++
1
2
3
4
5
6
printf("Enter the line number you wanna copy: ");
std::cin >> N;
std::cout << std::endl;
printf("Enter the line number you wanna place paste the copied line: ");
std::cin >> M;
std::cout << std::endl;
где такому учат?
Цитата Сообщение от Michael_Nexus Посмотреть сообщение
C++
1
CStringA copy_lines(CStringA &text, int number_line)
зачем в функцию передавать аргумент, который ни разу не был использован?
0
10 / 10 / 1
Регистрация: 13.12.2014
Сообщений: 87
17.09.2015, 11:20  [ТС] 3
Kerry_Jr, ну в первом же всё логично, т.е. увеличиваем индекс до тех пор, пока не встретили перенос строки. А насчёт аргумента - случайно оставил, когда писал и эту функцию, и search для поиска.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
17.09.2015, 11:25 4
Michael_Nexus, вот это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int L = 1; L < number_line; L++)
{
    for (; i < lengh; i++)
    {
        if (line[i] != '\n')
        {
            
        }
        else
        {
            i++;
            break;
        }
    }
}
лучше выглядит так
C++
1
2
3
4
5
6
7
8
9
10
11
for (int L = 1; L < number_line; L++)
{
    for (; i < lengh; i++)
    {
        if (line[i] == '\n')
        {
            i++;
            break;
        }
    }
}
Так
C++
1
2
3
4
5
6
printf("Enter the line number you wanna copy: ");
std::cin >> N;
std::cout << std::endl;
printf("Enter the line number you wanna place paste the copied line: ");
std::cin >> M;
std::cout << std::endl;
делать некрасиво. Либо сишные функции ввода-вывода, либо плюсовые потоки ввода-вывода.
А конкретно Вашего вопроса: напишите функцию подсчета строк, если пользователь ввел некорректные значения, то либо повторять ввод, либо выходить из функции.
1
17.09.2015, 11:25
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2015, 11:25
Помогаю со студенческими работами здесь

Отображение количества оставшихся символов во вводимом тексте
помогите пожалуйста, нужно подсчитать сколько осталось ввести символов в сообщение. есть TextArea...

Сколько раз в вводимом тексте встречается каждое трехбуквенное слово
Выясните, сколько раз в вводимом тексте встречается каждое трехбуквенное слово.

Во вводимом с клавиатуры тексте удалить все пробелы, знаки табуляции
Нужно написать программу, которая во вводимом с клавиатуры тексте удалит все пробелы, знаки...

Заменить во вводимом тексте каждое слово 'man' словом 'woman'
Здравствуйте. Поможете разобраться с ниже приведенной задачей: Заменить во вводимом тексте...

Сформировать множества гласных и согласных букв, отсутствующих в тексте, вводимом с клавиатуры
Сформировать множества гласных и согласных букв, отсутствующих в тексте, вводимом с клавиатуры....

Создать программу, которая в вводимом тексте переписывает каждое слово в обратном порядке
Помогите создать программу, которая в вводимом тексте переписывает каждое слово в обратном порядке....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
Что такое паттерны программировани­я и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
Что такое javascript:void­­(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru