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

Постановка запятой перед каждым пробелом - C++

Восстановить пароль Регистрация
 
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
04.06.2012, 23:05     Постановка запятой перед каждым пробелом #1
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
void insertComma(char*, char*);
 
int main() {
    int buffer_sizea = 255;
    int buffer_sizeb = 255;
    cout << "Enter Your strings: ";
    char * strin;
    strin = (char*) malloc (buffer_sizea);
    strin = (char*) malloc (buffer_sizeb);
    char * strout;
    strout = (char*) malloc (buffer_sizea*2);
    strout = (char*) malloc (buffer_sizeb*2);
    cin.getline (strin, buffer_sizea);
    cin.getline (strin, buffer_sizeb);
    insertComma(strin, strout);
    cin >> buffer_sizea;
    cin >> buffer_sizeb;
    return 0;
}
 
void insertComma(char* stri, char * stro) {
    int buffer_sizea = strlen(stri);
    int index = 0;
    for (int i = 0; i < buffer_sizea; i++) 
    {
    char next_character = stri[i];
    if (next_character == ' ') 
    {
        stro[index] = ',';
        index++;
    }
    stro[index] = next_character;
    index ++;
    }
    stro[index] = '\0';
    cout << stro << "\n";
}
Вот мой исходный код, подскажет кто-нибудь, что именно надо прописать, чтобы программа выдавала сразу обе модифицированные стоки?
Много чего испробовал, у меня вот так получается:
Постановка запятой перед каждым пробелом
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2012, 23:05     Постановка запятой перед каждым пробелом
Посмотрите здесь:

Перед каждым словом добавить слово C++
Произвести вставку слова «не» перед каждым третьим словом в предложении C++
Вставить строку перед каждым вхождением символа. C++
C++ Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом
C++ В заданном предложении перед каждым словом поставить символ «?»
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
05.06.2012, 07:58     Постановка запятой перед каждым пробелом #2
Задание можно? как есть
уверены, что передаете в функцию то, что нужно.
может через функцию надо прогнать не одновременно строки, а поочередно?
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
05.06.2012, 09:24  [ТС]     Постановка запятой перед каждым пробелом #3
Вводится как минимум 2 строки, программа должна перед каждым пробелом поставить запятую и модифицированные строки вывести.
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
05.06.2012, 22:22     Постановка запятой перед каждым пробелом #4
по-моему, тебе нужно сделать функцию которая будет принимать один указатель на строку и вызывать ее нужное количество раз.
если у тебя будет 20 строк, ты же не будешь переделывать функцию под 20 строк, логично?
я бы например сделал массив строк(как минимум 2) и в цикле для него вызывал бы эту функцию.

фишка функций в универсальности. то есть функция одна, а подставить в нее мы можем разные строки.
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
05.06.2012, 22:57  [ТС]     Постановка запятой перед каждым пробелом #5
Цитата Сообщение от VladSharikov Посмотреть сообщение
по-моему, тебе нужно сделать функцию которая будет принимать один указатель на строку и вызывать ее нужное количество раз.
если у тебя будет 20 строк, ты же не будешь переделывать функцию под 20 строк, логично?
я бы например сделал массив строк(как минимум 2) и в цикле для него вызывал бы эту функцию.

фишка функций в универсальности. то есть функция одна, а подставить в нее мы можем разные строки.
Я был бы примного благодарен, если бы вы реализовали свою идею в коде
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
06.06.2012, 00:50     Постановка запятой перед каждым пробелом #6
пишите в личку, может договоримся. объяснить могу, за кого-то делать не буду.
ждите , может сделают.
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.06.2012, 09:21  [ТС]     Постановка запятой перед каждым пробелом #7
Цитата Сообщение от VladSharikov Посмотреть сообщение
пишите в личку, может договоримся. объяснить могу, за кого-то делать не буду.
ждите , может сделают.
Могу и других ответов подождать, платить за такую мелочь глупо.
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
06.06.2012, 09:35     Постановка запятой перед каждым пробелом #8
C++
1
2
3
4
5
6
7
8
9
10
11
#include <string>
 
std::string InsertComma(const std::string& s) {
    std::string result = "";
    for (unsigned i = 0; i < s.length(); i++)
        if (s[i] == ' ')
            result += ", ";
        else
            result += s[i];
    return result;
}
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.06.2012, 19:34  [ТС]     Постановка запятой перед каждым пробелом #9
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
#include <string>
 
std::string InsertComma(const std::string& s) {
    std::string result = "";
    for (unsigned i = 0; i < s.length(); i++)
        if (s[i] == ' ')
            result += ", ";
        else
            result += s[i];
    return result;
}

Это просто выводит на экран, а мне-то надо, чтобы строки изменялись (модифицировались)
BF_KARATEL
 Аватар для BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 19:50     Постановка запятой перед каждым пробелом #10
C++
1
2
3
4
5
for (unsigned i = 0; i < s.length(); i++)
        if (s[i] == ' ')
            s[i]= ", ";
        else
            s[i]= s[i];
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.06.2012, 19:58  [ТС]     Постановка запятой перед каждым пробелом #11
Цитата Сообщение от BF_KARATEL Посмотреть сообщение
C++
1
2
3
4
5
for (unsigned i = 0; i < s.length(); i++)
        if (s[i] == ' ')
            s[i]= ", ";
        else
            s[i]= s[i];
тот же ответ, что и предыдущему...
BF_KARATEL
 Аватар для BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 20:04     Постановка запятой перед каждым пробелом #12
так он же их заменит
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
06.06.2012, 20:09     Постановка запятой перед каждым пробелом #13
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 <iostream>
#include <cstring>
 
 
int main() {
   char str1[ 1024 ],
        str2[ 1024 ];
   
   std::cin.getline( str1, 1024, '\n');
   
   for ( std::size_t i = 0, j = 0; ; i++, j++ ) {
      if ( str1[ i ] == ' ')
         str2[ j++ ] = ',';
      
      str2[ j ] = str1[ i ];
      
      if ( str1[ i ] == '\0')
         break;
   }
   
   std::cout << str2 << std::endl;
   
   return 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
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstring>
 
 
void func( char *firstString, char *secondStr ) {
   for ( std::size_t i = 0, j = 0; ; i++, j++ ) {
      if ( firstString[ i ] == ' ')
         secondStr[ j++ ] = ',';
      
      secondStr[ j ] = firstString[ i ];
      
      if ( firstString[ i ] == '\0')
         break;
   }
}
 
int main() {
   char str1[ 1024 ],
        str2[ 1024 ],
        str3[ 1024 ];
   
   std::cin.getline( str1, 1024, '\n');
   
   func( str1, str2 );
   
   std::cin.getline( str1, 1024, '\n');
   
   func( str1, str3 );
   
   std::cout << str2 << '\n' << str3 << std::endl;
   
   return 0;
}
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.06.2012, 20:35  [ТС]     Постановка запятой перед каждым пробелом #14
Цитата Сообщение от BF_KARATEL Посмотреть сообщение
так он же их заменит
Я также делал в прошлый раз, ответ был таков: "Ваша функция не вставляет запятую перед каждым пробелом, а лишь при выводе строки на экран перед каждым пробелом выводит запятую на экран. Сама строка остается не измененной, а она должна измениться."

Добавлено через 3 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
2
3
#include <iostream>
#include <cstring>
...
Спасибо, попробую под свою подогнать, если получится...
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
06.06.2012, 20:46     Постановка запятой перед каждым пробелом #15
Цитата Сообщение от BF_KARATEL Посмотреть сообщение
C++
1
2
3
4
5
for (unsigned i = 0; i < s.length(); i++)
        if (s[i] == ' ')
            s[i]= ", ";
        else
            s[i]= s[i];
Ето не правильно.
/home/nemo/gcc/Mycpp.cpp||In function ‘int main()’:|
/home/nemo/gcc/Mycpp.cpp|57|ошибка: некорректное преобразование из ‘const char*’ в ‘char’|
||=== Build finished: 1 errors, 0 warnings ===|
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.06.2012, 21:23  [ТС]     Постановка запятой перед каждым пробелом #16
ОКОНЧАТЕЛЬНЫЙ ВАРИАНТ:
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
#include <iostream>
#include <cstring>
#include <cstdlib>
 
using namespace std;
 
void insertComma( char *firstString, char *secondString );
 
int main() {
   char str1[ 1024 ],
        str2[ 1024 ],
        str3[ 1024 ];
   cout << "Enter Your strings: " << '\n';
   std::cin.getline( str1, 1024, '\n');
   insertComma( str1, str2 );
   std::cin.getline( str1, 1024, '\n');
   insertComma( str1, str3 );
   std::cout << "Result: " << '\n' << str2 << '\n' << str3 << std::endl;
   std::system( "pause" );
   return 0;
}
void insertComma( char *firstString, char *secondString ) {
   for ( std::size_t i = 0, j = 0; ; i++, j++ ) {
      if ( firstString[ i ] == ' ')
      secondString[ j++ ] = ',';
      secondString[ j ] = firstString[ i ];
      if ( firstString[ i ] == '\0')
         break;
   }
}
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
06.06.2012, 21:46     Постановка запятой перед каждым пробелом #17
можно слегка укоротить
C++
1
2
3
4
5
6
7
8
void insertComma( char *firstString, char *secondString ) {
   for ( std::size_t i = 0, j = 0;firstString[ i ]; i++, j++ ) {
      if ( firstString[ i ] == ' ')
      secondString[ j++ ] = ',';
      secondString[ j ] = firstString[ i ];
 
   }
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
06.06.2012, 21:47     Постановка запятой перед каждым пробелом #18
Нет, так нельзя, так как не скопируется ноль-символ.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 21:49     Постановка запятой перед каждым пробелом
Еще ссылки по теме:

C++ Вставить перед каждым пробелом запятую
C++ Удалить из списка элемент перед каждым элементом со значением 3
Вставить строку перед каждым вхождением заданного символа C++

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

Или воспользуйтесь поиском по форуму:
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
06.06.2012, 21:49     Постановка запятой перед каждым пробелом #19
Toshkarik, да, ты прав.
Yandex
Объявления
06.06.2012, 21:49     Постановка запятой перед каждым пробелом
Ответ Создать тему
Опции темы

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