Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
#1

Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А - C++

10.11.2013, 19:08. Просмотров 1015. Ответов 33
Метки нет (Все метки)

Дана задача написать, чтобы с++ делила слово на слоги в том месте где стоит буква А, например к слову КАЗАХСТАН, отсюда чтобы с++ должна была написать КА-ЗА-ХСТА-Н
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 19:08     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А
Посмотрите здесь:

C++ Определить, какая цифра стоит на заданном месте в последовательности
Доделать и исправить. Дано слово из 12 букв. Поменять местами его трети: первую треть разместить на месте третьей, вторую на месте первой и 3 на 2 C++
C++ Узнать что стоит на определённом месте (0 или 1)
C++ На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы
Разбить введенное слово на слоги C++
C++ Turbo Pascal -> C++ (подсчет суммы мест, на которых в словах текста стоит заданная буква)
Выполнить кольцевой сдвиг элементов массива так чтобы его первый максимальный элемент оказался на k-том месте C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
10.11.2013, 19:20     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #2
Бауыржан, а при чем тут массивы? Делаете цикл, в нем условие if (a[i] == 'A') cout << "-"
Tulosba
10.11.2013, 19:33
  #3

Не по теме:

Цитата Сообщение от Folko Посмотреть сообщение
а при чем тут массивы?
Цитата Сообщение от Folko Посмотреть сообщение
a[i]
массивов нет?

Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 19:39  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #4
по ходу тут есть массивы в построений программы или же всё таки нет?

Добавлено через 1 минуту
Tulosba помоги в построений программы я новичок каак написать?? чтобы с++ делила слово на слоги в том месте где стоит буква А, например к слову КАЗАХСТАН, отсюда чтобы с++ должна была написать КА-ЗА-ХСТА-Н любые введённые слова чтобы делила где А
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.11.2013, 19:42     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #5
Цитата Сообщение от Бауыржан Посмотреть сообщение
Нужна пмщ
Может пмж?
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 19:44  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #6
да
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/****** grmxtd.c - грамматический перенос  08.12.92 ***/
#include "a.h"
#include "xtd.h"
 void *malc();
 static char LW[] = "аеиоуэюяыaeoui";
 asi word = 0;  /* 1 - не разбивать слова */
 static char *fr;
 
static perno(int a, int b);    /* Поиск возможного переноса в fr[a:b]         */
                /* Возвращает место возможного переноса или 0 */
