Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
1

Написать програму которая заменяет все Enter и Tab в строке str1 на сымволи '\n' и '\t' в строке str2.

07.11.2011, 21:56. Показов 1494. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
а если не сложно то можно функцию
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2011, 21:56
Ответы с готовыми решениями:

Заменить в строке все вхождения подстроки str1 на подстроку str2
Заменить в строке все вхождения подстроки strl на подстроку str2.

Заменить в строке все вхождения подстроки str1 на подстроку str2
заменить в строке все вхождения подстроки str1 на подстроку str2

Заменить в строке все вхождения подстроки str1 на подстроку str2
заменить в строке все вхождения подстроки str1 на подстроку str2

Функцию, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1
Напишите функцию rightposition, которая получает два параметра str1 и str2 типа string и возвращает...

13
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
07.11.2011, 22:26 2
(SkyNet), 10-й пример поможет http://clc-wiki.net/wiki/K%26R... :Chapter_1
Там есть ответы и ну другие задачи)
1
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
08.11.2011, 01:15  [ТС] 3
Вобше не то и ищё по английски
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
08.11.2011, 01:53 4
и по английски???
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
08.11.2011, 09:57 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
24
25
26
27
28
#include <stdio.h>
#include <string.h>
 
void Replace(char* dest, const char* text)
{
   char* enter = "enter", *tab = "tab";
   size_t enterLen = strlen(enter), tabLen = strlen(tab);
   for(; *dest = *text; ++text, ++dest)
   {
      if( !strncmp(text, enter, enterLen))
      {
         *dest = '\n';
         text += (enterLen - 1);
      }
      else if( !strncmp(text, tab, tabLen))
      {
         *dest = '\t';
         text += (tabLen - 1);
      }
   }
}
 
int main (){
    char* text = ",enter  ente rtab,tab,enter bta.", dest[256];
    Replace(dest, text);
    puts(dest);
    return 0;
}
1
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
08.11.2011, 20:04  [ТС] 6
всё так и не так я под ентером и табом не назву их имел а их функцию

Добавлено через 31 минуту
Цитата Сообщение от igorrr37 Посмотреть сообщение
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
#include <stdio.h>
#include <string.h>
 
void Replace(char* dest, const char* text)
{
   char* enter = "enter", *tab = "tab";
   size_t enterLen = strlen(enter), tabLen = strlen(tab);
   for(; *dest = *text; ++text, ++dest)
   {
      if( !strncmp(text, enter, enterLen))
      {
         *dest = '\n';
         text += (enterLen - 1);
      }
      else if( !strncmp(text, tab, tabLen))
      {
         *dest = '\t';
         text += (tabLen - 1);
      }
   }
}
 
int main (){
    char* text = ",enter  ente rtab,tab,enter bta.", dest[256];
    Replace(dest, text);
    puts(dest);
    return 0;
}
Вобше не то!!! Надо чтоб заминила ентери и табы на символы "\n", "\t" имено что ввиводило ети симмволи на местах пробелов и ентеров, и строки назвать надо правильно str1 и str2 а то сложно разобраться
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.11.2011, 20:28 7
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
#include <iostream>
#include <cstring>
 
int main()
{
    std::string srcStr = "ready\tset\nplant";
    std::string rsltStr;
    std::cout << srcStr << std::endl << std::endl;
    for(int i = 0; i < srcStr.length(); ++i)
        switch(srcStr[i])
        {
            case('\n'):
                rsltStr += '\\';
                rsltStr += 'n';
                break;
                
            case('\t'):
                rsltStr += '\\';
                rsltStr += 't';
                break;
                
            default:
                rsltStr += srcStr[i];
                break;
        }
    std::cout << rsltStr << std::endl;
    return 0;
}
Разбирайтесь.
1
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
08.11.2011, 20:51  [ТС] 8
я не знаю C++, я только С учу

Добавлено через 2 минуты
Цитата Сообщение от soon Посмотреть сообщение
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
#include <iostream>
#include <cstring>
 
int main()
{
    std::string srcStr = "ready\tset\nplant";
    std::string rsltStr;
    std::cout << srcStr << std::endl << std::endl;
    for(int i = 0; i < srcStr.length(); ++i)
        switch(srcStr[i])
        {
            case('\n'):
                rsltStr += '\\';
                rsltStr += 'n';
                break;
                
            case('\t'):
                rsltStr += '\\';
                rsltStr += 't';
                break;
                
            default:
                rsltStr += srcStr[i];
                break;
        }
    std::cout << rsltStr << std::endl;
    return 0;
}
Разбирайтесь.
Ищё 1 не нужная, непонятная програма
0
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
08.11.2011, 20:56 9
Цитата Сообщение от (SkyNet) Посмотреть сообщение
я не знаю C++, я только С учу
из http://clc-wiki.net/wiki/K%26R... xercise_10
Если учите С, попробуйте изменить следующую программу на решение вашей задачи:
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
#include <stdio.h>
 
int main()
{
    int c, d;
 
    while ( (c=getchar()) != EOF) {
        d = 0;
        if (c == '\\') {
            putchar('\\');
            putchar('\\');
            d = 1;
        }
        if (c == '\t') {
            putchar('\\');
            putchar('t');
            d = 1;
        }
        if (c == '\b') {
            putchar('\\');
            putchar('b');
            d = 1;
        }
        if (d == 0)
            putchar(c);        
    }
    return 0;
}
Добавлено через 2 минуты
Попробуйте воспользоваться sscanf
будет интересно
0
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
08.11.2011, 21:03  [ТС] 10
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 <conio.h>
#include <stdio.h>
#include <string.h>
#define N 500
void main ()
{
 
char const str1[N]={"Computer \n programming \t is the process of designing, \nwriting the source code of computer \t programs"};
//char const enter[4]={"\\n"};
char* p;
int i, n=0;
clrscr();
 
printf("%s",str1);
n=strlen(str1);
char *str2 = new char [n];
 
 str2 = strdup(str1);
  for (p = str2; *p; ++p)
   {
    if (*p == '\n')
        *p =* "\\n";
 
    if (*p == '\t')
        *p =* "\\t";
   }
 
 printf("\n\n%s\n",str2);
 getch
Вот что у меня получилось. появилась проблемка: нельзя заменить 1 символ на 3, плз кто понимает подправте
0
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
08.11.2011, 21:06 11
Цитата Сообщение от (SkyNet) Посмотреть сообщение
нельзя заменить 1 символ на 3
Все правильно. Добавляйте по одному символу.

Цитата Сообщение от (SkyNet) Посмотреть сообщение
*p =* "\\n";
Что это? О_о
0
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
08.11.2011, 21:11  [ТС] 12
Цитата Сообщение от Xind Посмотреть сообщение
из http://clc-wiki.net/wiki/K%26R... xercise_10
Если учите С, попробуйте изменить следующую программу на решение вашей задачи:
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
#include <stdio.h>
 
int main()
{
    int c, d;
 
    while ( (c=getchar()) != EOF) {
        d = 0;
        if (c == '\\') {
            putchar('\\');
            putchar('\\');
            d = 1;
        }
        if (c == '\t') {
            putchar('\\');
            putchar('t');
            d = 1;
        }
        if (c == '\b') {
            putchar('\\');
            putchar('b');
            d = 1;
        }
        if (d == 0)
            putchar(c);        
    }
    return 0;
}
Добавлено через 2 минуты
Попробуйте воспользоваться sscanf
будет интересно
та здесь много чево менятью здесь та же проблема надо заменить 1 на 3 , а не 1 на 1

Добавлено через 2 минуты
Цитата Сообщение от Xind Посмотреть сообщение
Все правильно. Добавляйте по одному символу.


Что это? О_о
Ето выводит \n в функции printf на екран во-первых, А во врорих не льзя просто так заменить в строке 1 символ на 3. надо всё здвинуть в лево и збольшить строку на количество символов.
0
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
08.11.2011, 21:14 13
Смотрите
char *str2 = new char [n];
Вы пытаетесь в новый массив с длиной такой же как исходный записать дополнительные символы. Массив должен быть больше или расширяемым.

Добавлено через 2 минуты
Цитата Сообщение от (SkyNet) Посмотреть сообщение
я не знаю C++, я только С учу
А это кто написал?
C++
1
char *str2 = new char [n]
0
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
08.11.2011, 21:17  [ТС] 14
Цитата Сообщение от Xind Посмотреть сообщение
Смотрите

Вы пытаетесь в новый массив с длиной такой же как исходный записать дополнительные символы. Массив должен быть больше или расширяемым.

Добавлено через 2 минуты

А это кто написал?
я, а что? та ето осталось с прошлой версии програмы, и я понимаю что размерность строк одинаковая в начале. оно не нужно там надо просто обявить str2
0
08.11.2011, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2011, 21:17
Помогаю со студенческими работами здесь

Заменить все вхождения str1 на str2 (str1 вводится из файла, а str2 - с клавиатуры)
заменить все вхождения подстроки str1 на подстроку str2; строка str1 вводится из файла, а строка ...

Написать программу, которая в строке заменяет все цифры на символ «*»
Может кто сможет решить лабы! заранее говорю спасибо! № 1 Написать программу, которая в строке...

Найти первую подстроку str2 в строке str1
Ввести строки str1 и str2 с клавиатуры.Найти первую подстроку str2 в строке str1.Вывести на экран...

Написать функцию которая заменяет все буквы в строке на '*',а цифры оставляет как есть.
Написать функцию которая заменяет все буквы в строке на '*',а цифры оставляет как есть.


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru