Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Alias332
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
1

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

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

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

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

Выдать на печать те слова , перед которыми находятся слова только меньшие по (алфавиту} , а за ними только большие
6) Выдать на печать те слова , перед которыми находятся слова только меньшие по...

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

Даны два слова, напечатать только те символы, которые встречаются только в одном из слов
помогите, пожалуйста, с программой:) Писать ее не нужно, просто нужно помочь...

Даны два слова. Напечатать только те буквы слов, которые есть только в одном из них
2.Даны два слова. Напечатать только те буквы слов, которые есть только в одном ...

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

6
talis
793 / 545 / 61
Регистрация: 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;
}
0
lemegeton
2933 / 1362 / 467
Регистрация: 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;
}
1
Alias332
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
04.12.2011, 23:04  [ТС] 4
А можно эту же программу, но только с библиотекой String.h??))
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
06.12.2011, 21:59 5
Не имеет смысла. Не вижу, чем оттуда можно воспользоваться в решении данной задачи. Если есть предложения, то могу попробовать.
0
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;
}
0
КонецСвета
13.01.2013, 21:55     Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие
  #7
 Комментарий модератора 
кросспост Напечатать только те слова, перед которыми в строке находятся только меньшие (по алфавиту) слова
тема закрыта
0
13.01.2013, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 21:55
Привет! Вот еще темы с ответами:

Удалить из строки только те слова, которые состоят только из латинских букв
Надо удалить из строки только те слова, которые состоят только из латинских...

Напечатать слова, состоящие только из слогов
Дана последовательность слов в виде текстовой строки. Слова в...

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


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

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

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