Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
VolodiaVoz
31 / 31 / 12
Регистрация: 17.11.2010
Сообщений: 140
#1

Вставить в строку s содержимое s1 начиная с позиции n

14.07.2011, 13:55. Просмотров 3667. Ответов 25
Метки нет (Все метки)

Помогите пожалуйста написать программу!
Вставить в строку s содержимое s1 начиная с позиции n. То есть сначала идут n-первых символов s, тогда символы s1, а дальше-те символы, которые были у s до вставки s1, начиная с позиции n.
Это нужно сделать не используя библиотеки <string.h>, а создать собственную функцию Insert (s, s1, n) ...
Заранее спасибо!

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2011, 13:55
Ответы с готовыми решениями:

Вставить подстроку в строку, начиная с позиции n
Надо вставить подстроку в строку, начиная с позиции n.

Вставить одну строку в другую начиная с заданной позиции
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;windows.h&gt; using namespace...

Вставка в строку другой строки, начиная с заданной позиции
class String { protected: char*str;//Указатель на массив символов int...

Реализовать вставку подстроки в строку, начиная с заданной пользователем позиции
Доброго времени суток. Отстала по теме строки. Сижу читаю в инернете, но пока...

Удалить из строки заданное количество символов, начиная с заданной позиции. Преобразовать строку таким образом
Удалить из строки заданное количество символов, начиная с заданной позиции....

25
asics
14.07.2011, 13:57
  #2

Не по теме:

VolodiaVoz, Если не секрет, где учишься ?

0
VolodiaVoz
31 / 31 / 12
Регистрация: 17.11.2010
Сообщений: 140
14.07.2011, 14:05  [ТС] #3
Цитата Сообщение от asics Посмотреть сообщение

Не по теме:

VolodiaVoz, Если не секрет, где учишься ?

Не очень хорошо пишу на руском!
С++ не мой конек!
0
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 14:13 #4
читайте классику СЭэээр. http://msdn.microsoft.com и ничего писать не надо, ну а если уж сильно хочется, то:
C++
1
2
3
4
5
6
7
8
char * insertSTR(char *str1, char *str2, int n){
  int newSize = strlen(str1)+strlen(str2);
  char *newStr = new char[newSize];
  memset(newStr, '\0', newSize);
  strncpy(newStr, str1, n);
  strcat(newStr, str2);
  strcat(newStr, str1 + n);
}
ЗЫ: писал прям тут, не факт что скомпилиться

Добавлено через 2 минуты
+ нужно проверить, не больше ли число n строки str1 и т.д. и т.п., ну это думаю уже сами

Добавлено через 1 минуту
пардон, в конце нужно дописать return newStr;
0
xAtom
917 / 742 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.07.2011, 14:23 #5
Мой вариант.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <memory.h>
#include <string.h>
 
char*  insert(char* str, const char* spos, int pos) {
    int len = strlen(str);
    int cnt = strlen(spos);
    memmove(str + pos + cnt, str + pos, len + cnt);
    strncpy(str + pos, spos, cnt);
    return str;
}
 
 
int main(void)
{
   char str[32];
   strcpy(str, "subaru wrx.");
 
   puts( insert(str, "-impreza", 6) );
 
   getchar();
   return 0;
}
0
VolodiaVoz
31 / 31 / 12
Регистрация: 17.11.2010
Сообщений: 140
14.07.2011, 14:24  [ТС] #6
А как сделать собственную функцию Insert (s1, s2, p) - процедура вставки строки s1 в строку s2, начиная с позиции p.Наведемо пример действия процедуры вставки: Insert ('сон', 'л', 2), результатом будет - 'слон'. В твоем варианте мы использовали библиотеку <string.h> ее не нужно использовать!
0
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 14:30 #7
VolodiaVoz, разгадаешь загадку запостю решение:

"
перед тобой 3 ведра. в них есть 3 вида шаров: синие, красные и перемешанные (синие + красные).
ведра подписаны ("красные", "синие", "перемешанные"), но известно, что все они подписаны неверно.
не смотря в содержимое ведра ты можешь вытащить 1 шар из 1-го ведра. после этого ты должен сказать , что - где лежит. как это сделать?
"
1
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 14:47 #8
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
А как сделать собственную функцию Insert (s1, s2, p) - процедура вставки строки s1 в строку s2, начиная с позиции p.Наведемо пример действия процедуры вставки: Insert ('сон', 'л', 2), результатом будет - 'слон'. В твоем варианте мы использовали библиотеку <string.h> ее не нужно использовать!
ох ты ж ёжик.... ну если уж так сильно хочется, напиши так:
C++
1
2
3
4
5
6
7
8
9
10
11
char * myCrippleInsertChars(char * str1, int sizeStr1, char * str2, int sizeStr2, int polniyP){
   char * newStr = new char[sizeStr1 + sizeStr2];
   int newSizeIter = 0;
   for(int i = 0; i < polniyP; i++, newSizeIter++)
      newStr[newSizeIter] = str1[i];
   for(int i = 0; i < sizeStr2; i++, newSizeIter++)
      newStr[newSizeIter] = str2[i];
   for(int i = polniyP; i < sizeStr1; i++, newSizeIter++)
      newStr[newSizeIter] = str1[i];
   return newStr;
}
0
xAtom
917 / 742 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.07.2011, 14:47 #9
Вот без string.h
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
#include <stdio.h>
 
 
char*  insert(char* str, const char* spos, int pos) {
     char* tmp  = str;
     const char*  ps;
     int   len1, len2, cnt, i;
 
     for(len1 = 0, ps = spos; *ps; *ps++, len1++);
     for(len2 = 0, ps = str;  *ps; *ps++, len2++);
     cnt = len1;
     while(cnt--) {
         for(i = len2+len1; i >= pos; i--)
            *((str) + i + 1) = *((str)+ i);
     }
     str += pos;
     while(*spos)
        *str++ = *spos++;
     return tmp;
}
 
 
 
int main(int argc, char* argv[])
{
   char str[32] = { "hoe my." };
 
   puts( insert(str, "m", 2) );
 
   getchar();
   return 0;
}
0
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 14:47 #10
а вообще - это не правильное решение задачи, а правильное Вы получите, после отгадывания загадки)))
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
14.07.2011, 14:48 #11
ответ: вытащить из микса и сделать выводы по цвету шарика.
пости решение, а то мне тоже интересно как сделать
0
Net_Wanderer
235 / 208 / 29
Регистрация: 08.06.2011
Сообщений: 467
14.07.2011, 15:01 #12
Цитата Сообщение от OstapBender Посмотреть сообщение
VolodiaVoz, разгадаешь загадку запостю решение:

"
перед тобой 3 ведра. в них есть 3 вида шаров: синие, красные и перемешанные (синие + красные).
ведра подписаны ("красные", "синие", "перемешанные"), но известно, что все они подписаны неверно.
не смотря в содержимое ведра ты можешь вытащить 1 шар из 1-го ведра. после этого ты должен сказать , что - где лежит. как это сделать?
"
Имеем:
Код
  red    blue    mix
Берем из перемешанных, но т.к. все неверно, значит в этом ведре либо все синие, либо все красные:
1. Если попался красный, тогда
Код
  blue    mix    red
2. Попался синий -
Код
   mix    red    blue
0
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 15:09 #13
co6ak,
Net_Wanderer,
)) ну да верно

вытащить шарик из микса. допустим он красный - значит в миксе красные.
т.к в синем ведре могли бы быть только красные или микс, но красные уже в миксе - в синем микс.
в красном - синие.

задачка кстати с реального собеседования)
да и простая она довольно.
0
igorrr37
1864 / 1482 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
14.07.2011, 15:31 #14
таки ещё вариант
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void Insert(char* a, char* b, size_t n){
    char res[512], *p=res, *a1=a;
    do{
        if(p-res==n){
            for(; *p=*b; ++p, ++b);
        }
    }while(*p++=*a++);
    for(p=res; *a1=*p; ++a1, ++p);
}
 
int main (){
    char a[512]="aaaaa", *b="bbbb";
    size_t n=2;
    Insert(a, b, n);
    puts(a);
    return 0;
}
0
VolodiaVoz
31 / 31 / 12
Регистрация: 17.11.2010
Сообщений: 140
14.07.2011, 17:07  [ТС] #15
Цитата Сообщение от co6ak Посмотреть сообщение
ответ: вытащить из микса и сделать выводы по цвету шарика.
пости решение, а то мне тоже интересно как сделать
Но мы не знаем где есть mix ведра подписаны не правильно!
0
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 17:17 #16
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Но мы не знаем где есть mix ведра подписаны не правильно!
ух ты ж и тугой..... извини конечно
а действительно, где ты учишься? я надеюсь не в компьютерной области?
0
VolodiaVoz
31 / 31 / 12
Регистрация: 17.11.2010
Сообщений: 140
14.07.2011, 17:25  [ТС] #17
Цитата Сообщение от l_a_m Посмотреть сообщение
ух ты ж и тугой..... извини конечно
а действительно, где ты учишься? я надеюсь не в компьютерной области?
Фігню морозеш!!! Ти хорошо подумай - у тебя ответ не верен!
0
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 17:27 #18
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Фігню морозеш!!! Ти хорошо подумай - у тебя ответ не верен!
ответ на что? на задание по программированию или по логике?
0
VolodiaVoz
31 / 31 / 12
Регистрация: 17.11.2010
Сообщений: 140
14.07.2011, 17:33  [ТС] #19
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Фігню морозеш!!! Ти хорошо подумай - у тебя ответ не верен!
От где ти учишса? Сказал би где у тебя ошибка да много писать!
Откуда знаеш что взял с mix-видра!!
Короче ищо думай!
1
Kastaneda
14.07.2011, 17:33     Вставить в строку s содержимое s1 начиная с позиции n
  #20

Не по теме:

Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Но мы не знаем где есть mix ведра подписаны не правильно!
Сижу за компом, по телеку фоном идет реклама "Счастливы вместе", вот реально блондинку от туда напомнило :D


2
14.07.2011, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2011, 17:33
Привет! Вот еще темы с ответами:

Вставить в строку 1 содержимое строки 2 (#C) <String.h>
Задание: Нашёл тут у нас много полезностей, но не удалось собрать...

Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с первого бита
Ввести целое A. Извлечь 3 бита числа A, начиная со второго и вставить их в...

Заменить в числе a v битов, начиная с n-й позиции
Добрый вечер, уважаемые форумчане, подскажите пожалуйста решение сей задачи...


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Опции темы

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