/************************* Поиск гласной в fr[a,b]  *******/
static choilw(int a, int b);   /* Возвращает номер гласной или -1 */
/* ------------------ */
XTD *grmxtd(char *from, int nt)
{  int k, rw1, rw2, bw1, bw2, bp, nf, j, r1, r2, kf;
   XTD *x; char *to;   char frnt;
       /* r1 - разделитель до переноса              */
       /* r2 - разделитель после переносимого слова */
       /* rw1 - гласная до переноса                 */
       /* rw2 - гласная после переноса              */
       /* bw1 - есть ли гласная до переноса         */
       /* bw2 - есть ли гласная после переноса      */
       /* bp - анализ и пропуск пробела             */
 
  x = genxtd();
  if (nt<1) return(x);
  to = malc(nt+1);
  if (from==NULL) fr="";
  else fr = from;
 
a:  nf=strlen(fr);
    if (nf==0) {
       if (x->ns==0) asgxtd(x,fr);
       free(to);
       return(x);
    }
    bp = bw1 = bw2 = 0;
    memst(to, ' ', nt);
                   /* Символ '@' вызывает насильственный перенос */
  k=(nf>nt) ? nt+1 : nf;
  afc(j,k) {
     if (fr[j]=='@') {
     memcpy(to,fr,j);
     kf = j+1;
     goto a2;
     }
  }
  if (nf<=nt) {  /* Все и так помещается  */
      kf = nf; goto a1; }
 
  frnt=fr[nt];
  if ( frnt==' ' || frnt=='(' ||
       (frnt=='"' && !isbu(fr[nt-1])) || nt < 3 ) { /* Естественная разбивка  */
                                 kf=nt; bp=1; goto a1;  }
 
   for (r1=nt-1;r1>=0; r1--)
    if (isbu(fr[r1])==0) break;
          /* на выходе из этого цикла r1=номеру разделителя или -1  */
 
    if ( r1==nt-1  ||  r1==nt-2 )  /* Перенос по концу слова  */
                        goto forc2;
    if (r1==nt-3)    {
     if (fr[r1] !='(' && !(fr[r1]=='"' && !isbu(fr[r1-1])) || nt==3) r1++;
     kf=r1;
     goto a1;
    }
    if (word) goto forc;
 
   if ((rw1=choilw(r1+1,nt-2))>=0) bw1=1;
   if (!bw1) goto forc;            /* Нету гласных  */
 
   afcn(r2,nt,nf)       /* Поиск разделителя после слова  */
     if (isbu(fr[r2])==0) break;
                        /* Теперь слово ограничено r1 и r2  */
 
   afcn(j,r1+1,r2-1) /* Если в слове есть цифры - грубый перенос */
     if ('0'<=fr[j] && fr[j]<='9') goto forc;
 
   for (rw2=nt-1; rw2<r2; rw2++)  /* Поиск гласной за переносом */
     if (strchr(LW,tolow(fr[rw2]))!=NULL)   {  bw2=1;  break; }
 
                         /* Начальная попытка  */
   if (rw2==r2-1  && rw2==nt-1)
                k = perno(rw1,nt-3);
   else
       if (bw2) k = perno(rw1,nt-2);
       else k=0;
   while (k==0)  {     /* Пока перенос не найден  */
     if ((j=choilw(r1+1,rw1-1)) < 0 )
                   goto forc;  /* Гласные кончились - грубый перенос */
     rw2=rw1;  rw1=j;
     k = perno(rw1,rw2-1);
   }
              /* нашли перенос после fr[k]   */
    kf = k+1;
    to[kf] = '-';
    goto a1;
 
forc:                     /* Грубый перенос  */
        if (r1<1) {
         kf = nt;
         goto a1;
        }
 
forc2:               /* Перенос по концу слова */
   kf=r1;
   if ( fr[r1] != '(' && !(fr[r1]=='"' && !isbu(fr[r1-1]))) kf++;
   bp=1;
 
a1:     memcpy(to,fr,kf);
        if (bp && fr[kf]==' ') kf++;
 
a2: fr += kf;
    asgxtd(x,to);
    goto a;
}
/************************* Поиск гласной в fr[a,b]  *******/
static choilw(int a, int b)   /* Возвращает номер гласной или -1 */
{  int j;
      for(j=b; j>=a; j--)
      if (strchr(LW, tolow(fr[j]))!=NULL) return(j);
      return(-1);   }
/*************************/
static perno(int a, int b)    /* Поиск возможного переноса в fr[a:b]         */
                /* Возвращает место возможного переноса или 0 */
{ int j; char s_1,s0,s1;
      for (j=b; j>=a; j--)  {  /* Изучение возможности переноса после j-того символа */
         s1=tolow(fr[j+1]);
                /* Чтоб Ь и Ъ не отрывались  */
     if (s1=='ъ' || s1=='ь') continue;
                /* согласная - гласная : нехорошо */
         s0=fr[j];
     if (strchr(LW,s1)!=NULL && strchr(LW,s0)==NULL
          && strchr("ьъ",s0)==NULL) continue;
                /* гласная - Й : нехорошо  */
         if (strchr(LW,s0)!=NULL && s1=='й' ) continue;
        /* гласная гласная - : нехорошо  */
         s_1=tolow(fr[j-1]);
     if (strchr(LW,s_1)!=NULL && strchr(LW,s0)!=NULL) continue;
                /*  ХХ- и -ХХ : нехорошо  */
         if (s0==s_1) continue;
     if (fr[j+1]==fr[j+2]) continue;
                /* Чтоб одна буква не оставалась */
     if (isbu(s_1)==0) return(0);
         return(j);
      }
      return (0);               }
/****************/
set_grm_word(int k)
{  int OldWord;
 
  OldWord = word;
  word = k;  
  return(OldWord);
}
/**************/
Добавлено через 30 секунд
подскажите что отсюда мне взять для моей программы
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.11.2013, 19:45     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #7
Цитата Сообщение от Tulosba Посмотреть сообщение
массивов нет?
А ничего, что строчный тип - совершенно особый тип скалярного массива.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
10.11.2013, 19:51     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #8

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Может пмж?
Казахстан. пмж... есть в этом что-то



Добавлено через 44 секунды
Цитата Сообщение от Бауыржан Посмотреть сообщение
например к слову КАЗАХСТАН
а слово в каком типе данных представлено?
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 19:53  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #9
ну при введений разных слов встречающихся в них букв А например Казахстан Массив Красиво программа написала так Ка-за-хста-н Ма-ссив Кра-сиво смекаете??)) помогите пожалуйста!
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
10.11.2013, 19:55     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #10
Tulosba, массивов нет. Есть строка
Tulosba
10.11.2013, 19:56
  #11

Не по теме:

Цитата Сообщение от Folko Посмотреть сообщение
массивов нет. Есть строка
И то, что строка - это массив символов, уже не важно...

Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
10.11.2013, 19:59     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #12
C++
1
2
3
4
5
6
7
8
for (char* i=str; *i; i++)
  if(*i=='A'){
    char tmp='-';
    for (j=i+1; *j; j++)
      if(tmp!=*j)
        tmp^=*j^=tmp^=*j;//обмен *j и tmp можно заменить на более понятный k=*j; *j=tmp; tmp=k;
    *j++=tmp; *j=0;
  }
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
10.11.2013, 20:01     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #13
Tulosba,

Не по теме:

если начать вертеть слова и понятия, то важно, но если решать задачу, то нет. string str и char a[10] все таки объявляются по разному, поэтому давайте не путать тс'а. Здесь можно обойтись и без массивов, только одной строкой

Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 20:01  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #14
ну так есть добрые люди или нет?? или не остались? притворяемся вопросами?
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
10.11.2013, 20:05     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #15

Не по теме:

Цитата Сообщение от Бауыржан Посмотреть сообщение
Нужна пмщ
Напомнило
http://img2.joyreactor.cc/pics/post/...B0-150132.jpeg

Цитата Сообщение от Бауыржан Посмотреть сообщение
ну так есть добрые люди или нет?? или не остались? притворяемся вопросами?
Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 20:21  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #16

for (char* i=str; *i; i++)
if(*i=='A'){
char tmp='-';
for (j=i+1; *j; j++)
if(tmp!=*j)
tmp^=*j^=tmp^=*j;//обмен *j и tmp можно заменить на более понятный k=*j; *j=tmp; tmp=k;
*j++=tmp; *j=0;
}


а как написать в программу это помоги написать полностью программу )

#include <iostream>
#include <conio.h>
#include <stdio.h>
usnig namespace std;
int main ()
{
int [A] дальше как написать??

Добавлено через 11 минут
Кузя помоги
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
10.11.2013, 20:33     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #17
Бауыржан, вам нужно именно в строку загнать эти дефисы или просто вывести в таком виде предложение?
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 20:36  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #18
нужно чтобы при любом вводе слов с буквами А программа делила эти слова на слоги где буквы А
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
10.11.2013, 20:38     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #19
Бауыржан, вы неправильно поняли вопрос. Перечитайте внимательнее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 20:39     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А
Еще ссылки по теме:

C++ Разбить на слоги каждое четное слово в строке, а каждое нечетное записать в обратном порядке
(Только простой вариант)Дано слово и буква.Сколько раз эта буква встречается в слове C++
Почему Visual Studio показывает ошибку в том месте, где ее нет? C++
Как определить на четном или нечетном месте стоит цифра в числе? C++
Каждая буква входит в слово не менее двух раз C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 151
10.11.2013, 20:39  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #20
в дефисы надо)) сорри что недопонял вопрос,
Yandex
Объявления
10.11.2013, 20:39     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А
Ответ Создать тему
Опции темы

Текущее время: 13:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru