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

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

Войти
Регистрация
Восстановить пароль
 
SHBan
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 21
#1

Обсудите моё задание (Страуструп Б.) Последовательности слов - C++

17.01.2013, 19:40. Просмотров 722. Ответов 13
Метки нет (Все метки)

Обсудите моё задание (Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004)
145 ст. задание 11.

//прочитайте последовательность слов из потока ввода - 1
//пусть Quit означает конец ввода - 2
//распечатайте слова в порядке их ввода - 3
//исключите из печати одинаковые слова - 4
//Отсортируйте слова перед печатью - 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include<iostream>
#include<string>
 
//--------------------------------------------------
bool checkEnd(char** mass, int interator);
bool strCopyCheck(char** mass, int interator);
void sortMass(char** mass);
 
void main()
{
    //----------------------------------------------
    //прочитайте последовательность слов из потока ввода - 1
    //пусть Quit означает конец ввода                    - 2
    //распечатайте слова в порядке их ввода              - 3
    //исключите из печати одинаковые слова               - 4
    //Отсортируйте слова перед печатью                   - 5
    
    char** mass = new (char*);
    void enter_mass(char** mass);
    enter_mass(mass);
    void show_mass(char** mass);
    sortMass(mass);
    show_mass(mass);
    
system("pause");
}
//----------------------------------------------------------------
//запись массива строк (введёного слова Ouit) вечный цикл с интератором 
void enter_mass(char** mass)
{
    for(int i = 0;; i++)
    {
        mass[i] = new char;
        std::cin >> mass[i];
        if(!checkEnd(mass,i))
        {
            break;
        }
    }   
}
//-------------------------------------------------------------------
//показывает массив строк (введёного слова Ouit) вечный цикл с интератором 
void show_mass(char** mass)
{
    for(int i = 0;; i++)
    {
        
        if(!checkEnd(mass,i)) //если слово Ouit - выход
        {
            break;
        }
        // отсортируйте слова перед печатью
        if(!strCopyCheck(mass,i)) //если в стеке есть повторонеия то выводим только 1 из них
        {
            std::cout << mass[i] << std::endl;
        }
    }
}
//-------------------------------------------------------------------
// проверка на введенное слово (не является ли оно концом массива)
bool checkEnd(char** mass, int interator)
{
    return strcmp(mass[interator],"Ouit"); // (false если слово - Ouit) || (true если нет)
}
//-------------------------------------------------------------------
bool strCopyCheck(char** mass, int interator)
{
    for(int i = 0; i < interator; i++)
    {
        if(!strcmp(mass[i],mass[interator]))//false - если одинаковое
            return true;                    //Выходим из функции (ЕСТЬ СОВПАДЕНИЯ) в массиве
    }
    return false;                           //Выходим из функции (НЕТ СОВПАДЕНИЙ) в массиве
}
//------------------------------------------------------------------
//сортировка массива строк возвращает отсортированный массив
void sortMass(char** mass)
{
    for(int i = 0 ; checkEnd(mass,i); i++)
        for(int j = i + 1; checkEnd(mass,j); j++)
            //if(mass[i][0] > mass[j][0]) // сортируем по первой букве
            if(strcmp(mass[i],mass[j]) > 0) //возвращает отрицательное если str1 меньше str2
                                            //возврашает нулевое если равно
                                            //возврашает положительное если больше
            {
                //через буферную переменную будим сортировать массив
                char* temp = mass[i]; //поместим значение первого слова в буферную переменную
                mass[i] = mass[j];
                mass[j] = temp;
            }
}


так как это первые 145 страниц этой книги , то как я понимаю всё что было написано на этих страницах и нужно использовать. Смотрел по различным форумам аналоги моей темы но там все забегают на перёд используя материал который будит рассмотрен в книге позже.

Интересуют замечания по написанию и возможно предложения как бы вы поступили с таким заданием.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обсудите моё задание (Страуструп Б.) Последовательности слов (C++):

Страуструп. задание - C++
насколько я понял задание - есть класс class STC { unexpected_handler old; public: STC(unexpected_handler h) { ...

В последовательности слов найти и поменять местами пару слов, у которых первые 3 буквы одного совпадают с последними 3 буквами другого - C++
Лабораторная работа № 6 Строки Цель работы: изучение правил описания, ввода-вывода и основных функций обработки символьных данных. ...

Моё извращённое сознание - C++
Задача для идиотов, но я с ней не справился: Вычислить приближённое значение бесконечной суммы с точностью до e=0.0001. Формула членов...

проверка характеристик последовательности слов - C++
постановка задачи: входные строки представляют собой последовательности слов, разделённых пробелами, запятыми, табуляциями или границами...

Задача:Страуструп. 4.11.4 - C++
1.Напишите программу,которая печатает символы от 'a' до 'z' и цифры от '0' до '9' и их целые значения. 2.Проделайте то же самое для...

Страуструп и Графика - C++
Начал читать Страуструпа. По настоянию автора подключил его заголовочные файлы и библиотеку FLTK. Но программа не работает: ...

13
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2013, 19:42 #2
Цитата Сообщение от SHBan Посмотреть сообщение
void main()
а это на какой странице в книге Страуструпа?

Цитата Сообщение от SHBan Посмотреть сообщение
интератором
и что такое интератор?
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
17.01.2013, 19:48 #3
Где вы видели, чтобы Страуструп писал void main? Так писать не корректно.

Добавлено через 2 минуты
Цитата Сообщение от SHBan Посмотреть сообщение
#include<string>
Вот эта строка зачем, если вы не используете тип string?

Добавлено через 2 минуты
Программа не работает, на Quit не выходит.
0
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
17.01.2013, 19:48 #4
Прежде чем спрашивать о замечаниях по коду, наверное стоит довести программу до работоспособного состояния?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7419 / 4534 / 673
Регистрация: 29.11.2010
Сообщений: 12,304
17.01.2013, 19:51 #5
cstring (string.h) и string совершенно разные хедеры
0
SHBan
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 21
17.01.2013, 23:00  [ТС] #6
Да не заметил хедер . Я просто комментирую задания которые выполнил и этот хедер с другой темы, не заметил. Могу конечно выложить весь код 145 страницы но там разобрать будит не легко, лень создавать новый проект для каждого задания. Пару минуток и всё поправлю))...

Добавлено через 4 минуты
Ну не в курсе по какой вы там кухне , но код который я скопипастил с темы рабочий на все 100.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
17.01.2013, 23:07 #7
SHBan, по стандарту он не должен даже компилироваться, так как в стандарте у функции main всего два прототипа, и каждый из них имеет возвращаемый тип int. gcc его точно не скомпилирует.
0
SHBan
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 21
17.01.2013, 23:09  [ТС] #8
Ну вот как пусто сказано что такое интератор я в курсе и + в курсе зачем я поставил void в мэйне. О чём речь, как говорилось в одной книге отдай свой код на растерзание врагу чтобы понять что в твоём коде плохо. Про коменты кстати простите они не для вас а для меня могу удалить если мозолят. Может я и нуб в программировании, но скажите мне зачем мне что то возвращать там если это не требуется ??? обоснуйте.

Ouit выход у меня ошибка в коменте - могли и сами догадаться)

Раз он в той среде работает он должен знать , про этот стандарт . Раз вызвался что то говорить о не работоспособности...

Простите но я писал тему не для обсуждения компиляторной кроссплатформенности моего кода.
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
17.01.2013, 23:14 #9
SHBan, да что обосновывать - у языка С++ есть стандарт. Это такой документ, где расписано, что и как должно быть. И в стандарте написано, что должно быть int main. void main - неправильно и не скомпилируется (и не надо писать про студию - она не целый мир).
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
17.01.2013, 23:17 #10
SHBan, Вам никто здесь доказывать по этому поводу ничего не будет, эта тема избита, Вы изучаете язык программирования, так делайте это правильно. На форуме очень много информации по этому поводу, не поленитесь воспользоваться поиском.

