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

Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi Как вывести код цвета? http://www.cyberforum.ru/cpp-beginners/thread8601.html
Как вывести код выбранного цвета на Label с помощью ColorDialog?
C++ Помогите пожалуйста сделать блок-схему Пожалуйста нужна блок-схема к вот этой проге: #include<vcl.h> #include<iostream.h> #include<fstream.h> #include<conio.h> #include<string.h> #include<math.h> const int MAX=100; http://www.cyberforum.ru/cpp-beginners/thread8599.html
Где можно скачать бесплатно C++? C++
Где можно скачать бесплатно C++?
C++ Определить, есть ли в данном многострочном тексте указанное слово, и заключить его в квадратные скобки
Помогите, пожалуйста решить задачу. Заранее благодарен. Дан многострочный текст char text. Определить, есть ли в данном тексте указанное слово и заключить его в квадратные скобки. Слово - это непрерывная последовательность букв или цифр. Разделителями слов могут быть любые другие символы. Реализовать и использовать функцию, которая заключает слово в квадратные скобки: void...
C++ В заданном тексте определить слово, в котором заданный символ встретится наибольшее число раз http://www.cyberforum.ru/cpp-beginners/thread8477.html
Условие задачи: в заданном тексте определить слово, в котором заданный символ встретится наибольшее число раз.
C++ Помогите с выпадающим меню!!! Вот задали такую штуку! а я так и не поняла как сделать!:huh: Программа должна расчитывать излишний или недостающий вес человека относительно его роста. необходимо написать диалоговую программу, которая будет работать с данными в памяти компьютера. Данные должны сохраняться в компьютере как динамический массив, разработать функции обработки массива. Данные сохраняются в виде бинарного файла.... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
09.06.2008, 16:57     Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2
Ну что ж давайте попробуем. Решим для начала первое задание. Прежде всего напишем функцию dd. Её текст и описание ниже. Язык С

//Здесь разработана функция dd. Эта функция вот чем занимается: во-первых, она принимает три аргумента: строку символов, и два числа (n1, n2) типа int. Ничего не возвращает. Эта функция сдвигает часть строки, начинающуюся с символа N n влево или вправо на модуль n1. ЕСли n1> 0, то сдвиг происходит вправо, если меньше, то влево, если ноль- никуда не происходит. Необходимо вручню следить за тем, чтобы всё во всё влезало. Корректно то есть чтобы сдвиги происходили.
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
#include <string.h>
#include <stdio.h>
 
void dd (char s [], int n, int n1) {
 int dl= strlen (s)- 1;
 printf ("%d\n", dl+ n1+ 1); 
 
 //Ну, тут работаем если n1> 0
 if (n1> 0) {
  s [dl+ n1+ 1]= '\0';
  while (dl>= n) {
   s [dl+ n1]= s [dl--];
  }
 }
 
 //А тут, если меньше
 else{
  do {
   s [n+ n1]= s [n++];
  }
  while (n<= dl);
  s [n+ n1]= '\0';
 }
 
}




Теперь собственно решение, отдельной функцией выполнять не стал. Критикуйте, обсудим

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
#include <stdio.h>
int main (void) {
 char s [40]= "qwertyyyyyyyyuiopp";
 char s1 []= "yyyyyyyy";
 char s2 []= "xxx";
 char* d;
 int i= 0;
 
 //ЗДесь работаем, если вхождение существует
 if (d= strstr (s, s1)) {
 
  //Сейчас надо расширить или сузить строку s, чтобы в неё входила строка s2
  dd (s, d- s+ strlen (s1),strlen (s2)- strlen (s1));
 
  while (s2 [i]!= '\0') {
   *d= s2 [i++];
   d++;
  }  
 } 
 
 printf ("%s\n", s); 
 
 return 0;
}
 
Текущее время: 00:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru