С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Последовательность из 5 слов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерный динамический массив. Хочу разобраться (понять) код программы http://www.cyberforum.ru/cpp-beginners/thread1774579.html
Вот такая вот задача: Написать прог-му которая для вещественного массива из (n) элементов определяет сумму элементов расположенный правее последнего отрицательного элемента. А вот непосредственно...
C++ Упорядочить квадратную матрицу Упорядочить (отсортировать матрицу), что бы было так: a11 <= a12 <=<= a1n <= a21 <= a22 <=<= a2n <=<= an1 <= an1 <=<= ann Плюсом отплачу ;) http://www.cyberforum.ru/cpp-beginners/thread1774553.html
Файл: Как сделать так, чтобы при запуске программы проверялось, существует ли файл? C++
Как сделать так, чтобы при запуске программы проверялось, существует ли файл. Если да, то он обнуляется, если нет, то создается?
Order of evaluation C++
Всем привет. Никак не могу побороть Order of evaluation. В статье на cppreference, приводятся примеры UB и уже на первом я застреваю и не понимаю почему именно так: If a side effect on a scalar...
C++ Функция , которая перезапускает проект http://www.cyberforum.ru/cpp-beginners/thread1774494.html
Подскажите есть команда или ф-Ия которая перезапускает проект заного Завершает текущий проект и открывает его заного Спасибо
C++ Использование стороннего контейнера Помогите из этого кода, сделать нормальную прогу #ifndef _GLIBCXX_ARRAY #define _GLIBCXX_ARRAY 1 #pragma GCC system_header #if __cplusplus < 201103L # include <bits/c++0x_warning.h> #else подробнее

Показать сообщение отдельно
narsky
2 / 2 / 1
Регистрация: 23.03.2016
Сообщений: 117

Последовательность из 5 слов - C++

02.07.2016, 10:54. Просмотров 509. Ответов 24
Метки (Все метки)

Задача:
Дана последовательность, содержащая до 5 слов, в каждом из которых до 5 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатать все слова последовательности, предварительно преобразовав каждое из них по следующему правилу:
1) перенести последнюю букву в начало слова;
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
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <string>
using namespace std;
 
int main(){
    char string[256];
    char *word1 = new char[6];
    char *word2 = new char[6];
    char *word3 = new char[6];
    char *word4 = new char[6];
    char *word5 = new char[6];
    char *buf;
    char *p;
    char buf1;
    int mark;
    int nword;
    char *check;
    int max;
    char out1[] = "\0\0\0\0\0";
    char out2[] = "\0\0\0\0\0";
    char out3[] = "\0\0\0\0\0";
    char out4[] = "\0\0\0\0\0";
    char out5[] = "\0\0\0\0\0";
 
    setlocale(LC_ALL, "Russian");
 
    for (int i = 0; i < 100; i++)
        string[i] = '\0';
    
    cout << "Введите вашу строку и нажмите клавишу Enter: " << endl;
    cin >> string;
    p = string;
    check = strchr(p, '.');
 
    if (check == 0)
    {
        cout << "Нет точки! При нажатии любой клавиши программа завершится!" << endl;
        system("pause");
        return 0;
    }
 
    
    mark = 0;
    nword = 0;
 
    while (*p != '.')
    {
        if (*p == ' ' && mark != 1)
        {
            nword++;
            mark = 1;
        }
        *p++;
        if (*p != ' ')
            mark = 0;
        if (*p == '.')
            nword++;
    }
 
 
    cout << "Слов: " << nword << endl;
 
    if (nword == 0)
    {
        cout <<"Ошибка! Вы написали только точку! \nПри нажатии любой клавиши программа завершится!" << endl;
        system("pause");
        return 0;
    }
 
    if (nword > 5)
    {
        cout <<"Ошибка! Вы написали более 5 слов! \nПри нажатии любой клавиши программа завершится!" << endl;
        system("pause");
        return 0;
    }
 
    buf = strtok(string, " .");
    if (buf == NULL || strlen(buf) > 5)
    {
        cout << "Ошибка! Больше 5 букв в 1 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
        system("pause");
        return 0;
    }
    else memcpy(word1, buf, 6);
        
    if (nword >= 2)
    {
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 2 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            return 0;
        }
        else memcpy(word2, buf, 6);
    }
 
    if (nword >= 3)
    {
 
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 3 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            return 0;
        }
        else memcpy(word3, buf, 6);
    }
 
    if (nword >= 4)
    {
 
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 4 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            return 0;
        }
        else memcpy(word4, buf, 6);
    }
 
    if (nword == 5)
    {
 
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 5 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            return 0;
        }
        else memcpy(word5, buf, 6);
    }
 
 
    delete(word1);
    delete(word2);
    delete(word3);
    delete(word4);
    delete(word5);
    
    system("pause");
    return 0;
}
Когда я вписываю одно слово, не используя пробел, все нормально выходит, но только мне стоит написать два слова, через пробел, выходит ошибка, что нет точки, хотя я её ставлю. В чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.