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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
#1

Удалить лишние пропуски в введенной строке символов - C++

16.02.2010, 21:51. Просмотров 2381. Ответов 16
Метки нет (Все метки)

Задача №1
Удалить лишние пропуски в введенной строке символов.
Задача №2
Посчитать частоту появления букв в строке, если считать ровными буквы в верхнем и нижнем регистре.
Задача№3
В строке слов все слова, которые состоят из четырех букв, удалить, а слова, которые состоят из пяти букв, заменить словом «сурок».
Задача№4
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.
Задача№5
В строке слов из букв латинского алфавита найти слова, в которых первая буква слова входит еще хотя бы один раз.
Задача№6
Вводится строка символов. Символы, которые окружены пропусками, называются словами. Необходимо найти в строке слова, которые начинаются с одной и той же буквы, и поменять их местами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2010, 21:51     Удалить лишние пропуски в введенной строке символов
Посмотрите здесь:
C++ Удалить лишние пробелы в строке
C++ Удалить лишние пробелы в строке
Удалить лишние пробелы в строке C++
Во введенной строке удалить все цифры 0-9 C++
C++ Посчитать количество букв в введенной строке символов
C++ Удалить каждое четное слово во введенной строке
В символьной строке удалить все лишние подряд идущие пробелы. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
16.02.2010, 22:00     Удалить лишние пропуски в введенной строке символов #2
ЕСли ты дашь определение лишних пропусков, то я, пожалуй, возьмусь решить первое задание.
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
16.02.2010, 22:13  [ТС]     Удалить лишние пропуски в введенной строке символов #3
т.е текст и в нем пробелы и чтоб выводилось без пробелов

Добавлено через 13 секунд
походу так
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
16.02.2010, 22:37     Удалить лишние пропуски в введенной строке символов #4
А... Ну держи мою собественную функцию. Думал уж, не пригодится.
32 Это пробел
C
1
2
3
4
5
6
7
8
9
10
11
/*Функция printf1 () принимает указатель на строку. Выводит все симолы типа сhar в этой строке, пока 
не встретит 32 или \0; 32 или '\0' не выводится. Если функция принимает указатель на 32 или '\0', то 
32 или '\0' не выводится 
*/
#include <stdio.h>
void printf1 (char* s) {
 char c;
 while (((c= *s++)!= 32)&& c!= '\0') {
  putchar (c);
 }
};
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
17.02.2010, 09:31  [ТС]     Удалить лишние пропуски в введенной строке символов #5
еще сможешь решить задачу
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
18.02.2010, 17:51  [ТС]     Удалить лишние пропуски в введенной строке символов #6
Люди помогите пожалуйста, очень надо!
Sens0
15 / 2 / 0
Регистрация: 06.12.2009
Сообщений: 27
18.02.2010, 23:05     Удалить лишние пропуски в введенной строке символов #7
Цитата Сообщение от ReN Посмотреть сообщение
Задача №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
#include <iostream.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
void space_delete(char A[100],int x)
{
int i;
    for(i=0;i<x;i++)
    if(A[i]==' ')
      if(A[i+1]==' ')
          {
          for(int j=i;j<x;j++)
          A[j]=A[j+1];
          x--;
          i--;
          }
  for(i=0;i<x;i++)
  {cout<<A[i];}
  cout<<endl;
}
void main()
{
int n;
char B[100];
  cout<<"Vvedite stroku\n";
  cin.getline (B,100,'\n');
  n=strlen(B);
  space_delete(B,n);
getch();
}
Вот что у меня получилось. Должно работать.
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
20.02.2010, 11:11  [ТС]     Удалить лишние пропуски в введенной строке символов #8
Спасибо Sens0. Помогите пожалуйста решить задачи

Добавлено через 14 часов 3 минуты
Пожалуйста помогите решить задачи
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
20.02.2010, 16:07     Удалить лишние пропуски в введенной строке символов #9
2.
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
#include <iostream>
#include <string>
#include <map>
#include <iomanip>
#include <cctype>
 
/* Посчитать частоту появления букв в строке, если считать ровными буквы в верхнем и нижнем регистре. */
 
int main(){
    std::string buf;
    std::map<char, int> letters;
    char c;
    
    std::cout << "String: ";
    std::getline(std::cin, buf);
    for ( std::string::const_iterator i = buf.begin(); i != buf.end(); ++i ){
        if ( !isalpha(*i) )
            continue;
        c = toupper(*i);
        std::map<char, int>::iterator f;
        if ( ( f = letters.find(c) ) != letters.end() )
            ++(f->second);
        else
            letters.insert(std::pair<char, int>(c, 1));
    }
    
    if ( letters.empty() ){
        std::cerr << "Bad input or somethink" << std::endl;
        return 1;
    }
    
    std::cout << "Charcter  Count" << std::endl;
    for ( std::map<char, int>::const_iterator i = letters.begin(); i != letters.end(); ++i )
        std::cout << std::setw(10) << std::left << i->first << i->second << std::endl;
    
    return 0;
}
Добавлено через 36 минут
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <map>
#include <cctype>
 
/* В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются. */
 
