Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
ReLogan
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 12
#1

Разработка функции (размещение строки s1 в середине строки s2 длиной l) - C++

11.12.2012, 10:45. Просмотров 1381. Ответов 3
Метки нет (Все метки)

Здравствуйте! Собственно, дано задание разработать функцию:
Функция Center(s1,s2,l)
Назначение: центрирование — размещение строки s1 в середине строки s2 длиной l.

При разработке функции запрещено пользоваться функциями библиотек языка С/С++.
Помогите, пожалуйста, я понимаю, что это вроде бы несложно,но не представляю как правильнее это реализовать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 10:45     Разработка функции (размещение строки s1 в середине строки s2 длиной l)
Посмотрите здесь:

Размещение строки s1 в середине строки s2 - C++
1 Разработать процедуры и функции, которые обеспечивают выполнение операций, указанных в задании. 2 В контрольном примере предусмотреть...

Разместить строку s1 в середине строки s2 - C++
Предусмотреть все возможные комбинации входных параметров (нулевая длина строки, выход за пределы строки и т.д.), в том числе и...

Даны две строки длиной до 80 символов - C++
Даны две строки длиной до 80 символов. Необходимо: Удалить заданный символ в каждой строке. Описать в виде отдельной функции удаление...

Преобразовать строки длиной больше 10 символов - C++
С клавиатуры вводим число n типа int. Затем вводим n строк. Если в строке больше 10 символов, то преобразовать ее как на примере (первый и...

Разбить файл на строки длиной не более 60 символов - C++
Проблема в том, что функция, работает не корректно... А вот понять в чем проблема я чет не могу... (Хотя есть ощущение, что функция...

Из строки выделить подстроку длиной n символов, начиная с заданой позиции - C++
Извините за глупый вопрос. Нужно из сроки выделить подстроку, начиная с заданой позиции длиной n-символов. В Sql это substr...

В функции, для каждой строки матрицы M[n][k], максимальный элемент поменять местами с первым элементом строки - C++
В функции, для каждой строки матрицы M, максимальный элемент поменять местами с первым элементом строки. Дополнительных массивов и матриц...

Функция Delete(s,n,l) Назначение: удаление из строки s подстроки, начиная с позиции n, длиной l - C++
помогите задачку написать.

Удалить из строки S все группы длиной только N подряд стоящих одинаковых символов - C++
Помогите пожалуйста. Если можно, то с комментариями. Дана строка S и натуральное число N. Удалить из строки S все группы длиной только N...

Вывести на экран строки длиной больше 5 и меньше 20 символов из контейнера multiset<string> - C++
Здравствуйте, у меня такой вопрос, например существует контейнер multiset&lt;string&gt;, как можно вывести на экран строки длиной больше 5 и...

Определить среднюю длину строк в тексте и вывести строки с длиной меньше средней - C++
определить среднюю длину строк и вывестис длиной меньше средней я даже приблизительно немогу понять как это делать, вначале нужно...

Разработка программного модуля вставки строки заданной длины, содержащую хотя бы один перенос, в текстовый файл - C++
Желательно в программе Visual Studio c++. Тема:Разработка программного модуля вставки строки заданной длины, содержащую хотя бы один...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
11.12.2012, 11:12     Разработка функции (размещение строки s1 в середине строки s2 длиной l) #2
Цитата Сообщение от ReLogan Посмотреть сообщение
Здравствуйте! Собственно, дано задание разработать функцию:
Функция Center(s1,s2,l)
Назначение: центрирование — размещение строки s1 в середине строки s2 длиной l.

При разработке функции запрещено пользоваться функциями библиотек языка С/С++.
Помогите, пожалуйста, я понимаю, что это вроде бы несложно,но не представляю как правильнее это реализовать.
Просто в функцию передаёшь аргументы это эти строки s1 и s2, они должны быть типа string и 3 аргумент это длина второй строки. её можно узнать с помощью int k = length(s2).
В самой функции смотришь на эти строки как на массив символов.
например s1 = "qwerty"; s1[0] будет 'q'.
Ты можешь создать новый пустой массив символов и забить туда сначала элементы из строки s2 до середины, тоесть до k/2. Потом добавляешь все элементы из первой строки, и потом оставшиеся из второй строки.
примерно так:
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
string s1,s2;
int k = length(s2);
int poz =0;
copyfun(s1,s2,k)
{
char mas[50];
for (int i = 0; i < k/2; i++) {
      mas[i] = s2[i];
      poz = i;
}
for (int i = 0; i < length(s1); i++){
    mas[poz] = s1[i];
    poz++;}
 
for (int i=k/2; i < k; i++)
{
   mas[poz] = s2[i];
   poz++;
}
 
for (int i =0; i < 50; i ++)
cout << mas[i] << " ";
cout << endl;
}
ReLogan
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 12
11.12.2012, 11:15  [ТС]     Разработка функции (размещение строки s1 в середине строки s2 длиной l) #3
Проблема в том, что нельзя было использовать стандартные функции типа lenght. Спасибо большое, я уже сделал по-своему)

Может, кому-то пригодится:

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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
 
void center(char* s1, char* s2, int l)
{
 
    int centr=l/2;
    char* temp = s1;
    char* temp_a, *temp_b, *end;
    for (end = s1; *end; *end++);
    for (s1 += centr; *s2; *s1++ = *s2++, ++end) 
    {
      for(temp_a = end + 1, temp_b = end; temp_a > s1; *temp_a-- = *temp_b--);
    }
  cout << temp;
}
 
void main()
{
    setlocale(LC_ALL, "Ukrainian");
    int l;
    cout << "Введiть довжину другого рядка : ";
    cin >> l;
    char* s1 = new char[l];
    char* s2 = new char[l];
    cout << "Введiть перший рядок: ";
    cin >> s1;
    cout << "Введiть другий рядок: ";
    cin >> s2;
    cout << endl;
    center(s1, s2, l);
    getch();
}
6o6ep4ik
-9 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 175
28.10.2015, 19:24     Разработка функции (размещение строки s1 в середине строки s2 длиной l) #4
ReLogan, в твоей программе нужно вводить символ или строку из символов?
Yandex
Объявления
28.10.2015, 19:24     Разработка функции (размещение строки s1 в середине строки s2 длиной l)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru