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

Вывести в алфавитном порядке последние слова всех предложений - C++

Восстановить пароль Регистрация
 
Erisu
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 14
17.05.2011, 06:59     Вывести в алфавитном порядке последние слова всех предложений #1
Помогите, пожалуйста, исправить код, а то дуб дубом((Не могу никак дойти(
Дан текст, состоящий из N (2<=N<=10) строк с максимальной длиной 80 символов. Необходимо вывести в алфавитном порядке последние слова всех предложений. Считать, что текст написан синтаксически грамотно, в качестве знаков препинания используются точка и запятая, слова состоят только из букв, перенос слов по слогам отсутствует. Для выделения слов из строки создать пользовательскую функцию.

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
82
83
84
85
86
#include <vcl.h>
#pragma hdrstop
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
//---------------------------------------------------------------------------
 
#pragma argsused
 char slova(char str[], char **qq, int r)
{char *p;
int g=r;
p=strtok(str," !?,.");
while (p!=NULL)
{
 strcpy(qq[r],p);
r++;
p=strtok(NULL," !?,.");}
return r;}
 
int main(int argc, char* argv[])
{  int n,i,q=0,c=0,g=0,j=0; char *t,ff[80];
char str[10][80]={"I like to wearo high-heeledo shoesee, trousers oor jeans.",
                   "Aaaarrr ttttttr oot iyt tiropeweo!",
                   "Russia is very reach in oil, iron ore, natural gas, copper, nickel.",
                   "It is a wonderful sight you see our country from the plane.",
                   "Throughout its history the Zoo has had many well-known residents.",
                   "The lakes in Scotland are called locks.",
                   "Thames is busiest and most important river in Great Britain.",
                   "Although this vast collection was part of the Zoo's appeal.",
                   "These include species such as rudd, European eels, pink sea fans.",
                   "There is much rain and fog in autumn and in winter!"};
while((n<2)||(n>10))
{printf("Vvedite chislo strok ot 2 do 10:");
scanf("%d",&n);
printf("\n");}
 
printf("Dannie stroki:\n");
for (i = 0; i <n; i++)
{printf("%s\n",str[i]);
strcpy(ff,str[i]);
t=strtok(ff," !?,.");
while (t!=NULL)
{q++; t=strtok(NULL," ,.!?-");}
}
 
char **qq;
qq=(char**)calloc(q,sizeof(char*));
for (i = 0; i <n; i++)
{qq[i]=(char*)calloc(80,sizeof(char));}
 
int r=0;
for (i = 0; i <n; i++)
{
r=slova(str[i],qq,r);}
 
 char *p;
 p=(char*)calloc(n+1,sizeof(char));
 
 for (i = 0; i <r; i++)
  { c=strlen(str[i]);
  if (i==(c-1))
 { strcpy(qq[j],str[i]);
 }
  for (int g=0; g<(r-1); g++)
for (int j=g+1; j<r; j++)
 if (strcmpi(qq[g], qq[j])>0)
{
  strcpy(p,qq[g]);
  strcpy( qq[g], qq[j]);
  strcpy (qq[j], p);
}
 
printf("\n");
for (int g=0; g<r; g++)
printf("%s\n", qq[g]);
 
for (int i = 0; i<1000; i++)
free (qq[i]);
free (qq);
 
free (p);
 
 getchar();getchar();
    return 0;}
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 06:59     Вывести в алфавитном порядке последние слова всех предложений
Посмотрите здесь:

Дана последовательность, содержащая 30 слов. Вывести эти слова в алфавитном порядке C++
C++ Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке
C++ Вывести слова в алфавитном порядке
Вывести слова текста в алфавитном порядке и посчитать их количество C++
C++ Вывести слова в строке в алфавитном порядке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
17.05.2011, 10:19     Вывести в алфавитном порядке последние слова всех предложений #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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
bool findlastword(char * str,char * word)
{
    //Find string lenght
    char buff[64]={0};
    for( int i = (strlen(str) - 2),j = 0; i > 0; --i,++j)
    {
        if(str[i] == ' ' || str[i] == ',')
            break;
        else
            buff[j] = str[i];
    }
    //Overturn string
    for( int i = (strlen(buff) - 1),j = 0; i >= 0; --i,++j)
        word[j] = buff[i];
    return true;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<string> last_words;
    vector<string>::iterator it;
    int n = 0;
    char word[64];
    char str[10][80]={"I like to wearo high-heeledo shoesee, trousers oor jeans.",
                                   "Aaaarrr ttttttr oot iyt tiropeweo!",
                                   "Russia is very reach in oil, iron ore, natural gas, copper, nickel.",
                                   "It is a wonderful sight you see our country from the plane.",
                                   "Throughout its history the Zoo has had many well-known residents.",
                                   "The lakes in Scotland are called locks.",
                                   "Thames is busiest and most important river in Great Britain.",
                                   "Although this vast collection was part of the Zoo's appeal.",
                                   "These include species such as rudd, European eels, pink sea fans.",
                                   "There is much rain and fog in autumn and in winter!"};
 
    while((n<2)||(n>10))
    {
        printf("Insert number of strings - 2 do 10:\n");
        scanf("%d",&n);
        printf("\n");
    }
    for( int i = 0; i < n; ++i)
    {
        memset(word,0,64);
        findlastword(str[i],word);
        last_words.push_back(word);
    }
    sort(last_words.begin(),last_words.end());
 
    for (it=last_words.begin(); it!=last_words.end(); ++it)
        printf("%s\n",(*it).c_str());
 
    getchar();
    return 0;
}
Erisu
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 14
18.05.2011, 17:31  [ТС]     Вывести в алфавитном порядке последние слова всех предложений #3
А сможите объяснить, что вы сделали, а то я тупая(
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
18.05.2011, 17:39     Вывести в алфавитном порядке последние слова всех предложений #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool findlastword(char * str,char * word)
{
        //Find string lenght
        char buff[64]={0};
        for( int i = (strlen(str) - 2),j = 0; i > 0; --i,++j)
        {
                if(str[i] == ' ' || str[i] == ',')
                        break;
                else
                        buff[j] = str[i];
        }
        //Overturn string
        for( int i = (strlen(buff) - 1),j = 0; i >= 0; --i,++j)
                word[j] = buff[i];
        return true;
}
функция для нахождения последнего слова. Ты ей подставляешь строку str и пустой массив word, она находит в str последнее слово и записывает word.
C++
1
2
3
4
5
6
for( int i = 0; i < n; ++i)
        {
                memset(word,0,64);
                findlastword(str[i],word);
                last_words.push_back(word);
        }
пробегаешься по всему тексту и находишь в каждом предложение последнее слово. После этого добавляешь в вектор <string>. После того как все добавишь, сортируешь элементы вектор с помощью стандартной функции сортировки.
C++
1
sort(last_words.begin(),last_words.end());
ну и выводишь на экран.
C++
1
2
for (it=last_words.begin(); it!=last_words.end(); ++it)
                printf("%s\n",(*it).c_str());
описание всех функций можешь найти в инете. код не тестировал.
Erisu
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 14
18.05.2011, 18:54  [ТС]     Вывести в алфавитном порядке последние слова всех предложений #5
Он почему-то придирается к sort(last_words.begin(),last_words.end());. Выводит [C++ Error] Unit1.cpp(59): E2268 Call to undefined function 'sort'.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
18.05.2011, 19:06     Вывести в алфавитном порядке последние слова всех предложений #6
нужно подключить нужные библиотеки. посмотри в описании функций какие библиотеки им нужны
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 19:19     Вывести в алфавитном порядке последние слова всех предложений
Еще ссылки по теме:

C++ Вывести слова в алфавитном порядке

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

Или воспользуйтесь поиском по форуму:
Erisu
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 14
18.05.2011, 19:19  [ТС]     Вывести в алфавитном порядке последние слова всех предложений #7
СПАСИБО ОГРОМНОЕ!)
Yandex
Объявления
18.05.2011, 19:19     Вывести в алфавитном порядке последние слова всех предложений
Ответ Создать тему
Опции темы

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