Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Если кто поможет, спасибо заранее!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 17:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Строка, алфавитный порядок (C++):

Алфавитный порядок - строки - C++
Помогите пожалуйста решить задачу: Описать функцию Sort(A), которая принимает в виде параметра строку A, состоящую из трёх слов, в каждом...

Строка: Изменить порядок символов в строке на обратный - C++
Напишите программу, которая изменяет порядок символов в строке на обратный. Использование функции strlen() из библиотеки string.c...

Задана строка. Изменить порядок следования символов в 1 и 2 половине строки на обратный - C++
Всем доброго времени суток! Работать со строками крайне не умею, а сдать нужно. Надеюсь, что поможете. То есть, я понимаю это как...

Дана строка символов. Распечатать ее в обратном порядке, сохранив лишь порядок следования цифр - C++
помогите плиз решить задачу по с++. 9. Дана строка символов. Распечатать ее в обратном порядке, сохранив лишь порядок следования цифр...

Порядок отрицательных членов изменить на обратный, порядок неотрицательных сохранить - C++
Задача (нужно все 3 пункта в 1 программе сделать) Прошу Помочь В условиях задания 3 а) порядок отрицательных членов изменить на...

Дана строка. Подсчитать сколько раз первая строка входит во вторую - C++
Дана строка. Подсчитать сколько раз первая строка входит во вторую. Например: вводим "при" (строка должна вводиться с клавиатуры, как на...

13
Genius Ignat
1241 / 779 / 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 не упорядочен.
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 17:54  [ТС] #3
Блин а в функции если? как-то это не смотрится в функции...или слишком черновой вариант.
0
Vorona
Peace 2 all shining faces
671 / 533 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
15.03.2010, 17:59 #4
ну а как еще должна смотреться функция?)
например пусть принимает сами строки, а возвращает значение true или false, т.е. в алфавитном порядке символы расположены или нет)
0
Nameless One
Эксперт С++
5781 / 3430 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
15.03.2010, 18:02 #5
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
Блин а в функции если? как-то это не смотрится в функции...или слишком черновой вариант.
А самому сделать никак? Тебе же уже все разжевали. Пусть функция возвращает тип bool. В качестве параметра передаешь функции указатель на строку, вместо alph=false и alph=true пишешь, соответственно, return false и return true.
0
ISergey
Maniac
Эксперт С++
1400 / 911 / 56
Регистрация: 02.01.2009
Сообщений: 2,720
Записей в блоге: 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
0
Nameless One
Эксперт С++
5781 / 3430 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
15.03.2010, 18:14 #7
ISergey, ошибочка...
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 18:14  [ТС] #8
ISergey, спасибо большое! а как на Си записать?
0
ISergey
Maniac
Эксперт С++
1400 / 911 / 56
Регистрация: 02.01.2009
Сообщений: 2,720
Записей в блоге: 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
0
Nameless One
Эксперт С++
5781 / 3430 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
15.03.2010, 18:36 #10
Все дело в том, что и строка "abcd", и строка "abcz" являются упорядоченными по алфавиту. Но у Вас функция работает только для первого варианта (то есть только тогда, когда каждый следующий символ строки является последующим символом алфавита)

Добавлено через 2 минуты
А так работа функции, безусловно, правильная, и пример довольно интересный, просто мне кажется, что Вы немного не поняли задание
0
easybudda
Модератор
Эксперт CЭксперт С++
9958 / 5881 / 993
Регистрация: 25.07.2009
Сообщений: 11,118
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);
}
1
ISergey
Maniac
Эксперт С++
1400 / 911 / 56
Регистрация: 02.01.2009
Сообщений: 2,720
Записей в блоге: 1
15.03.2010, 19:10 #12
Цитата Сообщение от Nameless One Посмотреть сообщение
Все дело в том, что и строка "abcd", и строка "abcz" являются упорядоченными по алфавиту. Но у Вас функция работает только для первого варианта (то есть только тогда, когда каждый следующий символ строки является последующим символом алфавита)
Понял.. Спасибо за замечание..
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.03.2010, 19:15  [ТС] #13
easybudda, спасибо будда!) вы как всегда кстати!) а не могли бы вы мне расписать код? fgets,str, BUFSIZ, stdin вот это не понятно.
0
easybudda
Модератор
Эксперт CЭксперт С++
9958 / 5881 / 993
Регистрация: 25.07.2009
Сообщений: 11,118
15.03.2010, 19:35 #14
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
fgets,str, BUFSIZ, stdin
fgets - функция, читающая строку из файла.
str[BUFSIZ] - массив символов размером BUFSIZ (константа, определённая в stdio, достаточная для того, чтобы быть размером строки)
stdin - стандартный файл ввода.
1
15.03.2010, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2010, 19:35
Привет! Вот еще темы с ответами:

Дана строка символов. Проверьте,является ли данная строка палиндромом - C++
Парни нужна помощь,нужен код решения этой задачи на языке с++. Дана строка символов. Проверьте,является ли данная строка палиндромом.

Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы? - C++
Есть две строки. MSK=&quot;Москва&quot; и from, считанная из текстовика, через getline Для проверки вывожу эти обе строки, на первый взгляд...

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры. - C++
Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка...

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н - C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо...


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

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

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