bool uniqueChars(const std::string& str){
    char c;
    std::map<char, int> letters;
    for ( std::string::const_iterator i = str.begin(); i != str.end(); ++i ){
        if ( !isalpha(*i) )
            continue;
        c = toupper(*i);
        if ( letters.find(c) != letters.end() )
            ++(letters[c]);
        else
            letters.insert(std::pair<char, int>(c, 1));
    }
    for ( std::map<char,int>::const_iterator i = letters.begin(); i != letters.end(); ++i )
        if ( i->second > 1 )
            return false;
    return true;
}
 
int main(){
    std::string str;
    std::vector<std::string> words;
    
    std::cout << "String: ";
    std::getline(std::cin, str);
    if ( str.empty() ){
        std::cerr << "Empty strings not allowed!" << std::endl;
        return 1;
    }
    std::istringstream ist(str);
    std::string tmp;
    while ( ist >> tmp )
        words.push_back(tmp);
    if ( words.empty() ){
        std::cerr << "Bad input!" << std::endl;
        return 1;
    }
    for ( std::vector<std::string>::const_iterator i = words.begin(); i != words.end(); ++i )
        if ( uniqueChars(*i) )
            std::cout << *i << ' ';
    std::cout << std::endl;
    
    return 0;
}
Добавлено через 23 минуты
Четвёртое можно, конечно, гораздо проще сделать. Хотелось ++(letters[c]); проверить.
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 <iostream>
#include <string>
#include <sstream>
#include <cctype>
 
/* В строке слов из букв латинского алфавита найти слова, в которых первая буква слова входит еще хотя бы один раз. */
 
bool doublingFirstChar(const std::string& s){
    for ( std::string::const_iterator i = s.begin() + 1; i != s.end(); ++i )
        if ( toupper(*i) == toupper(*s.begin()) )
            return true;
    return false;
}
 
int main(){
    std::string str;
    std::cout << "String: ";
    std::getline(std::cin, str);
    
    std::istringstream ist(str);
    std::string tmp;
    while ( ist >> tmp )
        if ( doublingFirstChar(tmp) )
            std::cout << tmp << ' ';
    std::cout << std::endl;
    
    return 0;
}
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
20.02.2010, 17:22  [ТС]     Удалить лишние пропуски в введенной строке символов #10
а полегче можно как нибудь сделать
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
20.02.2010, 17:38     Удалить лишние пропуски в введенной строке символов #11
Цитата Сообщение от ReN Посмотреть сообщение
а полегче можно как нибудь сделать

Не по теме:

начинается...

Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
20.02.2010, 17:46     Удалить лишние пропуски в введенной строке символов #12
а полегче можно как нибудь сделать
Сложного ты ещё не видел.
CyBOSSeR
20.02.2010, 18:15
  #13

Не по теме:

Цитата Сообщение от ReN Посмотреть сообщение
а полегче можно как нибудь сделать
Попробуй сделать их сам, как раз "попроще" получится.

ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
21.02.2010, 10:45  [ТС]     Удалить лишние пропуски в введенной строке символов #14
easybudda
ладно объясни как ты написал for, мне непонятны функции внутри него.
outoftime
║XLR8║
507 / 429 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 11:53     Удалить лишние пропуски в введенной строке символов #15
Мой вариант задачи 2: (русю версия)
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>
#include <string>
#include <map>
#include <windows.h>
 
using namespace std;
 
ostream &operator << (ostream &out, const char *text)
{
    int n = strlen(text);
    char *s = new char[ n+1 ];
    CharToOem(text, s);
    out.write(s, n);
    return out;
}
 
int main()
{
    string s;
    map <char, int> M;
    getline(cin, s);
    for (int i = 0; i < s.size(); ++i)
        if (isalpha(s[i]))
        {
            toupper(s[i]);
            ++M[s[i]];
        }
    for (map <char, int> :: iterator it = M.begin(); it != M.end(); ++it)
        cout << (*it).first << " встречается " << (*it).second << " раз" << endl;
    system("pause");
    return 0;
}
Добавлено через 8 минут
Задача 3:
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 <iostream>
#include <sstream>
#include <cstring>
#include <string>
#include <windows.h>
 
using namespace std;
 
ostream &operator << (ostream &out, const char *text)
{
    int n = strlen(text);
    char *s = new char[ n+1 ];
    CharToOem(text, s);
    out.write(s, n);
    return out;
}
 
int main()
{
    string s;
    getline(cin, s);
    stringstream tmp;
    tmp << s;
    while (tmp >> s)
        if (s.size() == 5) cout << "сурок ";
        else cout << s << " ";
    system("pause");
    return 0;
}
Короче они все решаются подобным макаром..
ReN
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 19
21.02.2010, 17:27  [ТС]     Удалить лишние пропуски в введенной строке символов #16
сможешь еще решить задач мне на завтра очень надо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2010, 17:40     Удалить лишние пропуски в введенной строке символов
Еще ссылки по теме:
В символьной строке удалить все лишние подряд идущие пробелы. C++
Посчитать количество слов во введенной строке символов, начинающихся с «Т» или «т» C++
C++ Количество повторений элементов заданного множества символов во введенной строке
Удалить в строке лишние пробелы, оставив между словами ровно по одному C++
Удалить в каждой строке лишние пробелы; исходную информацию считать из текстового файла C++

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

Или воспользуйтесь поиском по форуму:
outoftime
║XLR8║
507 / 429 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 17:40     Удалить лишние пропуски в введенной строке символов #17
ReN, они не интересны и лишены всякого смысла
Yandex
Объявления
21.02.2010, 17:40     Удалить лишние пропуски в введенной строке символов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru