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

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

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

Доделать и исправить. Дано слово из 12 букв. Поменять местами его трети: первую треть разместить на месте третьей, вторую на месте первой и 3 на 2 C++
C++ Узнать что стоит на определённом месте (0 или 1)
C++ На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы
Разбить введенное слово на слоги 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
Сообщений: 147
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
Сообщений: 147
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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
10.11.2013, 19:51     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #8

Не по теме:

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



Добавлено через 44 секунды
Цитата Сообщение от Бауыржан Посмотреть сообщение
например к слову КАЗАХСТАН
а слово в каком типе данных представлено?
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 147
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
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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
Сообщений: 147
10.11.2013, 20:01  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #14
ну так есть добрые люди или нет?? или не остались? притворяемся вопросами?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2013, 20:05     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #15

Не по теме:

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

Цитата Сообщение от Бауыржан Посмотреть сообщение
ну так есть добрые люди или нет?? или не остались? притворяемся вопросами?
Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А
Бауыржан
 Аватар для Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 147
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
Сообщений: 147
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++

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

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

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