Тема: Не arbeiten пошук кількості голосних
програма працює, але не визначає кількість голосних (тобто завжди пише "0", а якщо змінну kg не оголошувати як нуль, то буде постійно якесь велике незрозуміле постійно однакове число)
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Не arbeiten пошук кількості голосних
Для відправлення відповіді ви повинні увійти або зареєструватися
програма працює, але не визначає кількість голосних (тобто завжди пише "0", а якщо змінну kg не оголошувати як нуль, то буде постійно якесь велике незрозуміле постійно однакове число)
Поясніть ідею, чому ця програма має працювати.
І форматуйте код, якщо не поважаєте себе, то поважайте інших.
for (i = 0; i<k; i++)
if ((s[i] == 'a') || (s[i] == 'e') || (s[i] == 'y') || (s[i] == 'u') || (s[i] == 'i') || (s[i] == 'o'))
kg += 1;
Поясніть ідею, чому ця програма має працювати.
І форматуйте код, якщо не поважаєте себе, то поважайте інших.
в if я перевіряю чи входить в рядок будь-яка голосна буква(для цього достатньо хоча б 1-ої голосної букви, наприклад Е). Якщо в рядок таки входить якась голосна, то до кількості голосних додається "1"(але кількість голосних завжди "0" при виконанні програми)
не визначає кількість голосних
А чому перевірка на голосність не у циклі?
for (i = 0; i<k; i++) if ((s[i] == 'a') || (s[i] == 'e') || (s[i] == 'y') || (s[i] == 'u') || (s[i] == 'i') || (s[i] == 'o')) kg += 1;
Тобто воно не працює лише через те, що знаходиться поза межами циклу?
Betterthanyou написав:for (i = 0; i<k; i++) if ((s[i] == 'a') || (s[i] == 'e') || (s[i] == 'y') || (s[i] == 'u') || (s[i] == 'i') || (s[i] == 'o')) kg += 1;
Тобто воно не працює лише через те, що знаходиться поза межами циклу?
Ти звертаєшся до
s[i]
одного символу, а не всього масиву тому необхідний цикл
О, на практиці працює. А я і не подумав, що його просто в цикл. Всім дякую!
До речі, колись я щось схоже робив на Паскалі. Але там я писав якось так
const gol=['a','e'..];
;
а після цього йшла перевірка.
В С++ наскільки я розумію, так не можна.
До речі, колись я щось схоже робив на Паскалі. Але там я писав якось так
const gol=['a','e'..];
;
а після цього йшла перевірка.
В С++ наскільки я розумію, так не можна.
Чому ж, можна оголосити статичний масив з заданими значеннями:
static char* gol={'a', 'e'..};
а потім циклічно порівнювати змінну з його елементами.
КиївОболонь написав:До речі, колись я щось схоже робив на Паскалі. Але там я писав якось так
const gol=['a','e'..];
;
а після цього йшла перевірка.
В С++ наскільки я розумію, так не можна.Чому ж, можна оголосити статичний масив з заданими значеннями:
static char* gol={'a', 'e'..};
а потім циклічно порівнювати змінну з його елементами.
Але як на мене, все ж таки простіше так, як я і робив (принаймні тут).
А як тоді подвоїти всі голосні? Робиться перевірка чи елемент - це голосна буква чи ні, а далі присвоюється цій голосній значення подвійної тієї ж голосної (якщо елемент - це голосна буква) і знову виводиться рядок чи як?
Я б зробив би на початку два масиви. A,B
В одному - просто голосні.
В другому - подвійні голосні.
Заводимо дві змінні, i=0,j=0
Перебір рядка циклом,
Якщо поточний елемент є в першому масиві,то інкрементуємо i++,якщо в другому j++
Жарт про пехепешників.
Жарт про пехепешників.
Нарешті. Думав вже не дочекаюсь.
Ну і потрібно шукати в буквах верхнього і нижнього регістрів
Тому такий ваш варіант буде поганим.
if ((s[i] == 'А') || (s[i] == 'а') || (s[i] == ''Е'') || (s[i] == 'е')
|| (s[i] == 'И') || (s[i] == 'и') || (s[i] == 'І') || (s[i] == 'і')
|| (s[i] == 'О') || (s[i] == 'о') || (s[i] == 'У') || (s[i] == 'у'))
Тим більще,якщо таким же способом будете перевіряти і голосні і подвійні голосні.
Ну і потрібно шукати в буквах верхнього і нижнього регістрів
Тому такий ваш варіант буде поганим.if ((s[i] == 'А') || (s[i] == 'а') || (s[i] == ''Е'') || (s[i] == 'е') || (s[i] == 'И') || (s[i] == 'и') || (s[i] == 'І') || (s[i] == 'і') || (s[i] == 'О') || (s[i] == 'о') || (s[i] == 'У') || (s[i] == 'у'))
Тим більще,якщо таким же способом будете перевіряти і голосні і подвійні голосні.
А хіба підтримуються Українські літери? Компілятор не підтримує навіть перемикання з Англійської.
А хіба підтримуються Українські літери?
На це я вже відповідав.
Компілятор не підтримує навіть перемикання з Англійської.
Я вам більше скажу - жоден компілятор на світі не підтримує навіть перемикання на англійську, не те, що з неї. Розберіться, що таке компілятор, редактор, IDE, лінкувальник і драйвер клавіатури, а потім спробуйте сказати те, що хотіли.
КиївОболонь написав:А хіба підтримуються Українські літери?
На це я вже відповідав.
КиївОболонь написав:Компілятор не підтримує навіть перемикання з Англійської.
Я вам більше скажу - жоден компілятор на світі не підтримує навіть перемикання на англійську, не те, що з неї. Розберіться, що таке компілятор, редактор, IDE, лінкувальник і драйвер клавіатури, а потім спробуйте сказати те, що хотіли.
Мається на увазі, що під час написання програми навіть якщо перемкнути мову клавіатури, то при продовженні набору програми текст все одно буде англійськими буквами.
Для відправлення відповіді ви повинні увійти або зареєструватися