1

Тема: Бібліотечні функції для роботи зі символами та символьними рядками

Всі доброго вечора, потрібна допомога з ось такою задачею. Все потрбіно зробити на С

З клавіатури ввести символьний рядок. Перевірити, чи збігається друге слово цього рядка з його передостаннім словом. Якщо ні, то вивести відповідне повідомлення. Якщо ж слова збігаються, то вилучити з рядка друге слово, посунувши всі наступні слова ліворуч, та надрукувати скорочений рядок.


Ось приклад мого коду на С++( але він не сильно працює)

#include <iostream>
#include <cstring>
#include <cstdlib>

using namespace std;

int main()
{
    char str[100], * w, * nn[100];
    unsigned char count = 0;

    cout << "Enter a string : ";
    cin.getline(str, 100);

    w = strtok(str, " ");
    while (w != NULL)
    {
        nn[count++] = w;
        w = strtok(NULL, " "); // проблема ось тут, компілятор жаліється на на те що замало аргументів для викликала функції
    }
    nn[count] = nn[count - 1] + strlen(nn[count - 1]);

    if (count > 2)
    {
        if (strcmp(nn[1], nn[count - 1]) == 0)
        {
            cout << "Second word = last word." << endl;
            char* i, * j;
            for (i = nn[2], j = nn[1]; i <= nn[count]; ++i, ++j)
            {
                *j = *i;
                if (*j == '\0') *j = ' ';
            }
            *(j - 1) = '\0';
            *(str + strlen(str)) = ' ';
            cout << str << endl;
        }
        else cout << "Second word != last word." << endl;
    }

    system("pause");
    return 0;
}


Взагалі потрібно написати дві програми на С з використанням бібліотечної функції <cstdlib> і без неї(а я щось не вдупляю)

2

Re: Бібліотечні функції для роботи зі символами та символьними рядками

У вас є задача - написати код на C. Ви, замість того, щоб її розв'язувати, почали розв'язувати іншу - написати схожий код на C++. Це добре, що ви вчите інші мови, але який це має стосунок до вашої задачі? І чого ви очікуєте від форумчан, якщо самі навіть не почали розв'язувати ВАШУ задачу?

me4k написав:

Взагалі потрібно написати... з використанням бібліотечної функції <cstdlib>

У C немає "бібліотечної функції <cstdlib>". І у C++ немає "бібліотечної функції <cstdlib>". У C++ є бібліотека <cstdlib>, у якій є функції. Оскільки це функції з бібліотеки, вони звуться бібліотечними. А у C є аналогічна бібліотека, що зветься <stdlib.h>. Будь ласка, розберіться, що саме вам потрібно, і почніть робити саме те, що вам потрібно, а не щось схоже.

Подякували: 0xDADA11C7, leofun012

3

Re: Бібліотечні функції для роботи зі символами та символьними рядками

koala написав:

У вас є задача - написати код на C. Ви, замість того, щоб її розв'язувати, почали розв'язувати іншу - написати схожий код на C++. Це добре, що ви вчите інші мови, але який це має стосунок до вашої задачі? І чого ви очікуєте від форумчан, якщо самі навіть не почали розв'язувати ВАШУ задачу?

me4k написав:

Взагалі потрібно написати... з використанням бібліотечної функції <cstdlib>

У C немає "бібліотечної функції <cstdlib>". І у C++ немає "бібліотечної функції <cstdlib>". У C++ є бібліотека <cstdlib>, у якій є функції. Оскільки це функції з бібліотеки, вони звуться бібліотечними. А у C є аналогічна бібліотека, що зветься <stdlib.h>. Будь ласка, розберіться, що саме вам потрібно, і почніть робити саме те, що вам потрібно, а не щось схоже.



Перепрошую, неправильно написав. Повинна бути <stdlib.h>. Від форуму я очікую допомоги в написанні задачі або якісь поради)
Можу змінити завдання на те щоб просто написати код на с++ без бібліотеки <stdlib.h>)

4

Re: Бібліотечні функції для роботи зі символами та символьними рядками

Можу змінити завдання на те щоб просто написати код на с++ без бібліотеки <stdlib.h>)

Ви головне самі визначтеся, бо

Все потрбіно зробити на С

Ось приклад мого коду на С++( але він не сильно працює)

Схоже на якісь психічні розлади, без образ.
Тепер щодо помилки:

        w = strtok(NULL, " "); // проблема ось тут, компілятор жаліється на на те що замало аргументів для викликала функції

По-перше вкажіть яким компілером ви користуєтеся, бо їх багато. По-друге я вам не вірю(бо в документації до функції вона приймає 2 арґумента, а не 1 чи 22), тому будь ласка, напишіть дослівно що пише компілер.