1

Тема: Доволі цікава задача С++

Ввести з клавіатури текст, що складається з одного чи кількох слів,
усі символи, відмінні від букв латиниці, перенести в кінець слова. 

Дпоможіть написати програму , буду дуже вдячний ))!!

2

Re: Доволі цікава задача С++

Давайте так: сформулюєте її цікаво - допоможу.

Подякували: dunav20111

3

Re: Доволі цікава задача С++

Якщо вам вона цікава - то де ваші напрацювання? Якщо ні - то нащо брешете?

Подякували: dunav20111

4

Re: Доволі цікава задача С++

будь ласка допоміжіть ,я не розумію як зробити ..

5

Re: Доволі цікава задача С++

В якому місці незрозуміло?

6

Re: Доволі цікава задача С++

усі символи, відмінні від букв латиниці, перенести в кінець слова ,не розумію як це зробити

7

Re: Доволі цікава задача С++

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

8 Востаннє редагувалося Chemist-i (18.06.2014 18:33:29)

Re: Доволі цікава задача С++

quez написав:

В найближчі півгодини мені скучно до нестями, я готовий відповідати на будь-які конкретні запитання.

Прихований текст

Де Ви жиєте, скільки Вам років, чому у Вас на аві прапор Індії? Скільки буде 2+2*2? =)

9

Re: Доволі цікава задача С++

Chemist-i написав:
quez написав:

В найближчі півгодини мені скучно до нестями, я готовий відповідати на будь-які конкретні запитання.

Прихований текст

Де Ви жиєте, скільки Вам років, чому у Вас на аві прапор Індії? Скільки буде 2+2*2? =)

Пізно, півгодини давно минули.

Подякували: Chemist-i1

10

Re: Доволі цікава задача С++

dunav2011 написав:

Ввести з клавіатури текст, що складається з одного чи кількох слів,
усі символи, відмінні від букв латиниці, перенести в кінець слова. 
Дпоможіть написати програму , буду дуже вдячний ))!!

Рецепт з використанням регулярних виразів
1. Розбити текст на слова. Наступні пункти повторити для кожного слова.
2. Використати змінні типу "стрічка": напр. latin, noLatin і currentWord
3. Якщо currentWord не пуста, то провести пошук регулярним виразом "[a-zA-Z]+". Результатом буде індекс початку частини слова, що складається з нелатиниці, або -1, акщо все слово з латиниці. Якщо індекс не -1, то вирізаєш все із змінної currentWord від початку слова до знайденого індексу і додаєш в кінець змінної noLatin. Знайдений кусок слова з нелатиниці вирізаєш з currentWord і додаєш в кінець змінної latin. Повторювати п.3.
4. Додати змінну noLatin в кінець змінної latin.
5. Повторити п.2 для наступного слова з тексту.

11

Re: Доволі цікава задача С++

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    char alfavit[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz\0";
    char text[100] = "";
    char tum1[100] = "", tum2[100] = "";
    cin.getline(text,100);
    int q=0, w=0;
    for (int i = 0; i < strlen(text); i++)
    {
        for (int j = 0; j < strlen(alfavit); j++)
        {
            if (text[i] == alfavit[j])
            {
                tum2[q++] = text[i];
                break;
            }
            else
                if (j == strlen(alfavit) - 1)
            {
                tum1[w++] = text[i];
            }
        }
    }
    strcat(tum2, tum1);
    strcpy(text, tum2);
    cout << text;
    getch();
    return 0;
}

Тільки там пробіл вважається не латинський бо як ти просив /відмінні від букв латиниці, перенести в кінець слова/ а пробіл це не латинська буква (зроблено за допомогою VS13) А взагалі я нерозумі чого ніхто до цієї пори не зробив цю задачу навіщо ваші поради якщо форумчанин просить зробить програму ?

12

Re: Доволі цікава задача С++

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main() {
    string input, latin, other;
    getline( cin, input );
    for( auto c : input )
      if( isalpha( c ) )
        latin += c;
      else
        other += c;
    cout << ( latin += other );
    return 0;
}

Все на стандартних функціях, все чудово працює на C++11.
А ви дарма \0 в кінець рядка додаєте, там він все одно буде.

13

Re: Доволі цікава задача С++

Betterthanyou написав:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    char alfavit[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz\0";
    char text[100] = "";
    char tum1[100] = "", tum2[100] = "";
    cin.getline(text,100);
    int q=0, w=0;
    for (int i = 0; i < strlen(text); i++)
    {
        for (int j = 0; j < strlen(alfavit); j++)
        {
            if (text[i] == alfavit[j])
            {
                tum2[q++] = text[i];
                break;
            }
            else
                if (j == strlen(alfavit) - 1)
            {
                tum1[w++] = text[i];
            }
        }
    }
    strcat(tum2, tum1);
    strcpy(text, tum2);
    cout << text;
    getch();
    return 0;
}

Тільки там пробіл вважається не латинський бо як ти просив /відмінні від букв латиниці, перенести в кінець слова/ а пробіл це не латинська буква (зроблено за допомогою VS13) А взагалі я нерозумі чого ніхто до цієї пори не зробив цю задачу навіщо ваші поради якщо форумчанин просить зробить програму ?

Прихований текст

сліва в тому, що це не благодійний фонд, де люди роблять за когось роботу, тут допомогають розібратись з конкретними проблемами, і якщо чувак просто не вчив нічого весь рік, а тепер йому треба лабу здати, то нехай йде звідсіля!

14 Востаннє редагувалося Betterthanyou (20.06.2014 21:16:20)

Re: Доволі цікава задача С++

koala в мене не робить ваша програма https://сайт-злодій/d/C6u5okqlUJbBA

15 Востаннє редагувалося koala (20.06.2014 23:31:48)

Re: Доволі цікава задача С++

Якщо символ не трапляє між -1 і 256, то це wchar_t. А для них в Visual Studio використовується iswalpha.
Ось вам ще варіант, результат той самий:
http://ideone.com/iuYE4i