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

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

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

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

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

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

Почему Visual Studio показывает ошибку в том месте, где ее нет? - C++
Почему Visual Studio показывает ошибку в том месте, где ее нет?

Выполнить кольцевой сдвиг элементов массива так чтобы его первый максимальный элемент оказался на k-том месте - C++
Дан одномерный массив размерность n и число k. Если в исходном массиве чисел больше, чем k, то в массиве выполнить кольцевой сдвиг...

Разбить введенное слово на слоги - C++
Разбить введенное слово на слоги так, чтобы в первом слогу было больше чем одна буква и оканчивалась на гласную, а второй слог содержал...

Доделать и исправить. Дано слово из 12 букв. Поменять местами его трети: первую треть разместить на месте третьей, вторую на месте первой и 3 на 2 - C++
#include<stdio.h> #include<iostream.h> int main(void) { int i,j; char slovo; for(i=0;i<4;i++) { for(j=0;j<3;j++) ...

(Только простой вариант)Дано слово и буква.Сколько раз эта буква встречается в слове - C++
Дано слово и буква.Сколько раз эта буква встречается в слове.

Узнать что стоит на определённом месте (0 или 1) - C++
Уважаемые программисты! Помогите исправить код или решить задачу. Представим себе бесконечную последовательность цифр, составленную из...

Определить, какая цифра стоит на заданном месте в последовательности - C++
всем вечер добрый. интересует алгоритм решения к двум задачам. честно говоря, довольно долго думал, но ничего дельного я не придумал. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Сообщений: 161
10.11.2013, 19:39  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #4
по ходу тут есть массивы в построений программы или же всё таки нет?

Добавлено через 1 минуту
Tulosba помоги в построений программы я новичок каак написать?? чтобы с++ делила слово на слоги в том месте где стоит буква А, например к слову КАЗАХСТАН, отсюда чтобы с++ должна была написать КА-ЗА-ХСТА-Н любые введённые слова чтобы делила где А
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.11.2013, 19:42     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #5
Цитата Сообщение от Бауыржан Посмотреть сообщение
Нужна пмщ
Может пмж?
Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 161
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
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.11.2013, 19:45     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #7
Цитата Сообщение от Tulosba Посмотреть сообщение
массивов нет?
А ничего, что строчный тип - совершенно особый тип скалярного массива.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.11.2013, 19:51     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #8

Не по теме:

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



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

Не по теме:

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

Цитата Сообщение от Бауыржан Посмотреть сообщение
ну так есть добрые люди или нет?? или не остались? притворяемся вопросами?
Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А
Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 161
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
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
10.11.2013, 20:33     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #17
Бауыржан, вам нужно именно в строку загнать эти дефисы или просто вывести в таком виде предложение?
Бауыржан
-18 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 161
10.11.2013, 20:36  [ТС]     Массивы! чтобы с++ делила слово на слоги в том месте где стоит буква А #18
нужно чтобы при любом вводе слов с буквами А программа делила эти слова на слоги где буквы А
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++
Как определить на четном или нечетном месте стоит цифра в числе? Не могу понять как определить это, если убирать по одной цифре в конце в...

Turbo Pascal -> C++ (подсчет суммы мест, на которых в словах текста стоит заданная буква) - C++
Задание. Написать программу для подсчета суммы мест, на которых в словах текста стоит заданная буква. program zadacha5; Var s, c:...

Каждая буква входит в слово не менее двух раз - C++
Используя класс string, решить задание: Дана строка. Между соседними словами - не менее одного пробела, за последним словом – точка....

Каждая буква входит в слово не менее двух раз (на си) - C++
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Напечатать все слова, которые удовлетворяют следующему...

Найти самое длинное слово среди слов, вторая буква которых 'E' - C++
Дан символьный файл(имя вводится с клавиатуры). Найти самое длинное слово среди слов, вторая буква которых есть 'E'.Если слов с...


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

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

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