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

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

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

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

15.03.2010, 17:28. Просмотров 1038. Ответов 13
Метки нет (Все метки)

Пожалуйста, помогите сделать задачу, уже 3ю неделю над ней страдаю!

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

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

C++ Алфавитный порядок - строки
дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры. C++
Строка string и строка char C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н C++
C++ Дана строка символов. Распечатать ее в обратном порядке, сохранив лишь порядок следования цифр
Дана строка символов. Проверьте,является ли данная строка палиндромом C++
Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1234 / 772 / 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
662 / 524 / 44
Регистрация: 05.03.2010
Сообщений: 1,271
15.03.2010, 17:59     Строка, алфавитный порядок #4
ну а как еще должна смотреться функция?)
например пусть принимает сами строки, а возвращает значение true или false, т.е. в алфавитном порядке символы расположены или нет)
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
15.03.2010, 18:02     Строка, алфавитный порядок #5
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
Блин а в функции если? как-то это не смотрится в функции...или слишком черновой вариант.
А самому сделать никак? Тебе же уже все разжевали. Пусть функция возвращает тип bool. В качестве параметра передаешь функции указатель на строку, вместо alph=false и alph=true пишешь, соответственно, return false и return true.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
15.03.2010, 18:36     Строка, алфавитный порядок #10
Все дело в том, что и строка "abcd", и строка "abcz" являются упорядоченными по алфавиту. Но у Вас функция работает только для первого варианта (то есть только тогда, когда каждый следующий символ строки является последующим символом алфавита)

Добавлено через 2 минуты
А так работа функции, безусловно, правильная, и пример довольно интересный, просто мне кажется, что Вы немного не поняли задание
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 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++ Задана строка. Изменить порядок следования символов в 1 и 2 половине строки на обратный
Преобразование строка-число-строка C++
C++ Дана строка. Подсчитать сколько раз первая строка входит во вторую
Строка: Изменить порядок символов в строке на обратный C++
Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы? C++

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

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

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