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

упорядочить слова в четных строках в порядке убывания в них гласных - C++

Восстановить пароль Регистрация
 
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
26.12.2012, 13:01     упорядочить слова в четных строках в порядке убывания в них гласных #1
Доброго времени суток !Помогите пожалуйста советомНе могу реализовать функцию обработки в программе.Очень нужна ваша помощь! .Вот суть задания: вводим число строк, вводим строки, обрабатываем таким образом,чтобы в четных строках слова были сортированы по мере уменьшения в них гласных букв.Слова могут разделяться пробелами и прочими знаками препинания.Вот код (сделана функция ввода/вывода,начата функция обработки текста:все слова строки разделяются по раздельности и считается общее число слов в строке).Заранее искренне благодарен.
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
//---------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#include<string.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
 
 
char** input_text(int);
void output(char**,int);
#pragma argsused
int main(int argc, char* argv[])
{
 int n;
 int fl1=0,fl2=0,z;
 char **text,**newtext={'\0'};
 free(newtext);
 free(text);
 clrscr();
 fflush(stdin);
 puts("Hello let's start");
 do
   {
   puts("Please choose pozition in the menu: ");
   puts("1.Input text") ;
   puts("2.Output text") ;
   puts("3.Confirming the change");
   puts("4.Outout new text");
   puts("5.help");
   puts("6.exit");
   scanf("%d",&z);
   switch(z)
            {
             case 1:
             puts("Please enter how much string do you want: ");
             do
               {
                scanf("%d",&n);
                if ((n<=0)||(n>200)) puts("\nError,please enter n>1 and n<200\n");
               }
               while((n<0)||(n>200));
               puts("\n Okey \n");
 
             fl1=1;
             text=input_text(n);
             break;
             case 2:
             puts("Input text:");
             output(text,n);
             break;
             case 3:
 
             case 5:
             puts ("\n1. Vvodit'sa kol-vo strok,dalee vvodyatsya stroka(i) \n");
             puts ("\n2. Vivodit'sa vvedennbIe stroki\n");
             puts ("\n3. ObrabatbIvautsya stroki\n");
             }
 
 
 
    }
     while(z!=6);
        return 0;
}
//---------------------------------------------------------------------------
 
 
 
void output(char **text,int n)
{
for (int i=0;i<n;i++)
  puts(text[i]);
}
 
 
char** input_text(int n)
  {
  char s[130],**text;
  int i;
 
  text=(char**)malloc(n*sizeof(char*)); //âûäåëåГ*ГЁГҐ ГЇГ*ìÿòè äëÿ ñòðîê
  fflush(stdin);
  for(i=0;i<n;i++)
    {
    printf("------------Enrer text (string %d)------------\n",(i+1));
    gets(s);
    text[i]=(char*)malloc((strlen(s)+1)*sizeof(char)); //âûäåëåГ*ГЁГҐ ГЇГ*ìÿòè äëÿ ñèìâîëîâ ñòðîêè
    strcpy(text[i],s);
    }
  return text;
  }
 
char** obrabotka(char** text,int n)
{
char textdata[130]="\0";
char newdata[130]="\0";
const char znaki[]="-+?,.;;$#@![]{} _";   //массив знаков препинания
char** newtext;
char* data_b;
int nword,a,b,i,end ;
clrscr();
newtext=(char**)malloc(n*sizeof(char*)); //Выделение памяти для обработанной строки
for(i=0;i<n;i++)
   {
    newtext[j]=(char*)malloc(130)*sizeof(char));
   }
for (a=0;a<n;a++);   //распределение слов строки по отдельности
  {
  data_b=text[a];
  strcat(data,data_b);
  pt = strok(data,znaki);
  i=0;
 
  while(pt)                                
      {
       pt1[i]=pt;
       pt=strok(NULL,znaki);
       i++
      }
  nword=i-1;       //подсчет числа слов
 
//Обработка текста...
i=0;
while(i<=nword)
Добавлено через 10 минут
Также написана программа для подсчета гласных в словах строки:
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
#include "conio.h"
#include "stdlib.h"
 
 
void s_free(char* s)
{
 free(s);
}
 
int strlen(char* str)
{
 int len = 0;
 while(*str != '\0')
     {
      len++;
      str++;
     }
 return len;
}
 
void strcpy(char* s, char* str)
{
 int len = strlen(str);
 for(int i=0; i <= len; i++)
   {
    *(s +i) = *(str+i);
   }
}
 
char* s_malloc(char* str)
   {
    char* s = (char*)(malloc((strlen(str)+1) * sizeof(char)));
    return s;
   }
 
bool is_punct(char c)
   {
    bool b = false;
    char punct_arr[] = {"!@#$%^&*()-=_+ {}[]|\/?,.:;"};
    char* p = punct_arr;
    while (*p != '\0')
        {
         if (c == *p)
         b = true;
         p++;
        }
    return b;
   }
 
bool glass(char c)
{
 bool b = false;
 char glass_arr[] = {"aeoiuyAEOUIY"};
 сhar* p = glass_arr;
 while (*p != '\0')
     {
      if (c == *p)
      b = true;
      p++;
     }
 return b;
}
 
void search(char* s)
{
 int k,i=1;
 while (*s)
     {
      while (is_punct(*s))
      s++;
      k = 0;
      while(*s!= '\0' && !is_punct(*s))
          {
           if (glass(*s))
           k++;
           s++;
          }
      printf("%d word %d\n",i, k);
      i++;
     }
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 char str[81];
 char c;
 char* s = NULL;
 do
   {
    system("cls");
    fflush(stdin);
    printf("Write string : ");
    gets(str);
 
    if (s)
    s_free(s);
    s = s_malloc(str);
    strcpy(s, str);
    //вывод исходной строки
   if (*s == NULL)
   printf("There is no element in the string\n");
   else
      {
       search(s);
      }
   printf("Do you want to continue?(y/n)\n");
   scanf("%c", &c);
  }
while(c == 'y');
getch();
s_free(s);
return 0;
}
Добавлено через 10 часов 46 минут
Вверх!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 13:01     упорядочить слова в четных строках в порядке убывания в них гласных
Посмотрите здесь:

Упорядочить цифры в порядке возрастания/убывания C++
C++ Упорядочить сведения о женщинах в порядке убывания их возраста
Упорядочить строки матриц в порядке убывания наибольших элементов строк C++
C++ Вывести слова строки в порядке убывания числа букв в них
C++ 23. Упорядочить данные в порядке убывания значений рабочего стажа. (C++)
C++ Упорядочить массив в порядке убывания суммы цифр элементов
Переставить слова в строке в порядке убывания количества цифр в них C++
C++ Упорядочить элементы массивов в порядке убывания целой части STL

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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