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

Вставить в строку 1 содержимое строки 2 (#C) <String.h> - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 18:44     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #1
Задание:
Ввести две символьных строки. Выполнить вставку второй строки в первую, с позиции, введенной с клавиатуры.

Нашёл тут у нас много полезностей, но не удалось собрать программу... Помогите.

C++
1
2
3
4
5
6
7
8
9
10
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);
}
return newStr;
Я решил эту задару без помощи библиотеки <string>

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
#include <stdio.h>                      /*Подклячение стандартной библиотеки ввода-вывода*/
#include <string.h>                     /*Подключение библиотеки работы со строками*/
 
int main(void)                          /*Вход в программу*/
{
int a, b, n, i, k, kolsim1, kolsim2;    /*Иницилизация данныйх*/
char str1[80];                          /*Иницилизация данныйх*/
char str2[80];                          /*Иницилизация данныйх*/
char buf[160];                          /*Иницилизация данныйх*/
printf ("Vvedite pervuy stroku \n");    /*Вывод строки на экран*/ 
scanf("%s", str1);                      /*Ввод символов с клавиатуры в память*/
printf ("Vvedite vtoruy stroku \n");    /*Вывод строки на экран*/
scanf("%s", str2);                      /*Ввод символов с клавиатуры в память*/
kolsim1=strlen(str1);                   /*Получение количества символов в строке*/
kolsim2=strlen(str2);                   /*Получение количества символов в строке*/
a=kolsim1+kolsim2;                      /*Получение количества всех введенных символов*/
b=-1;                                   /*Присваивание значения переменной, для правильного*/
                                        /*формирования счетчика*/
printf ("Vvedite pozitciu n: \n");      /*Вывод строки на экран*/
scanf("%0d", &n);                       /*Ввод символов с клавиатуры в память*/
if (n<=kolsim1)                         /*Проверка правильности введенных данных*/
    {
    for(i=0;i<n;i++)                    /*Цикл заполнения буферного массива элементами, из первой*/
        {                               /*строки*/
        b=b+1;                          /*Увеличение счетчика*/
        buf[b]=str1[i];                 /*Присваивание значения элемента буферного массива элементом*/
        }                               /*из первой строки*/
    for(k=0;k<kolsim2;k++)              /*Цикл заполнения буферного массива элементами из второй*/
        {                               /*строки. Начиная с позиции n.*/
        b=b+1;                          /*Увеличение счетчика*/
        buf[b]=str2[k];                 /*Присваивание значения элемента буферного массива элементом*/
        }                               /*из первой строки*/
    for(;i<kolsim1;i++)                 /*Цикл продолжения замиси элементов из первго массива в бу-*/
        {                               /*ферный массив*/
        b=b+1;                          /*Увеличение счетчика*/
        buf[b]=str1[i];                 /*Присваивание значения элемента буферного массива элементом*/
        }                               /*из первой строки*/
    buf[b+1]='\0';                      /*Запись NULL-терминатора, для верного вывода на экран*/
    printf ("Poluh'ennaja stroka %s\n", buf);   /*Вывод полученной строки*/
    return 0;                           /*Завершение программы*/
    }
else                                    /*Обработка неверных введенных данных*/
    {
    printf ("!!! Oshibka n !!!\n");     /*Вывод строки на экран*/
    return 0;                           /*Завершение программы*/
    }
}

Нужно решить при помощи библиотеки STRING и как можно короче. Жду вашех предложений.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex_Konkov
51 / 11 / 2
Регистрация: 11.05.2012
Сообщений: 21
16.05.2012, 19:03     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
int main()
{
    string s1,s2;
    int x;
    cin>>s1>>s2;
    cout<<"nomer posicii: ";cin>>x;
    s1=s1.insert(x,s2);
    cout<<s1;
_getch();
return 0;
}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 19:04     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
 
int main() {
    std::string first;
    std::string second;
    std::string::size_type position;    
    
    std::cout << "first? ";
    std::cin >> first;
    std::cout << "second? ";
    std::cin >> second;
    std::cout << "position? ";
    std::cin >> position;
    
    first.insert(position, second);
    
    std::cout << "first: " << first << std::endl;
    std::cout << "second: " << second << std::endl;
}
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 19:28  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #4
Alex_Konkov,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>                // тут поставил .h
#include <conio.h>
#include <string.h>                    // тут поставил .h
using namespace_std                 // выдаёт ошибку где стоит "_" (я поставил для пометки ошибки)
 
int main()
{
    string s1,s2;                        // тут на запятой ошибку светит
    int x;
    cin>>s1>>s2;                      // здесь на 3м знаке ">", и после ";"
    cout<<"nomer posicii: ";cin>>x;
    s1=s1.insert(x,s2);
    cout<<s1;
 getch();                               //тут убрал _
return 0;
}
Подскажите, может сможите подправить мою программу ??? И был бы рад чтоб доделали свою.
Моя: ( не короткая но библиотекой string написана)
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
#include <stdio.h>
#include <memory.h>
#include <string.h>
 
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);
  return newStr;
}
int main(void)
{
  int n, kolsim1;
  char str1[80];
  char str2[80];
  printf ("Vvedite pervuy stroku \n");
  scanf("%s", str1);
  printf ("Vvedite vtoruy stroku \n");
  scanf("%s", str2);
  kolsim1=strlen(str1);
  printf ("Vvedite pozitciu n: \n");
  scanf("%d", &n);
  if (n<=kolsim1)
  {
    for                                                         
    printf ("Poluh'ennaja stroka %s\n", newStr);           //* СВЕТИТ ОШИБКУ ПЕРЕД  printf *//
    return 0;                                                         //*  не знаю что написать в for *//
  }
  else
{
 printf ("!!! Oshibka n !!!\n");
 return 0;
 }
}
Добавлено через 3 минуты
gray_fox, Извините в вашей программе совсем ничего не понят ? Она хоть на с ? или хоть на с++ ??
Alex_Konkov
51 / 11 / 2
Регистрация: 11.05.2012
Сообщений: 21
16.05.2012, 19:29     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #5
моя не работает?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 19:31     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #6
Цитата Сообщение от boyfromsun Посмотреть сообщение
Она хоть на с ? или хоть на с++ ??
))) С++

Добавлено через 1 минуту
Если надо на С, то для этого есть другой раздел.
Alex_Konkov
51 / 11 / 2
Регистрация: 11.05.2012
Сообщений: 21
16.05.2012, 19:35     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s1,s2;
    int x;
    cin>>s1>>s2;
    cout<<"nomer posicii: ";cin>>x;
    s1=s1.insert(x,s2);
    cout<<s1;
return 0;
}
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 19:36  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #8
Alex_Konkov,
gray_fox,
Я пользуюсь программами "Turbo C++ IDE" и "Borland C++ for DOS"

В программировании не силён... Делаю задачи по книжкам и при помощи интернета... И не сильно разбираюсь в программах... Вроде же написано С++ Но если я не прав, бога ради простите... Нужно сделать работу... Первый раз делал недели 3 эту задачу и сделал без библиотеки string, преподаватель сказал допустит к экзамену если перепишу её и напишу при использовании функций библиотеки string... Экзамен завтра, ну можно будет сдать после завтра... А как хочется остаться без хвостов..
Alex_Konkov
51 / 11 / 2
Регистрация: 11.05.2012
Сообщений: 21
16.05.2012, 19:43     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s1;
    string s2;
    int x;
    cout<<"1 stroka: ";cin>>s1;
    cout<<"2 stroka: ";cin>>s2;
    cout<<"nomer posicii: ";cin>>x;
    s1=s1.insert(x,s2);
    cout<<s1;
return 0;
}
Добавлено через 26 секунд
спрашивай если не работает

Добавлено через 3 минуты
проверил?
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 19:49  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #10
Alex_Konkov, Наверно всё таки на языке #C нужно а то что у меня на программах написано "Turbo C++ IDE" и "Borland C++ for DOS" то это просто написано и это наверно не C++.... Потому что не работает... И у этих программ библиотека стринг пишется так #include <string.h>...

Если я вас взбаламутил простите...
Вот ссылка на то чем работаю http://narod.ru/disk/49463689001.1ee...o%20C.zip.html
Alex_Konkov
51 / 11 / 2
Регистрация: 11.05.2012
Сообщений: 21
16.05.2012, 19:56     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #11
не в этом суть, скопируй ошибки посмотреть

Добавлено через 3 минуты
скопируй ошибки посмотреть и дело не в компиляторах, там различия минимальны
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 20:02  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #12
Alex_Konkov, Расскажите как сразу все ошибки скопировать ???
А то я как дурак скриншотов наделал:
http://saveimg.ru/show-image.php?id=...a74be915d28e94
http://saveimg.ru/show-image.php?id=...51af6da64f120e
http://saveimg.ru/show-image.php?id=...9139d2c08ccdba
http://saveimg.ru/show-image.php?id=...e910ffc7c96329

П,С, я выше кинул ссылку на программу. Весит 3 м.б. Ставится 3 сек. Может попробуете?

Спасибо. Что пытаетесь помочь.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 20:11     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #13
Цитата Сообщение от boyfromsun Посмотреть сообщение
Я пользуюсь программами "Turbo C++ IDE" и "Borland C++ for DOS"
Откуда я знаю, чем вы пользуетесь) Тем более, это ни на что не должно влиять (ну, в теории))) ).
Так попробуй:
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>    /* ведь этот string имелся ввиду, да? */ 
 
 
#define STR_MAX_LENGTH 256
 
 
int main() {
    char first[STR_MAX_LENGTH];
    char second[STR_MAX_LENGTH];
    char result[STR_MAX_LENGTH];
    int position;
    
    printf("first? ");
    scanf("%s", first);
    printf("second? ");
    scanf("%s", second);
    printf("position? ");
    scanf("%d", &position);
    
    strncpy(result, first, position);
    strcpy(result + position, second);
    strcat(result, first + position);
    
    printf("result: %s\n", result);
    
    return EXIT_SUCCESS;
}
Вообще это код на С, но, видимо, то, что тебе нужно.
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 20:19  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #14
Цитата Сообщение от gray_fox Посмотреть сообщение
Откуда я знаю, чем вы пользуетесь) Тем более, это ни на что не должно влиять (ну, в теории))) ).
Так попробуй:
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
 
#define STR_MAX_LENGTH 256
 
 
int main() {
    char first[STR_MAX_LENGTH];
    char second[STR_MAX_LENGTH];
    char result[STR_MAX_LENGTH];
    int position;
    
    printf("first? ");
    scanf("%s", first);
    printf("second? ");
    scanf("%s", second);
    printf("position? ");
    scanf("%d", &position);
    
    strncpy(result, first, position);
    strcpy(result + position, second);
    strcat(result, first + position);
    
    printf("result: %s\n", result);
    
    return EXIT_SUCCESS;
}
Вообще это код на С, но видимо, то, что тебе нужно.
Эта программа заработала, но спрашивает First ? (я так понимаю первая строка) ввожу допустим 123
Спрашивает second ? (ну видимо 2 строка ) ввожу 5 и потом спрашивает position ( ну это куда в 1. строку вставлять 2ю строку ) нажимаю 1 к примеру. И ничего не выдаёт... А должно выдать 1523 , 5 2я строка вставленная в 1ю

Добавлено через 1 минуту
Но скажу вам, прогресс на лицо, огромное спасибо Надеюсь доделаем
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 20:28     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #15
Эта программа заработала, но спрашивает First ? (я так понимаю первая строка) ввожу допустим 123
Спрашивает second ? (ну видимо 2 строка ) ввожу 5 и потом спрашивает position ( ну это куда в 1. строку вставлять 2ю строку ) нажимаю 1 к примеру. И ничего не выдаёт... А должно выдать 1523 , 5 2я строка вставленная в 1ю
Хм...
Миниатюры
Вставить в строку 1 содержимое строки 2 (#C) <String.h>  
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 20:35  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #16
Секундочку , попробую с командой getch(); чтоб не закрывалось окно сразу...
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 20:41     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #17
Цитата Сообщение от boyfromsun Посмотреть сообщение
Секундочку , попробую с командой getch(); чтоб не закрывалось окно сразу...
Лучше найдите в своей среде "start without debugging" или что-нибудь вроде этого... Alt + F5, наверно.
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 20:42  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #18
УРААААА СПАСИБО ВАМ ОГРОМНОЕ !! )))) ВСЕГО ВАМ ХОРОШЕГО !!!! )))) ЗАРАБОТАЛА ))))

Прикрутил библиотеку #include <conio.h>
и поставил команду getch(); после printf("result: %s\n", result);

Как я вам благодарен вы себе не представляете Вы спасли столько моих нервов ))) Сижу с самого утра мучаюсь Программу которая в шапке без библиотеки srting делал 3 недели )) Или около этого А тут )) Хух


ОГРОМНОЕ СПАСИБО
Alex_Konkov, ЗА ПОПЫТКУ ПОМОЧЬ
ОГРОМНОЕ СПАСИБО
gray_fox, ЗА РЕШЕНИЕ ЗАДАЧИ
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 20:44     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #19
Цитата Сообщение от boyfromsun Посмотреть сообщение
ЗАРАБОТАЛА ))))
Поздравляю )))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2012, 20:46     Вставить в строку 1 содержимое строки 2 (#C) <String.h>
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
boyfromsun
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 13
16.05.2012, 20:46  [ТС]     Вставить в строку 1 содержимое строки 2 (#C) <String.h> #20
gray_fox, Скажите а на чём вы писали программу ??? И чем вы её так проверяли ?? Найте названия, скачаю на будущее, большое спасибо
Yandex
Объявления
16.05.2012, 20:46     Вставить в строку 1 содержимое строки 2 (#C) <String.h>
Ответ Создать тему
Опции темы

Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru