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

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

Войти
Регистрация
Восстановить пароль
 
Alias332
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
#1

Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие - C++

27.11.2011, 18:34. Просмотров 724. Ответов 6
Метки нет (Все метки)

Помогите написать программу на языке ANSI C или C++

Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5
строчных латинских букв. Между соседними словами стоит запятая, за
последним словом - точка. Напечатать только те слова, перед которыми в
строке находятся только меньшие (по алфавиту) слова, а за ними - только
большие.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 18:34     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие
Посмотрите здесь:

Напечатать только те слова, перед которыми в строке находятся только меньшие (по алфавиту) слова - C++
Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв. Между соседними словами стоит запятая,...

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

Слова, состоящие только из гласных или только из согласных латинских букв - C++
Разработать алгоритм и программу. Вводится тест из заглавных и строчных латинских букв, пробелов. Количество символов в тексте не должно...

Напечатать слова, состоящие только из слогов - C++
Дана последовательность слов в виде текстовой строки. Слова в последовательности разделены символами-разделителями: “ .,;:\n\t!?”. В состав...

Напечатать все слова, состоящие только из цифр - C++
напечатать все слова , состоящие только из цифр

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.11.2011, 18:59     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие #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
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
 
int main( )
{
    std::vector< std::string > words;
 
    std::istream_iterator< std::string > it ( std::cin );
 
    for( ; it != std::istream_iterator< std::string >( ) &&
         (*it)[ it->length() - 1 ] != '.';
         it++ )
         {
             words.push_back( *it );
 
             size_t comma_pos = words[ words.size() - 1].find_last_not_of( ',' ) + 1;
             words[ words.size() - 1 ].erase( comma_pos, words[ words.size() - 1 ].length() - comma_pos );
         }
 
    words.push_back( *it );
    size_t comma_pos = words[ words.size() - 1].find_last_not_of( '.' ) + 1;
    words[ words.size() - 1 ].erase( comma_pos, words[ words.size() - 1 ].length() - comma_pos );
 
    if( words.size() < 1 )
        return 0;
 
    for( size_t i = 0; i < words.size(); i++ )
    {
        if( ( i == 0 || words[i] > words[i - 1] ) &&
            ( i == words.size() - 1 || words[i] < words[i + 1] ) )
            std::cout << words[i] << "; ";
    }
 
    return 0;
}
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
04.12.2011, 22:40     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие #3
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
#include <stdio.h>
 
char *nextWord(char *start) {
  for (; *start != ',' && *start != '.'; ++start);
  return ++start;
}
 
void printWord(char *word) {
  while (*word != ',' && *word != '.')
    printf("%c", *word++);
  printf("\n");
}
 
int compareWords(char *a, char *b) {
  while (*a != ',' && *a != '.' && *b != ',' && *b != '.') {
    if (*a != *b)
      return *a - *b;
    ++a; ++b;
  }
  return 0;
}
 
void printOrdered(char *source) {
  char *prev = source;
  char *curr = nextWord(prev);
  char *next = nextWord(curr);
  while (*next != '\0') {
    if (compareWords(prev, curr) < 0 && compareWords(curr, next))
      printWord(next);
    prev = curr;
    curr = next;
    next = nextWord(next);
  }
}
 
int main(int argc, char *argv[]) {
  printOrdered("boat,child,cort,yacht,store,bold,star,zero.");
  return 0;
}
Alias332
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
04.12.2011, 23:04  [ТС]     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие #4
А можно эту же программу, но только с библиотекой String.h??))
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
06.12.2011, 21:59     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие #5
Не имеет смысла. Не вижу, чем оттуда можно воспользоваться в решении данной задачи. Если есть предложения, то могу попробовать.
Alias332
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
14.12.2011, 00:03  [ТС]     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие #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
// 4.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL,"rus");
    
    char a[6], b[180], c[5]=",",*v, *token,*c1=0,*c2=0,*c3=0;
    int i, k,n,z=0,d1, d2;
 
    
 
 
    gets_s(a);
    strcpy_s(b,a);
    for(i=0;i<4 ;i++)//i<4 - это что бы проверка программы была быстрее, не приходилось печатать 30 слов//
    {
        
        strcat(b,c);
        gets_s(a);
        strcat(b,a);
        
        n=strlen(b);
        for(k=0;k<n;k++)
        
            if (b[k]=='.')
                 
                i=4;
             
    }
 
    
printf("%s\n",b);
 
    
 
    
    token=strtok(b,c);
    while(token!=NULL)//где-то здесь проблемма находится//
    {
        if(z>=3)
        {
            d1=strcmp(c1,c2);
            d2=strcmp(c2,c3);
            if(d1<0&&d2>0)
            {
                printf("%s%s",c2,c);
            }
 
        }
        else
        {
            strcpy(c3,c2);
            strcpy(c2,c1);
            strcpy(c1,token);
            z++;
        }
        token=strtok(NULL,c);
    }
    return 0;
}
КонецСвета
13.01.2013, 21:55     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие
  #7
 Комментарий модератора 
кросспост Напечатать только те слова, перед которыми в строке находятся только меньшие (по алфавиту) слова
тема закрыта
Yandex
Объявления
13.01.2013, 21:55     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие
Закрытая тема Создать тему
Опции темы

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