Тема: Доволі цікава задача С++
Ввести з клавіатури текст, що складається з одного чи кількох слів,
усі символи, відмінні від букв латиниці, перенести в кінець слова.
Дпоможіть написати програму , буду дуже вдячний ))!!
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Доволі цікава задача С++
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Ввести з клавіатури текст, що складається з одного чи кількох слів,
усі символи, відмінні від букв латиниці, перенести в кінець слова.
Дпоможіть написати програму , буду дуже вдячний ))!!
Давайте так: сформулюєте її цікаво - допоможу.
Якщо вам вона цікава - то де ваші напрацювання? Якщо ні - то нащо брешете?
будь ласка допоміжіть ,я не розумію як зробити ..
усі символи, відмінні від букв латиниці, перенести в кінець слова ,не розумію як це зробити
Дякую, але я умію читати. Я запитував, що незрозуміло особисто вам. В найближчі півгодини мені скучно до нестями, я готовий відповідати на будь-які конкретні запитання.
В найближчі півгодини мені скучно до нестями, я готовий відповідати на будь-які конкретні запитання.
quez написав:В найближчі півгодини мені скучно до нестями, я готовий відповідати на будь-які конкретні запитання.
▼Прихований текст
Пізно, півгодини давно минули.
Ввести з клавіатури текст, що складається з одного чи кількох слів,
усі символи, відмінні від букв латиниці, перенести в кінець слова.
Дпоможіть написати програму , буду дуже вдячний ))!!
Рецепт з використанням регулярних виразів
1. Розбити текст на слова. Наступні пункти повторити для кожного слова.
2. Використати змінні типу "стрічка": напр. latin, noLatin і currentWord
3. Якщо currentWord не пуста, то провести пошук регулярним виразом "[a-zA-Z]+". Результатом буде індекс початку частини слова, що складається з нелатиниці, або -1, акщо все слово з латиниці. Якщо індекс не -1, то вирізаєш все із змінної currentWord від початку слова до знайденого індексу і додаєш в кінець змінної noLatin. Знайдений кусок слова з нелатиниці вирізаєш з currentWord і додаєш в кінець змінної latin. Повторювати п.3.
4. Додати змінну noLatin в кінець змінної latin.
5. Повторити п.2 для наступного слова з тексту.
#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) А взагалі я нерозумі чого ніхто до цієї пори не зробив цю задачу навіщо ваші поради якщо форумчанин просить зробить програму ?
#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 в кінець рядка додаєте, там він все одно буде.
#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) А взагалі я нерозумі чого ніхто до цієї пори не зробив цю задачу навіщо ваші поради якщо форумчанин просить зробить програму ?
koala в мене не робить ваша програма https://сайт-злодій/d/C6u5okqlUJbBA
Якщо символ не трапляє між -1 і 256, то це wchar_t. А для них в Visual Studio використовується iswalpha.
Ось вам ще варіант, результат той самий:
http://ideone.com/iuYE4i
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися