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

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

Войти
Регистрация
Восстановить пароль
 
Вредер
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 3
#1

создать статический массив строк как статический массив указателей на строки, задание ниже --> - C++

28.04.2013, 12:41. Просмотров 679. Ответов 4
Метки нет (Все метки)

Слова английского текста, начинающиеся с гласных букв, рассортировать в алфавитном порядке по первой согласной букве слова. Остальные слова в сортировке не должны участвовать

Видел один топик, там сортировка была по кол-ву символов в слове, разобраться сам не смог, в итоге прошу помощи у форумчан..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 12:41     создать статический массив строк как статический массив указателей на строки, задание ниже -->
Посмотрите здесь:

C++ В двумерном массиве A[N][M] упорядочить строки так, что бы возрастали элементы заданного столбца. Массив статический
Статический массив C++
C++ Как перевести статический массив в динамический?
статический массив C++
C++ Как инициализировать статический константный массив в классе?
Как вернуть статический массив из метода и присвоить его производному классу? C++
Указатель на статический массив как параметр шаблона C++
C++ Как очистить статический массив?
C++ Статический массив как член класса
C++ Создать статический двумерный массив и посчитать сумму каждой строки
C++ Как очистить статический массив структур?
Как этот массив переделать в статический? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 295
Регистрация: 04.12.2011
Сообщений: 8,029
Записей в блоге: 3
28.04.2013, 15:10     создать статический массив строк как статический массив указателей на строки, задание ниже --> #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
#include <iostream>
#include <string>
#include <strstream>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char* argv[]){
setlocale(0,"rus");
string txtLineOfWords="betta alpha gamma month in if up day year date monday say still steal salt sure apple yelow underline east easy of off out owner eagle";
string glasn = "aeiouy";
strstream strStream;
strStream<<txtLineOfWords;
string tmp;
vector<string> sourcVecGlass;
int cnt=0;
cout<<"Массив гласных в заданном тексте "<<endl;
while(strStream>>tmp){
if((tmp.substr(0,1).find_first_of(glasn)==0)){sourcVecGlass.push_back(tmp);
cout<<sourcVecGlass[cnt++]<<endl;
    }
}
cout<<endl;
cout<<"Упорядочено "<<endl;
cout<<endl;
sort<std::vector<string>::iterator>(sourcVecGlass.begin(),sourcVecGlass.end());
for(std::vector<string>::iterator i=sourcVecGlass.begin(); i!=sourcVecGlass.end();++i){
cout<<*i<<endl;
}
cout<<endl;
cout<<endl;
system("pause");
return 0;
}
Вредер
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 3
28.04.2013, 16:01  [ТС]     создать статический массив строк как статический массив указателей на строки, задание ниже --> #3
Ооу, а вот про итераторы я не подумал, спасибо большое)
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 295
Регистрация: 04.12.2011
Сообщений: 8,029
Записей в блоге: 3
28.04.2013, 17:56     создать статический массив строк как статический массив указателей на строки, задание ниже --> #4
Цитата Сообщение от Вредер Посмотреть сообщение
в алфавитном порядке по первой согласной букве слова.
Вредер, простите, но не вычитал этого условия и просто лексографически отсортировал. Напишите свою ф-цию сравнения в к-рой две строки сравниваются по ascii первой встреченной согласной ( не принадлежащей glasn) и передайте в sort 3-м параметром.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 295
Регистрация: 04.12.2011
Сообщений: 8,029
Записей в блоге: 3
29.04.2013, 18:26     создать статический массив строк как статический массив указателей на строки, задание ниже --> #5
Вредер, Вы будете смеяться, но со статическим массивом указателей получается, действительно смешно (у меня)):
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
using namespace std;
 
bool is_Glasn(char in){
bool ret=false;
char *glas = "aeiouy";
for(int i=0; i<6; ++i)
if(in==glas[i]){
ret=true;
break;
    }
return ret;
}
 
char *getNextPointerToFirstWordSumb(char *FullStr){
char *toRet=FullStr;
int chInd=0;
while(toRet[chInd]!=' '||toRet[chInd]=='\0') ++chInd;
if(toRet[chInd]==' ')return &toRet[chInd+1];
if(toRet[chInd]=='\0')return 0;
}
 
int printMaddWord(char *begin){
int chInd=0;
char* toret=begin;
while(1){
if(begin[chInd]==' '||begin[chInd]=='\0')break;
cout<<begin[chInd];
++chInd;
}
return chInd;
}
 
int countMaddWordSumbols(char *begin){
int chInd=0;
char* toret=begin;
while(1){
if(begin[chInd]==' '||begin[chInd]=='\0')break;
++chInd;
}
return chInd;
}
 
char *getCstrWord(char *inStr){
int lenWthNoFinZero=countMaddWordSumbols(inStr);
char *outStr=new char[lenWthNoFinZero+1];
for(int i=0; i<lenWthNoFinZero; ++i){
outStr[i]=inStr[i];
}
outStr[lenWthNoFinZero]='\0';
return outStr;
}
 
int firstSogl(char *in){
int ret=-1;
int chInd=0;
    while(in[chInd]!='\0'){
        if(!is_Glasn(in[chInd])){
        ret=(int)in[chInd]; 
            break;
        }
chInd++;
    }
return ret;
}
 
bool compareFirstLessThanSecond(char *frst,char *scnd){
bool ret=firstSogl(frst)>firstSogl(scnd);
return ret;
}
 
void replasePtrs(char** PtrsOne, char** PtrsTwo){
 char* PtrsTmp=*PtrsOne;
*PtrsOne=*PtrsTwo;
*PtrsTwo=PtrsTmp;
}
 
bool sort(char **ptr_to__Str){
bool ret=false;
char **ptr_to_Madness_Str=ptr_to__Str;
int frstInd=0;
int scndInd=0;
char* first=0;
char* second=0;
while(ptr_to_Madness_Str[frstInd]!=0){
first=getCstrWord(ptr_to_Madness_Str[frstInd]);
if(is_Glasn(first[0])){//1 - c glasnoy
scndInd=frstInd+1;
while(ptr_to_Madness_Str[scndInd]!=0){
second=getCstrWord(ptr_to_Madness_Str[scndInd]);
if(is_Glasn(second[0])){//2 - s glasnoy
if(compareFirstLessThanSecond(first,second)){
ret=compareFirstLessThanSecond(first,second);
replasePtrs(&ptr_to_Madness_Str[frstInd], &ptr_to_Madness_Str[scndInd]);
}
}
scndInd++;
}
}
frstInd++;
}
return ret;
}
 
int main(int argc, char* argv[]){
setlocale(0,"rus");
const int sizeOfArr=256;
char *txtAsOneStr="betta alpha gamma still month in if up day year steal date monday owner say salt sure apple yelow of underline east easy off out eagle"; 
char* ptr_to_Madness_Str[sizeOfArr]={0};//статический массив указателей на элементы С-строки, кто скажет, что это не так пусть бросит камень
int chInd=0;
char* tmp_Ptr_Ch=txtAsOneStr;
while(*tmp_Ptr_Ch!='\0'){//заполняем массив из строки
ptr_to_Madness_Str[chInd++]=tmp_Ptr_Ch;
tmp_Ptr_Ch=getNextPointerToFirstWordSumb(tmp_Ptr_Ch);
}
cout<<endl;
chInd=0;
cout<<"Получен массив указателей на char, указывающих на: "<<endl;
while(ptr_to_Madness_Str[chInd]!=0){//печатаем, интересно же
cout<<chInd<<"\t";
printMaddWord(ptr_to_Madness_Str[chInd]);
cout<<endl;
chInd++;
}
chInd=0;
cout<<endl;
cout<<endl<<endl<<endl;
bool sorting=true;
while(sorting){//сортируем методом всплытия с потряхиваним
sorting=sort(ptr_to_Madness_Str);
}
 chInd=0;
 cout<<"Поcле сортировки указатели в массиве указывают на: "<<endl;
while(ptr_to_Madness_Str[chInd]!=0){//печатаем результат
cout<<chInd<<"\t";
printMaddWord(ptr_to_Madness_Str[chInd]);
cout<<endl;
chInd++;
}
cout<<endl;
cout<<endl;
system("pause");
return 0;
}
Yandex
Объявления
29.04.2013, 18:26     создать статический массив строк как статический массив указателей на строки, задание ниже -->
Ответ Создать тему
Опции темы

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