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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела http://www.cyberforum.ru/cpp-beginners/thread764759.html
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела. Напечатать все слова отличные от последнего слова, предварительно превратив каждое из них по следующему правилу: перенести последнюю букву в начало слова.
C++ Операторы выбора в С++ на фото задание {(x+y)^2-sqrt(x*y), x*y>0 a={(x+y)^2+sqrt fabs(x*y), x*y<0 {(x+y)^2+1, x*y=0 x,y вводятся http://www.cyberforum.ru/cpp-beginners/thread764758.html
Вывести матрицу в консоли C++
Как вывести матрицу в консоли? Если не ошибаюсь в Паскале так: write (a:4); А с++ как? 1 1 1 1 1 2 3 4 4 5 6 7 2 3 4 2
C++ Односвязный список
Здравствуйте! Кто может разъяснить как вставить в узел заданного места значение.. 1. Нужно выделить память Elem *Ins = new Elem 2. Записать в новый узел значение Ins->data = data А вот что дальше?
C++ Массивы. Организовать ввод матрицы размера mxn из целых чисел http://www.cyberforum.ru/cpp-beginners/thread764747.html
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычислить произведение четных элементов матрицы; 3) упорядочить элементы второго столбца по возрастанию; 4) организовать ввод и вывод матрицы в виде отдельных функций
C++ Циклическая строка. Определить минимально возможную длину исходной строки Строка S была записана много раз подряд, после чего из получившейся строки взяли подстроку и передали как входные данные. Необходимо определить минимально возможную длину исходной строки S. Пример ввода abababa Пример вывода 2 подробнее

Показать сообщение отдельно
SHBan
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 21

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

17.01.2013, 19:40. Просмотров 702. Ответов 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 страниц этой книги , то как я понимаю всё что было написано на этих страницах и нужно использовать. Смотрел по различным форумам аналоги моей темы но там все забегают на перёд используя материал который будит рассмотрен в книге позже.

Интересуют замечания по написанию и возможно предложения как бы вы поступили с таким заданием.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru