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

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

Войти
Регистрация
Восстановить пароль
 
 
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 438
#1

Расположить слова в последовательности - C++

25.09.2013, 05:46. Просмотров 911. Ответов 20
Метки нет (Все метки)

Какая здесь ошибка не могу понять( реализовать нужно в консольном приложении визуал студио 2008
Слова, содержащие сочетание ‘кот’, расположить в конце последовательности, сохраняя исходный порядок следования слов.

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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s1 = "";
    do
    {
        cout << "Напечатайте exit для выхода из программы" 
             << "Слово состоит " << s1 << "\nВведите слово: ";
        string s;
        cin >> s;
        s1 = "из парных";
        for(int i = 0; i < s.size(); i++)
        {
            int k = 0;
            for(int j = 0; s.size(); j++)
                if(s[i]==s[j])
                    k++;
                if(k==1)
                    s1 = "не из парных символов";
        }
    }while(s!="exit")
    return 0;
}
 Комментарий модератора 
Ошибки на самом деле две:
1) Пункт 5.16 Правил: Одна тема - один вопрос.
2) Приведенный код вообще не рядом с заданием.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 05:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расположить слова в последовательности (C++):

Расположить слова в массиве символов в алфавитном порядке по первой букве слова - C++
Введите массив символов из 14 элементов. Расположить слова в алфавитном порядке по первой букве слова. Добавлено через 19 часов 40...

Расположить символы последовательности в обратном порядке - C++
Почему-то совершенно не идёт с++,помогите,пожалуйста Есть 2 простенькие задачки,к которым нужно написать коды 1. Задан массив из k...

Расположить в обратном порядке часть последовательности - C++
Дана последовательность натуральных чисел 1, 2, 3, ..., N (1 ≤ N ≤ 1000). Необходимо сначала расположить в обратном порядке часть этой...

Наименьший элемент последовательности, расположить до первого отрицательного - C++
Найти наименьший элемент из элементов последовательности x1, x2, ..., x25, расположенных до первого отрицательного числа. Все отрицательные...

Расположить слова в алфавитном порядке - C++
Дана строка, состоящая из русских слов, разделенными пробелами. Вывести сроку, содержащую эти же слова, но расположенные в алфавитном...

Расположить слова в алфавитном порядке - C++
Доброго времени суток Вводим строку со словами, необходимо расположить эти слова в алфавитном порядке. Мои наработки /*Расположить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
01.10.2013, 18:14 #16
А если только через for тогда
C++
1
2
3
4
...
             int j=i;
            while((j<9)&&(!strstr(s[j+1],"cat")))
...
надо заменить на
C++
1
2
 
for(int j=i;((j<9)&&(!strstr(s[j+1],"cat")));)
надеюсь я в скобка не запутался

Хотя циклы с предусловием и с постусловием так же считаются простыми
0
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
01.10.2013, 18:39 #17
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
код под простенький С++ переделать и чтоб слова я вводил
Вот и слова самому можно вводить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main() {
    cout << "Enter words or Ctrl+Z to stop and partition:" << endl;
    vector<string> words;
    copy(istream_iterator<string>(cin),
         istream_iterator<string>(),
         back_inserter(words));
 
    stable_partition(begin(words), end(words),
                     [](const string& s) { return s.find("cat") == string::npos; });
 
    copy(begin(words), end(words),
         ostream_iterator<string>(cout, "\n"));
}
Enter words or Ctrl+Z to stop and partition:
apple juice I love my cat realtime application
categories theory
^Z
apple
juice
I
love
my
realtime
theory
cat
application
categories
0
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 438
03.10.2013, 09:00  [ТС] #18
Вот этот код работает нормально! Но, вопрос в том что я хочу допустим вводить не 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
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
    char s[10][100];
    setlocale(LC_ALL, "rus");
    for (int i=0;i<10;i++)
    {
        cout<<"Введите "<<i+1<<"-е слово: " << endl;
        cin>>s[i];
    }
    for (int i=8;i>=0;i--)
    {
        if (strstr(s[i],"cat")) 
        {
            int j=i;
            while((j<9)&&(!strstr(s[j+1],"cat")))
            {
                char tmp[100];
                strcpy(tmp,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],tmp);
                j++;
            }
        }
    }
    cout<< endl << "Отсортированные слова: "<<endl;
    for (int i=0;i<10;i++)
    {
        cout<<s[i]<<endl;
    }            
    cin>>s[0];
    _getch();
    return 0;
}
Добавлено через 1 минуту
И можно прокомментирвоать программу если не сложно, что каждая строчка делает в цикле for, когда уже идет сортировка слов, чтоб хотя бы понимать что и как делается)))

Добавлено через 1 минуту
для чего char s[10][100] нужен?
0
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 480
Записей в блоге: 1
03.10.2013, 09:47 #19
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
не 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
30
31
32
33
34
35
36
37
38
39
40
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
    const int wordCount=6; //количество слов. Ставишь здесь любое
    char s[wordCount][100];
    setlocale(LC_ALL, "rus");
    for (int i=0;i<wordCount;i++)
    {
        cout<<"Введите "<<i+1<<"-е слово: " << endl;
        cin>>s[i];
    }
    for (int i=wordCount-2;i>=0;i--)
    {
        if (strstr(s[i],"cat")) 
        {
            int j=i;
            while((j<9)&&(!strstr(s[j+1],"cat")))
            {
                char tmp[100];
                strcpy(tmp,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],tmp);
                j++;
            }
        }
    }
    cout<< endl << "Отсортированные слова: "<<endl;
    for (int i=0;i<wordCount;i++)
    {
        cout<<s[i]<<endl;
    }            
    cin>>s[0];
    _getch();
    return 0;
}
1
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 438
03.10.2013, 10:14  [ТС] #20
Спасибо тебе, а прокомментировать программу можно тебя попросить?))
0
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 480
Записей в блоге: 1
03.10.2013, 10:25 #21
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
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
    const int wordCount=6; //количество слов. Ставишь здесь любое
    char s[wordCount][100]; //объявляем двумерный массив символов. s- имя массива, wordCount-кол-во слов, 100-максимальное кол-во букв в слове
    setlocale(LC_ALL, "rus"); //настройка кодировки
    for (int i=0;i<wordCount;i++) //ввод слов
    {
        cout<<"Введите "<<i+1<<"-е слово: " << endl;
        cin>>s[i];
    }
    for (int i=wordCount-2;i>=0;i--) //цикл по словам, начиная с предпоследнего
    {
        if (strstr(s[i],"cat")) //если строка s[i] содержит "cat"
        {
            int j=i;
            while((j<wordCount-1)&&(!strstr(s[j+1],"cat"))) //тогда меняем её поочередно со всеми нижестоящими, пока не упремся в строку с котом или в конец массива
            {
                char tmp[100];
                strcpy(tmp,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],tmp);
                j++;
            }
        }
    }
    cout<< endl << "Отсортированные слова: "<<endl;
    for (int i=0;i<wordCount;i++) //вывод результата
    {
        cout<<s[i]<<endl;
    }            
    cin>>s[0];
    _getch();
    return 0;
}
Обрати внимание, поправил 22-ю строку (сразу не заметил)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 10:25
Привет! Вот еще темы с ответами:

Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству - C++
Дана последовательность слов. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству:...

Расположить слова порядке возрастания их длины - C++
Дана строка символов. Расположить их в порядке возрастания длины слова. Дайте хелпу ребятки;)

Из заданной последовательности слов удалить слова,содержащие слова - C++
Из заданной последовательности слов удалить слова, содержащие числа.

Расположить элементы последовательности, стоящие на четных местах в порядке уменьшения - C++
Дана последовательность действительных чисел а1, а2, ..., a22. Расположить элементы последовательности, стоящие на четных местах в порядке...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.10.2013, 10:25
Ответ Создать тему
Опции темы

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