1 Востаннє редагувалося КиївОболонь (09.12.2015 20:40:04)

Тема: Не arbeiten пошук кількості голосних

Прихований текст
#include<stdio.h>
#include<string.h>
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
char s[255],*p;
int k,n1,n2,nom=0,i,kg=0;
cout<<"\nvvedit prizv,imya,po-batkovi:";
cin.get(s,255);
k=strlen(s);
if((s[i]=='a')||(s[i]=='e')||(s[i]=='y')||(s[i]=='u')||(s[i]=='i')||(s[i]=='o'))
kg+=1;
cout<<"kilk golosnih="<<kg<<"\n";
cout<<"dovzina ryadka="<<k<<"\n";
 for(i=0;i<k;i++)
 if(s[i]==' ')
 {
 nom++;
 if(nom==1)
 n1=i;
 if(nom==2)
 n2=i;
 }
  for(i=n1+1;i<n2;i++)
  cout<<s[i];
p=strrchr(s,' ');
cout<<"\nkilk bykv 3-go slova="<<strlen(p)-1;
getch();
}

програма працює, але не визначає кількість голосних (тобто завжди пише "0", а якщо змінну kg не оголошувати як нуль, то буде постійно якесь велике незрозуміле постійно однакове число)

2

Re: Не arbeiten пошук кількості голосних

Поясніть ідею, чому ця програма має працювати.

І форматуйте код, якщо не поважаєте себе, то поважайте інших.

3

Re: Не arbeiten пошук кількості голосних

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;
Подякували: КиївОболонь, koala2

4

Re: Не arbeiten пошук кількості голосних

quez написав:

Поясніть ідею, чому ця програма має працювати.

І форматуйте код, якщо не поважаєте себе, то поважайте інших.

в if я перевіряю чи входить в рядок будь-яка голосна буква(для цього достатньо хоча б 1-ої голосної букви, наприклад Е). Якщо в рядок таки входить якась голосна, то до кількості голосних додається "1"(але кількість голосних завжди "0" при виконанні програми)

5

Re: Не arbeiten пошук кількості голосних

не визначає кількість голосних

А чому перевірка на голосність не у циклі?

6

Re: Не arbeiten пошук кількості голосних

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;

Тобто воно не працює лише через те, що знаходиться поза межами циклу?

7

Re: Не arbeiten пошук кількості голосних

КиївОболонь написав:
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] 

одного символу, а не всього масиву тому необхідний цикл

Подякували: КиївОболонь1

8

Re: Не arbeiten пошук кількості голосних

О, на практиці працює. А я і не подумав, що його просто в цикл. Всім дякую!

9 Востаннє редагувалося КиївОболонь (09.12.2015 20:59:43)

Re: Не arbeiten пошук кількості голосних

До речі, колись я щось схоже робив на Паскалі. Але там я писав якось так

const gol=['a','e'..];

;
а після цього йшла перевірка.
В С++ наскільки я розумію, так не можна.

10

Re: Не arbeiten пошук кількості голосних

КиївОболонь написав:

До речі, колись я щось схоже робив на Паскалі. Але там я писав якось так

const gol=['a','e'..];

;
а після цього йшла перевірка.
В С++ наскільки я розумію, так не можна.

Чому ж, можна оголосити статичний масив з заданими значеннями:

static char* gol={'a', 'e'..};

а потім циклічно порівнювати змінну з його елементами.

11

Re: Не arbeiten пошук кількості голосних

P.Y. написав:
КиївОболонь написав:

До речі, колись я щось схоже робив на Паскалі. Але там я писав якось так

const gol=['a','e'..];

;
а після цього йшла перевірка.
В С++ наскільки я розумію, так не можна.

Чому ж, можна оголосити статичний масив з заданими значеннями:

static char* gol={'a', 'e'..};

а потім циклічно порівнювати змінну з його елементами.

Але як на мене, все ж таки простіше так, як я і робив (принаймні тут).

12 Востаннє редагувалося КиївОболонь (18.12.2015 00:21:02)

Re: Не arbeiten пошук кількості голосних

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

13

Re: Не arbeiten пошук кількості голосних

Я б зробив би на початку два масиви. A,B
В одному - просто голосні.
В другому - подвійні голосні.
Заводимо дві змінні, i=0,j=0
Перебір рядка циклом,
Якщо поточний елемент є в першому масиві,то інкрементуємо i++,якщо в другому j++

14

Re: Не arbeiten пошук кількості голосних

Жарт про пехепешників.

Подякували: 0x9111A1

15

Re: Не arbeiten пошук кількості голосних

quez написав:

Жарт про пехепешників.

Нарешті. Думав вже не дочекаюсь.

16

Re: Не arbeiten пошук кількості голосних

Ну і потрібно шукати в буквах верхнього і нижнього регістрів 
Тому такий ваш варіант буде поганим.

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] == 'у'))

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

17

Re: Не arbeiten пошук кількості голосних

Загальна практика в C

if( strchr( "AEOIU", toupper( s[i] ) ) )...
Подякували: VTrim1

18

Re: Не arbeiten пошук кількості голосних

VTrim написав:

Ну і потрібно шукати в буквах верхнього і нижнього регістрів 
Тому такий ваш варіант буде поганим.

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] == 'у'))

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

А хіба підтримуються Українські літери? Компілятор не підтримує навіть перемикання з Англійської.

19

Re: Не arbeiten пошук кількості голосних

КиївОболонь написав:

А хіба підтримуються Українські літери?

На це я вже відповідав.

КиївОболонь написав:

Компілятор не підтримує навіть перемикання з Англійської.

Я вам більше скажу - жоден компілятор на світі не підтримує навіть перемикання на англійську, не те, що з неї. Розберіться, що таке компілятор, редактор, IDE, лінкувальник і драйвер клавіатури, а потім спробуйте сказати те, що хотіли.

20

Re: Не arbeiten пошук кількості голосних

koala написав:
КиївОболонь написав:

А хіба підтримуються Українські літери?

На це я вже відповідав.

КиївОболонь написав:

Компілятор не підтримує навіть перемикання з Англійської.

Я вам більше скажу - жоден компілятор на світі не підтримує навіть перемикання на англійську, не те, що з неї. Розберіться, що таке компілятор, редактор, IDE, лінкувальник і драйвер клавіатури, а потім спробуйте сказати те, що хотіли.

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