Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
1

Напечатать только те слова, перед которыми в строке находятся только меньшие (по алфавиту) слова

18.12.2011, 18:31. Показов 1411. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, помогите дописать программу, на языке ANSI C.

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

Программа:
Код C



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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2011, 18:31
Ответы с готовыми решениями:

Вывести слова, перед которыми в строке находятся только меньшие (по алфавиту) слова, а за ними только большие
Подскажите пожалуйста, если у меня была строка вроде char str, мне нужно выполнить след задание:...

Найти те слова, перед которыми в последовательности находятся только меньшие по алфавиту слова
Дана не пустая последовательность слов (не более 30), в каждом слове не более 8 строчных латинских...

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

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

1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.12.2011, 18:56 2
То что ты написал — это на ANSI C даже и не смахивает.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SEP ","
 
int main(int argc, char* argv[])
{
    char *first, *middle, *last;
 
    char *dotptr;
    
    if(argc != 2)
    {
    fprintf(stderr, "Usage: %s SENTENCE\n", *argv);
    exit(1);
    }
 
    if((dotptr = strchr(argv[1], '.')) == NULL)
    {
    fprintf(stderr, "`%s': dot character not found\n", argv[1]);
    exit(1);
    }
 
    *dotptr = '\0';
    
    if((first = strtok(argv[1], SEP)) == NULL || (middle = strtok(NULL, SEP)) == NULL)
    {
    fprintf(stderr, "`%s': bad sentence format\n", argv[1]);
    exit(1);
    }
 
    while((last = strtok(NULL, SEP)) != NULL)
    {
    if(strcmp(first, middle) < 0 && strcmp(middle, last) < 0)
        puts(middle);
 
    first = middle;
    middle = last;
    }
 
    exit(0);
}
Использовать так:
Код
[nameless@desktop c]$ ./sample ba,aa,ab,aa,ab,ac,foo,z.
ab
ac
foo
[nameless@desktop c]$
1
18.12.2011, 18:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2011, 18:56
Помогаю со студенческими работами здесь

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

Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие
Помогите написать программу на языке ANSI C или C++ Дана строка s, содержащая от 1 до 30 слов, в...

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

Напечатать те слова, перед которыми в последовательности находятся только меньшие (по алфавиту) слова
Задача, решение в Дельфи используя функции/процедуры. В оооочень короткие сроки(сижу на экзамене)...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru