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

Строка, алфавитный порядок - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 17:28     Строка, алфавитный порядок #1
Пожалуйста, помогите сделать задачу, уже 3ю неделю над ней страдаю!

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

Если кто поможет, спасибо заранее!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 17:28     Строка, алфавитный порядок
Посмотрите здесь:

C++ Алфавитный порядок - строки
дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры. C++
строка string и строка char C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н C++
C++ Дана строка символов. Распечатать ее в обратном порядке, сохранив лишь порядок следования цифр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 17:49     Строка, алфавитный порядок #2
Псевдокод.
Попарно в цикле сравниваешь элементы строки:str[i] и str[i+1];
bool alph = true;
for(i=0;i<длинны строки;i++)if(str[i]>str[i+1]){aplh = false;}
//После выхода из цикла
проверяешь
if(aplh){ массив упорядочен }
else не упорядочен.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 17:54  [ТС]     Строка, алфавитный порядок #3
Блин а в функции если? как-то это не смотрится в функции...или слишком черновой вариант.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
15.03.2010, 17:59     Строка, алфавитный порядок #4
ну а как еще должна смотреться функция?)
например пусть принимает сами строки, а возвращает значение true или false, т.е. в алфавитном порядке символы расположены или нет)
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
15.03.2010, 18:02     Строка, алфавитный порядок #5
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
Блин а в функции если? как-то это не смотрится в функции...или слишком черновой вариант.
А самому сделать никак? Тебе же уже все разжевали. Пусть функция возвращает тип bool. В качестве параметра передаешь функции указатель на строку, вместо alph=false и alph=true пишешь, соответственно, return false и return true.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
15.03.2010, 18:08     Строка, алфавитный порядок #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
bool func_(const char *beg){
    char id = *beg;
    for( ; *beg ; ++beg, ++id)
        if(*beg != id) return false;
    return true;
}
 
int main(){
    const char *s1 = "abcd";
    const char *s2 = "adbc";
 
    if(func_(s1)) std::cout << "Ok...\n";
    if(func_(s2)) std::cout << "Error func_...\n";
 
    return 0;
}
http://codepad.org/n1VgbBJ2
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
15.03.2010, 18:14     Строка, алфавитный порядок #7
ISergey, ошибочка...
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 18:14  [ТС]     Строка, алфавитный порядок #8
ISergey, спасибо большое! а как на Си записать?
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
15.03.2010, 18:30     Строка, алфавитный порядок #9
Nameless One, и в чем она заключается?.. Работа функции правильная..
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
ISergey, спасибо большое! а как на Си записать?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int func(char *beg){
    char id = *beg;
    for( ; *beg ; ++beg, ++id)
        if(*beg != id) return 0;
    return 1;
}
 
int main(){
    char *s1 = "abcd";
 
    printf("%s", (func(s1)? "Ok...\n" : "Error func_...\n")) ;
    
 
    return 0;
}
http://codepad.org/x5lxsyRC
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
15.03.2010, 18:36     Строка, алфавитный порядок #10
Все дело в том, что и строка "abcd", и строка "abcz" являются упорядоченными по алфавиту. Но у Вас функция работает только для первого варианта (то есть только тогда, когда каждый следующий символ строки является последующим символом алфавита)

Добавлено через 2 минуты
А так работа функции, безусловно, правильная, и пример довольно интересный, просто мне кажется, что Вы немного не поняли задание
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.03.2010, 18:56     Строка, алфавитный порядок #11
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
/*
*   Написать и протестировать функцию, которая определяет, располагаются ли буквы в заданной символьной строке 
*   в алфавитном порядке.
*/
 
/* возвращает 0, если буквы в алфавитном порядке */
int testStr(const char *s){
    const char *p;
    if ( !s || !*s )
        return EOF;
    for ( p = s + 1; *p && *p > *(p - 1); ++p )
        ;
    return *p;
}
 
int main(void){
    char str[BUFSIZ], *p;
    
    while ( 1 ){
        printf("String: ");
        if ( !fgets(str, BUFSIZ, stdin) )
            exit(1);
        if ( p = strrchr(str, '\n') )
            *p = '\0';
        if ( !*str )
            break;
        printf("%salphabetical sorted string.\n", ( testStr(str) ) ? "No, is not " : "Yes, it is ");
    }
    
    exit(0);
}
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
15.03.2010, 19:10     Строка, алфавитный порядок #12
Цитата Сообщение от Nameless One Посмотреть сообщение
Все дело в том, что и строка "abcd", и строка "abcz" являются упорядоченными по алфавиту. Но у Вас функция работает только для первого варианта (то есть только тогда, когда каждый следующий символ строки является последующим символом алфавита)
Понял.. Спасибо за замечание..
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 19:15  [ТС]     Строка, алфавитный порядок #13
easybudda, спасибо будда!) вы как всегда кстати!) а не могли бы вы мне расписать код? fgets,str, BUFSIZ, stdin вот это не понятно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2010, 19:35     Строка, алфавитный порядок
Еще ссылки по теме:

Дана строка символов. Проверьте,является ли данная строка палиндромом C++
Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 C++
C++ Задана строка. Изменить порядок следования символов в 1 и 2 половине строки на обратный

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.03.2010, 19:35     Строка, алфавитный порядок #14
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
fgets,str, BUFSIZ, stdin
fgets - функция, читающая строку из файла.
str[BUFSIZ] - массив символов размером BUFSIZ (константа, определённая в stdio, достаточная для того, чтобы быть размером строки)
stdin - стандартный файл ввода.
Yandex
Объявления
15.03.2010, 19:35     Строка, алфавитный порядок
Ответ Создать тему
Опции темы

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