Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
TheWitcher
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
#1

Вывести на экран слова текста в порядке, соответствующем латинскому алфавиту - C++

29.11.2011, 02:11. Просмотров 2350. Ответов 2
Метки нет (Все метки)

Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран слова этого текста в порядке, соответствующем латинскому алфавиту.

Как вывести в латинском алфавите не знаю, помогите пожалуйста желательно с объяснением.


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
#include <stdio.h>
#include <string.h>
int main()
{
char st[100], sl[100];
int k=0, i;
 gets(st);
 strcat(st," ");
  int n=strlen(st);
       
        if (n<2) return 1;
    
   sl[0]='\0';
   for (i=0; i<n; i++)
       if (st[i] != ' ') 
       {
           sl[k]=st[i];
           sl[k+1]='\0';
           k++;
       }
       else
       {
           puts(sl);
           sl[0]='\0'; 
           k=0;    
       }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 02:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран слова текста в порядке, соответствующем латинскому алфавиту (C++):

Вывести слова в порядке, соответствующем латинскому алфавиту - C++
Дана строка символов, состоящих из произвольного текста на английском языке, слова разделены пробелом. Вывести на экран слова этого текста...

Вывести на экран слова текста в порядке невозрастания их длины - C++
Из произвольного текста, содержащего не более 10 строк, в каждой строке не более 80 символов, вывести на экран слова в порядке не...

Вывести на экран слова заданного текста в алфавитном порядке - C++
Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран слова этого текста...

Вывести слова текста в алфавитном порядке и посчитать их количество - C++
1. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран слова этого...

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

Дана строка, Вывести на экран эти слова в порядке алфавита - C++
Дана строка, состоящая из слов на английском языке, разделенных пробелами. Вывести на экран эти слова в порядке алфавита Вроде делаю...

2
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.11.2011, 03:48 #2
TheWitcher, вот вариант.
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
/* здесь всё просто ищем начинающее слова на символ в алфавитном порядке
    если находим копируем слово в выходной буфер с удалением её из строки */
char*  get_word_asc(char* dst, char* src, int* pos) {
   int  id, cnt;
   char* ptr, *tmp, *str;
   char  chs[3] = {'\0'};
prev:
   tmp = str = src;
   chs[0] = *pos + 'A';
   chs[1] = *pos + 'a';
 
   while(1) {
         if((str = strpbrk(str, chs)) == NULL) { 
              if( ++(*pos) < 26 )  
                   goto prev;   
              else
                   break;
         } 
         id = 1;
         if((str - tmp) > 0) 
               id = ! isalpha(*(str - 1));
         for(ptr = str + 1; isalpha(*ptr) && *ptr; *ptr++);
 
         if(id && ! isalpha( *ptr )) {
              cnt = ptr - str;
              strncpy(dst, str, cnt);
              strcpy(str, str + cnt);
             *((dst) + cnt) = '\0';
             break;
         } else
             str = ptr;
   } 
   return (str) ? tmp : NULL;
}
 
int main(void) {
  char* ptr, buf[32];
  int i = 0;
  // этот текст для примера
  char  str[] = "Calling User Functions. (#ZEX) You can call user functions from your own "\
               "modules, which is very handy when implementing callbacks; for example"\
               ", for array walking, searching, or simply for event-based programs";
 
  for(ptr = str; (ptr = get_word_asc(buf, ptr, &i)) != NULL;) 
      puts(buf);
 
  getchar();
  return 0;
}
1
TheWitcher
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
29.11.2011, 16:35  [ТС] #3
Спасибо большое, подскажите только, что означает prev: ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 16:35
Привет! Вот еще темы с ответами:

Дан текст, вывести на экран слова в порядке уменьшения их длины! - C++
Дан одномерный Массив написать программу преобразования массива путём сдвига их значений! Добавлено через 1 минуту С++ Робота со...

Определить, какие слова из текста имеют длину от 1 до 10, и вывести их в порядке возрастания длины - C++
Определить сколько слов текста имеют длину 1, 2, 3, ... 10 символов. Вывести эти слова в последовательности возрастания их длины.

Считать текст из файла и вывести на экран слова из него в алфаыитном порядке - C++
Здравствуйте. Помогите пожалуйста с решением одной задачи. Необходимо считать текст из файла и вывести на экран слова из него в...

Вывести на экран слова текста, начинающиеся с гласных букв - C++
написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся с гласных букв и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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