Добавлено через 1 минуту
Цитата Сообщение от SHBan Посмотреть сообщение
Простите но я писал тему не для обсуждения компиляторной кроссплатформенности моего кода.
Это тут совсем не причем.
Люди пишут об этом не для придирки, а потому что нет никакого желания комментировать заведомо нерабочий код.
0
SHBan
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 21
17.01.2013, 23:21  [ТС] #11
В принципе, я хотел идей которые посещали других новичков при прочтении этой книги. Ну а вы прям загнули в баранку то что я написал.Спс но вопросов я не ждал особенно от таких (как там написано "Эксперт С++" стёб да и только) вспомните себя как начинали изучать программирование, и как вам хотелось чтобы то что вы делили было хоть как то похоже, на то чем вы будите заниматься в дальнейшей жизни)).
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
17.01.2013, 23:27 #12
SHBan, Вам указывают на ошибки, а Вы и слушать не хотите, тогда какой вообще смысл создания данной темы. Нет такого слова интератор, есть итератор ( iterator ). Так же как и void main(); это ошибка, но Вы же гнете свое, так что думаю нормального обсуждения Вы таким способом не получите.
0
SHBan
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 21
17.01.2013, 23:51  [ТС] #13
Цитата Сообщение от Toshkarik Посмотреть сообщение
SHBan, Вам указывают на ошибки, а Вы и слушать не хотите, тогда какой вообще смысл создания данной темы. Нет такого слова интератор, есть итератор ( iterator ). Так же как и void main(); это ошибка, но Вы же гнете свое, так что думаю нормального обсуждения Вы таким способом не получите.
Конечно не будит нормального обсуждения по той причине , по которой вы не читаете что я написал. Хотелось бы видеть и не только ошибки которые вы уже выявили но и предложения которые могут меня заинтересовать, вот написали бы вы как вы написали это задание и + то что мейн нельзя писать войд и то что я в русско английском суржеке не разбираюсь типа итератор и тд. Думаю в этой теме у меня не будит ответов которые я хотел бы получить . Спосибо что прочитали и только отняли своё и моё время.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7419 / 4534 / 673
Регистрация: 29.11.2010
Сообщений: 12,304
18.01.2013, 14:53 #14
SHBan, вы из тех пользователей, которые приглашают мастера и просят работать в корпусе, когда в одном куллере грязи забилось кило на 2. Только вот мастеру еще и платят. А с какой кстати люди должны рыться в вашем "грязном коде" в поисках решения вашей проблемы? Мой нормальный компилятор ваш код не скомпилит, с чего бы я должен делать исправления за вас?
Вы знаете уж точно поменьше, чем люди отвечающие вам, но вот ЧСВ у вас зашкаливает, и вы даже не прислушивайтесь к тому, что вам говорят. Это вдобавок отбивает всякое желание вам помогать.
1
18.01.2013, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2013, 14:53
Привет! Вот еще темы с ответами:

Подсчитать количество слов в данной последовательности - C++
Дана строка длиной n символов. Группы символов, которые разделены пропусками (одним, несколькими ли), будем считать словами. Подсчитать...

Подсчитать количество слов в заданной последовательности - C++
Даны натуральное число n, символы S1, ...,Sn. Группы символов, разделенные пробелами (одним или не-сколькими) и не содержащие пробелов...

Подсчитать количество слов в данной последовательности - C++
Дана строка длиной n символов. Группы символов, разделенных пробелами (одним или несколькими), будем считать словами. Подсчитать количество...

Подсчитать количество слов в данной последовательности - C++
Даны натуральное число n и символы s1,...,sn. Группы символов, разделенные пробелами(одним или несколькими) и не содержащие пробелов внутри...


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

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

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