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

[C++] Дана строка. расположить в ней слова в алфавитном порядке. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.83
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 13:13     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #1
Нужно написать программу на С++. Дана строка. расположить в ней слова в алфавитном порядке.

1.С использованием указателей.
2.С использованием файлов и указателей.

Пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2012, 13:13     [C++] Дана строка. расположить в ней слова в алфавитном порядке.
Посмотрите здесь:

Дана последовательность, содержащая 30 слов. Вывести эти слова в алфавитном порядке C++
Дана строка. Вывести слова в порядке их уменьшения C++
Дана строка символов. Расставить введенные латинские символы в алфавитном порядке. C++
дана строка. найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой C++
Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 13:41     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #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
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
 
std::vector<std::string> strtok(const std::string , const std::string );
 
int main()
{
   std::string s(",Hello  world,!A! B!   ");
   std::string d (" ,.!");
   std::vector<std::string> v;
   
   v = strtok (s, d);
   std::sort(v.begin(), v.end());
   std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, " "));
 
   return 0;
}
 
std::vector<std::string> strtok(const std::string s, const std::string DELIM)
{
   std::vector<std::string> v;
   std::string tmp;
   size_t l, r;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l) ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l) )
      v.push_back(s.substr(l, r - l));
   return v;
}
http://liveworkspace.org/code/a72ae3...6b7738f51926b0
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
19.01.2012, 14:14     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #3
Если не учитывать знаки препинания, то можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
 
int main()
{
    std::vector <std::string> vec(std::istream_iterator <std::string> (std::cin), std::istream_iterator <std::string> ());
    std::sort(vec.begin(), vec.end());
    std::copy(vec.begin(), vec.end(), std::ostream_iterator <std::string> (std::cout, "\n"));
    system("pause");
    return 0;
}
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 16:09  [ТС]     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #4
На лекциях такого не было, а как-нибудь проще её можно решить?( больше действий, но простые функции...). Спасибо за это решение.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 17:35     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #5
Цитата Сообщение от Виль Посмотреть сообщение
На лекциях такого не было,
Может такое было?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <iterator>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>
 
 
int main()
{
   std::string s("Hello world A B");
   std::vector<std::string> v;
   
   boost::split(v, s, boost::is_any_of(" \t\n"));
   std::sort(v.begin(), v.end());
   std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
 
   return 0;
}
http://liveworkspace.org/code/78ba0c...e131713f9b9462
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 18:07  [ТС]     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #6
Вроде тоже нет...
Должны использоваться
C++
1
2
3
4
#include <iostream.h>
#include <string.h>
#include <conio.j>
#include <stdio.h>
вроде это должно о чем-то говорить))))

а вот
C++
1
2
3
4
5
#include <algorithm>
#include <vector>
#include <iterator>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>
они точно не используются...

да и нужно 2 программы
1.С использованием указателей.
2.С использованием файлов и указателей.
go
19.01.2012, 18:40
  #7

Не по теме:



Цитата Сообщение от Виль Посмотреть сообщение
#include <iostream.h>
#include <string.h>
#include <conio.j>
#include <stdio.h>
Немного не стандартные вещи для С++. Может на Си написать?

Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 18:44  [ТС]     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #8
Ну вот смотри, пример, как мы пишем программы:
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
#include<fstream.h>
#include<iostream.h>
#include<conio.h>
main()
{
int i,j,n,m,min,max,*a;
clrscr();
cout<<"vvoditsiy poryadok\n";
cin>>n;
cout<<"vvoditsya poryadok\n";
cin>>m;
a=new int[m*n];
cout<<"vvod elementov\n";
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
cin>>*(a+i*m+j);
min=*a;
max=*a;
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    if ((*(a+i*m+j)%2)==0) if (max<*(a+i*m+j)) max=*(a+i*m+j);
      else if (min>*(a+i*m+j)) min=*(a+i*m+j);
cout<<"max kratnoe";
cout<<max<<"\n";
cout<<"min nekratnoe";
cout<<min<<"\n";
getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 18:46     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #9
Цитата Сообщение от Виль Посмотреть сообщение
Ну вот смотри, пример, как мы пишем программы:
Говно-коды Вы пишете, а не программы. За Вас писать в вашем "стиле" здесь никто не будет, если есть вопросы - спрашивайте.
Вообще где ваши наработки???
Nicky
3 / 3 / 0
Регистрация: 21.12.2011
Сообщений: 10
19.01.2012, 20:08     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #10
go,

Говно-коды Вы пишете, а не программы. За Вас писать в вашем "стиле" здесь никто не будет, если есть вопросы - спрашивайте.
Вообще где ваши наработки???
Никакого г-кода они не пишут: они *учатся* и пишут так, как учат их их, по всей видимости, "довиндовые" преподы (зы: conio.h).


А вот насчет

Вообще где ваши наработки???
- совершенно согласен. Виль, было бы неплохо, если бы Вы приложили хотя бы минимальные *собственные* усилия.
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 20:16  [ТС]     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #11
Да, преподаватель на самом деле не молодой и учит, видимо, по своей методике. Дело в том, что подобных программ у нас не было, по этому я даже малейшего понятия не имею, как её можно написать. Все, что мне до этого отправляли, я встречал в интернете, пытаясь понять, как программу выполнить, но ничего так и не понял, к сожаленияю.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.01.2012, 01:56     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #12
Виль, на таком С++ уныло что-либо писать. Вот на С
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct NODE {
    char * word;
    int count;
    struct NODE * left;
    struct NODE * right;
} node_t;
 
int add_word(node_t ** t, const char * w){
    if ( ! *t ){
        if ( ! ( *t = (node_t*)malloc(sizeof(node_t)) ) )
            return -1;
        if ( ! ( (*t)->word = strdup(w) ) ){
            free(*t);
            return -1;
        }
        (*t)->count = 1;
        (*t)->left = NULL;
        (*t)->right = NULL;
        
        return 0;
    }
    else {
        int cmp = strcmp((*t)->word, w);
        if ( cmp > 0 )
            return add_word(&(*t)->left, w);
        else if ( cmp < 0 )
            return add_word(&(*t)->right, w);
        else {
            (*t)->count += 1;
            return 0;
        }
    }
}
 
void del_words(node_t ** t){
    if ( *t ){
        del_words(&(*t)->left);
        del_words(&(*t)->right);
        free((*t)->word);
        free(*t);
        *t = NULL;
    }
}
 
void print_words(const node_t * t){
    if ( t ){
        int i;
        print_words(t->left);
        for ( i = 0; i < t->count; ++i )
            printf("%s ", t->word);
        print_words(t->right);
    }
}
 
#define DELIM " .,!?-\t\n"
 
int main(void){
    char buf[BUFSIZ], * p;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        node_t * tree = NULL;
        
        for ( p = strtok(buf, DELIM); p != NULL; p = strtok(NULL, DELIM) ){
            if ( add_word(&tree, p) ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
            }
        }
        
        printf("Sorted: ");
        print_words(tree);
        printf("\n");
        del_words(&tree);
    }
    
    return 0;
}
[C++] Дана строка. расположить в ней слова в алфавитном порядке.

В принципе здесь можно было бы обойтись и без копирования слов, но так дерево универсальнее...
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
20.01.2012, 02:16     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #13
Цитата Сообщение от Nicky Посмотреть сообщение
(зы: conio.h)
не гони на него :)
!!11
6 / 1 / 2
Регистрация: 20.01.2012
Сообщений: 9
20.01.2012, 03:18     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #14
а я printf() писал.. Си..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 10:31     [C++] Дана строка. расположить в ней слова в алфавитном порядке.
Еще ссылки по теме:

C++ Дана строка, Вывести на экран эти слова в порядке алфавита
Дана строка. Найте в ней те слова, которые начинаются и оканчиваются одной и той же буквой C++
C++ Расположить слова в алфавитном порядке

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

Или воспользуйтесь поиском по форуму:
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
20.01.2012, 10:31  [ТС]     [C++] Дана строка. расположить в ней слова в алфавитном порядке. #15
Вот так я начал её делать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
main ()
{
char *str1,str2;
int i,j,k;
clrscr();
cout<<"vvod stroki";
gets(str1);
k=strlen(str1);
j=0;
i=0;
str2=new char[k];
for(i=0;i<k;i++);
а вот как написать условия, что бы получилось по алфовиту, я не знаю((

И концовочка...

C++
1
2
3
4
5
6
7
*(str2+j)=' ';
j++;
}
*(str2+j)='\0';
puts(str2);
getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!
Yandex
Объявления
20.01.2012, 10:31     [C++] Дана строка. расположить в ней слова в алфавитном порядке.
Ответ Создать тему
Опции темы

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