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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.83
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
#1

Расположить в заданной строке слова в алфавитном порядке - C++

19.01.2012, 13:13. Просмотров 4967. Ответов 14
Метки нет (Все метки)

Нужно написать программу на С++. Дана строка. расположить в ней слова в алфавитном порядке.

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

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

В заданной строке найти и упорядочить в алфавитном порядке слова, начинающиеся с прописной буквы - C++
Здравствуйте,помогите,пожалуйста,разобраться.Необходимо вывести в алфавитном порядке слова, начинающиеся с прописных букв for (int i = 0;...

Расположить слова в массиве символов в алфавитном порядке по первой букве слова - C++
Введите массив символов из 14 элементов. Расположить слова в алфавитном порядке по первой букве слова. Добавлено через 19 часов 40...

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

Расположить слова в алфавитном порядке - C++
Доброго времени суток Вводим строку со словами, необходимо расположить эти слова в алфавитном порядке. Мои наработки /*Расположить...

Вывести слова в строке в алфавитном порядке - C++
Есть строка char (проинициализированная в коде), где слова разделены пробелами и запятыми. Нужно вывести слова в алфавитном порядке. Нельзя...

Определить располагаются ли буквы в заданной символьной строке в алфавитном порядке - C++
Задача № 1 Вычислить значение z=v1+v2+v3/3 Vi - объём шеров с радиусами ri . Использовать функцию для нахождения объема шара. ...

14
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 13:41 #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
1
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
19.01.2012, 14:14 #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;
}
1
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 16:09  [ТС] #4
На лекциях такого не было, а как-нибудь проще её можно решить?( больше действий, но простые функции...). Спасибо за это решение.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 17:35 #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
1
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 18:07  [ТС] #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.С использованием файлов и указателей.
0
go
19.01.2012, 18:40
  #7

Не по теме:



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

1
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 18:44  [ТС] #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();
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 18:46 #9
Цитата Сообщение от Виль Посмотреть сообщение
Ну вот смотри, пример, как мы пишем программы:
Говно-коды Вы пишете, а не программы. За Вас писать в вашем "стиле" здесь никто не будет, если есть вопросы - спрашивайте.
Вообще где ваши наработки???
1
Nicky
3 / 3 / 0
Регистрация: 21.12.2011
Сообщений: 10
19.01.2012, 20:08 #10
go,

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


А вот насчет

Вообще где ваши наработки???
- совершенно согласен. Виль, было бы неплохо, если бы Вы приложили хотя бы минимальные *собственные* усилия.
0
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
19.01.2012, 20:16  [ТС] #11
Да, преподаватель на самом деле не молодой и учит, видимо, по своей методике. Дело в том, что подобных программ у нас не было, по этому я даже малейшего понятия не имею, как её можно написать. Все, что мне до этого отправляли, я встречал в интернете, пытаясь понять, как программу выполнить, но ничего так и не понял, к сожаленияю.
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
20.01.2012, 01:56 #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;
}
Расположить в заданной строке слова в алфавитном порядке

В принципе здесь можно было бы обойтись и без копирования слов, но так дерево универсальнее...
1
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
20.01.2012, 02:16 #13
Цитата Сообщение от Nicky Посмотреть сообщение
(зы: conio.h)
не гони на него :)
0
!!11
6 / 1 / 2
Регистрация: 20.01.2012
Сообщений: 9
20.01.2012, 03:18 #14
а я printf() писал.. Си..
0
Виль
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 21
20.01.2012, 10:31  [ТС] #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();
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 10:31
Привет! Вот еще темы с ответами:

Написать функцию, выводящую на печать слова из заданной строки в алфавитном порядке - C++
Описать функцию fun(B), которая принимает в виде параметра строку В, состоящую из трех слов, в каждом из которых от 2 до 7 латинских букв...

Упорядочить в каждой строке текста слова в алфавитном порядке - C++
Помогите пожалуйста. Очень срочно нужна помощь людей, знающих С. Нужно написать программу в которой: Задан текст, содержащий произвольное...

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

Напечатать в алфавитном порядке все слова из заданной строки, имеющие заданную длину n - C++
Пожалуйста, напишите программу по следующей задаче: Дана строка . Напечатать в алфавитном порядке все слова из заданной строки,...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
20.01.2012, 10:31
Ответ Создать тему
Опции темы

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