0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
1

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

04.06.2012, 23:05. Показов 1622. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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";
}
Вот мой исходный код, подскажет кто-нибудь, что именно надо прописать, чтобы программа выдавала сразу обе модифицированные стоки?
Много чего испробовал, у меня вот так получается:
Постановка запятой перед каждым пробелом
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2012, 23:05
Ответы с готовыми решениями:

Вставить перед каждым пробелом запятую
вставить перед каждым пробелом запятую a a a a, a, a Всё это проделать с char

В заданном тексте добавить перед каждым пробелом запятую
Пользователь вводит небольшой текст(хватит и около 200-250 символов), нужно вместо пробела вставить...

Строка без пробела перед запятой и с пробелом после запятой
Всем привет! Помогите, пожалуйста, составить регулярное выражение для строки содержащей буквы...

В тексте вставить запятую перед каждым пробелом.
1. В тексте вставить запятую перед каждым пробелом. че то у меня немножко не то он...

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

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

фишка функций в универсальности. то есть функция одна, а подставить в нее мы можем разные строки.
Я был бы примного благодарен, если бы вы реализовали свою идею в коде
0
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
06.06.2012, 00:50 6
пишите в личку, может договоримся. объяснить могу, за кого-то делать не буду.
ждите , может сделают.
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.06.2012, 09:21  [ТС] 7
Цитата Сообщение от VladSharikov Посмотреть сообщение
пишите в личку, может договоримся. объяснить могу, за кого-то делать не буду.
ждите , может сделают.
Могу и других ответов подождать, платить за такую мелочь глупо.
0
320 / 270 / 128
Регистрация: 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;
}
0
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;
}

Это просто выводит на экран, а мне-то надо, чтобы строки изменялись (модифицировались)
0
11 / 11 / 2
Регистрация: 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];
0
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];
тот же ответ, что и предыдущему...
0
11 / 11 / 2
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 20:04 12
так он же их заменит
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
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;
}
1
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>
...
Спасибо, попробую под свою подогнать, если получится...
0
35 / 35 / 11
Регистрация: 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 ===|
0
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;
   }
}
0
35 / 35 / 11
Регистрация: 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 ];
 
   }
}
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
06.06.2012, 21:47 18
Нет, так нельзя, так как не скопируется ноль-символ.
1
35 / 35 / 11
Регистрация: 25.05.2010
Сообщений: 211
06.06.2012, 21:49 19
Toshkarik, да, ты прав.
0
06.06.2012, 21:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2012, 21:49
Помогаю со студенческими работами здесь

Строки.Слова разделены пробелами. Перед каждым пробелом вставить запятую
Извените конечно, но я опять не смогла справится с паскалем, может Гуру помогут Дана строка....

В заданной строке слова разделены пробелами. Перед каждым пробелом вставить запятую
В заданной строке слова разделены пробелами. Перед каждым пробелом вставить запятую

Сделать так, чтобы вставлялся порядковый номер перед каждым столбцом, а не только перед первым
вот программа : uses crt; var mas:array of integer; i,j,m,n:byte; begin write('m=');...

Разделение строки на слова пробелом и запятой
Собственно есть код, который разделяет слова только пробелами , поэтому длину слова после которого...


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

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

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