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

Как доделать строки - C++

Восстановить пароль Регистрация
 
evgen1994
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 13
15.12.2013, 20:52     Как доделать строки #1
Помогите пожалуйста со строками. Конкретно код написал, но не всегда программа работает правильно. после каждого слова вставить точку, тест: (Hello world => Hello. world.). Я не знаю как сделать: (Лишние символы (с 81-ого) отбросить). Зарание спасибо.

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 <conio.h>
#include <stdio.h>
#include <math.h>
int main()
{
clrscr();
int k=0,i,kol1=0;
char A[100], s[100];
gets(A);
for (i=0; A[i]!='\0'; i++)
if (A[i]==' ')
{
s[k]='.';
s[k+1]=' ';
k+=2;
}
else { s[k]=A[i]; k++; }
s[k]=A[i];
s[k+1]='\0';
 
printf("\n");
puts(s);
 
getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
15.12.2013, 20:58     Как доделать строки #2
А вы не забыли условие в for заключить в {}?
evgen1994
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 13
15.12.2013, 21:01  [ТС]     Как доделать строки #3
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
А вы не забыли условие в for заключить в {}?
Возможно, но особой роли думаю, это не сыграет
newbie666
Заблокирован
15.12.2013, 21:08     Как доделать строки #4
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
#include <tchar.h>
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    const size_t maxInputLenght = 4096;
    char *line = new char[maxInputLenght];
    std::cin.getline(line, maxInputLenght);
    std::stringstream ss(line);
    delete[] line;
    std::vector<std::string> words;
    while (!ss.eof())
    {
        std::string tmp;
        ss >> tmp;
        words.push_back(tmp);
    }
    for(auto it = words.begin(); it != words.end(); it++)
        *it += '.';
    for(auto it = words.begin(); it != words.end(); it++)
        std::cout << *it << std::endl;
    
    return 0;
}
evgen1994
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 13
15.12.2013, 21:27  [ТС]     Как доделать строки #5
newbie666, я конечно вам благодарен за написание данной программы, но наверное мне нада более простым способом (В пример можно взять мой код)
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 13:34     Как доделать строки #6
Цитата Сообщение от newbie666 Посмотреть сообщение
#include <tchar.h>
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
* * const size_t maxInputLenght = 4096;
* * char *line = new char[maxInputLenght];
* * std::cin.getline(line, maxInputLenght);
* * std::stringstream ss(line);
* * delete[] line;
* * std::vector<std::string> words;
* * while (!ss.eof())
* * {
* * * * std::string tmp;
* * * * ss >> tmp;
* * * * words.push_back(tmp);
* * }
* * for(auto it = words.begin(); it != words.end(); it++)
* * * * *it += '.';
* * for(auto it = words.begin(); it != words.end(); it++)
* * * * std::cout << *it << std::endl;
return 0;
}
Опяьт же напишет слово на каждой строке и поставит после него точку. Автор просит же:
Цитата Сообщение от evgen1994 Посмотреть сообщение
Hello world => Hello. world.
Этот код так работать не будет, без компиляции видно. Если ты собрался вместо endl прописать пробел, то будет работать неправильно, если в строке больше одного пробела. Или, например, если стоит знак после слова, точка поставится после знака, а не после слова.
Yandex
Объявления
04.04.2014, 13:34     Как доделать строки
Ответ Создать тему
Опции темы

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