Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2016, 11:07   #1
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию Перенести последнюю букву в начало слова; удалить из слова первую букву

Задача:
Цитата:
Дана последовательность, содержащая до 5 слов, в каждом из которых до 5 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатать все слова последовательности, предварительно преобразовав каждое из них по следующему правилу:
1) перенести последнюю букву в начало слова;
2) удалить из слова первую букву.

Примечание: Все операции над строками выполняются отдельными функциями в том порядке, в котором они описаны в задании. Кроме того, в случае необходимости, должна быть реализована проверка на целостность кучи
Часть кода:
Код:
#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 letter;
    char tmp;
    int mark;
    int nword;
    int i;
    char *check;
 
    setlocale(LC_ALL, "Russian");
 
    for (int i = 0; i < 100; i++)
        string[i] = '\0';
 
    cout << "Введите вашу строку и нажмите клавишу Enter: " << endl;
    cin.getline(string, 256);
    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");
        delete(word1);
        return 0;
    }
    else strcpy(word1, buf);
 
    if (nword >= 2)
    {
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 2 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            delete(word2);
            return 0;
 
        }
        else strcpy(word2, buf);
    }
 
    if (nword >= 3)
    {
 
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 3 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            delete(word3);
            return 0;
        }
        else strcpy(word3, buf);
    }
 
    if (nword >= 4)
    {
 
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 4 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            delete(word4);
            return 0;
        }
        else strcpy(word4, buf);
    }
 
    if (nword == 5)
    {
 
        buf = strtok(NULL, " .");
        if (buf == NULL || strlen(buf) > 5)
        {
            cout << "Ошибка! Больше 5 букв в 5 слове! \nПри нажатии любой клавиши программа завершится!" << endl;
            system("pause");
            delete(word5);
            return 0;
        }
        else strcpy(word5, buf);
    }
 
 
    delete(word1);
    delete(word2);
    delete(word3);
    delete(word4);
    delete(word5);
 
    system("pause");
    return 0;
}
Предположительный код для первой части задачи:
Код:
if (nword >= 1)
    {
        strcpy(p, word1);
        for (i = 0; i < strlen(word1); i++)
            tmp = word1[i];
        memmove(word1 + 1, word1, strlen(word1));
        word1[0] = tmp;
        cout << word1 << " ";
    }
Нужна помощь в написании программы.
Narsky вне форума Ответить с цитированием
Старый 03.07.2016, 13:49   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Слушай, а ты с отладкой программ знаком?
И ещё, в какой среде программируешь? (Visual Studio?)

Я тут подумал, что у тебя какая-то куча программ на одно - два действия и в тоже время какие-то проблемы с реализацией. Такое ощущение. что тебе чего-то не хватает - может быть техники отладки. И соответственно, проще тебя обучить ей, чем решать кучу твоих задач.
ura_111 вне форума Ответить с цитированием
Старый 03.07.2016, 14:13   #3
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Я готов учиться, мастер!
Да, visual studio 2012/2015
Narsky вне форума Ответить с цитированием
Старый 03.07.2016, 14:31   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я не большой специалист, это точно.

Ну ладно.

Вопрос 1: Ты знаешь, что такое "Точка останова"?
ura_111 вне форума Ответить с цитированием
Старый 03.07.2016, 14:36   #5
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Нет. Но могу предположить, что это та неверная функция, после которой программа не может дальше работать.
Narsky вне форума Ответить с цитированием
Старый 03.07.2016, 14:43   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

сДЕЛАЙ ТАК.

ura_111 вне форума Ответить с цитированием
Старый 03.07.2016, 14:49   #7
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Сделал
Narsky вне форума Ответить с цитированием
Старый 03.07.2016, 14:52   #8
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Посмотри стоит ли Debug. И запускай отладку.



ura_111 вне форума Ответить с цитированием
Старый 03.07.2016, 15:00   #9
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Запустил, появилось пустое консольное окно, в коде вместо точки останова появилась стрелочка
Narsky вне форума Ответить с цитированием
Старый 03.07.2016, 15:03   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Отлично. Во время отладки постоянно следи за желтой стрелкой.

Я повторяю постоянно следи за желтой стрелкой.
Желтая стрелка - это строчка кода, которая будет выполняться в текущий момент.


Ты понимаешь: выполнять программу по шагам.

Задание 2: Наведи на переменные (word3 tmp nword .......) и посмотри ихнее текущие значения. Напиши здесь все значения. Для примера смю рис.


ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из текстового файла прочитать предложение, первую букву каждого слова сделать большой romaust C# (си шарп) 0 04.05.2016 10:51
Pascal ABC. В текстовом русскоязычном файле убрать все слова, начинающиеся на букву «а» и одновременно содержащие букву «о» MarsLoveMoon Паскаль, Turbo Pascal, PascalABC.NET 8 25.04.2014 17:03
Дан текст, состоящий из букв и пробелов, слова разделяются пробелом. Поменять первую и вторую букву каждого слова. danteone Помощь студентам 6 21.05.2012 12:31
Удаление повторных вхождений. Переместить последнюю букву в начало слова. mo_Ouse C# (си шарп) 4 21.04.2012 20:53
Поменять 1 и последнюю букву последнего слова а строке с++ Bolisoff Помощь студентам 1 10.01.2012 18:22