С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
o4enslabijcoder
0 / 0 / 0
Регистрация: 31.08.2016
Сообщений: 38
1

Массив указателей на массив строк и сортировка массива указателей

19.10.2016, 18:33. Просмотров 649. Ответов 4
Метки нет (Все метки)

Добрый день. Поступил вопрос. Есть задача. У нас встроенный массив
C
1
char mass[8][50];
.Мы вводим строки до тех пор, пока не будет заполнен массив или не будет введён "$". И например мы создаем массив указателей
C
1
char*pMass[8];
. Затем мы производим пузырьковую сортировку строк, но так чтобы у нас структура массива строк не менялась и мы не перемещали данные там, а менялся только массив указателей. Вопроса у меня 2:
1) Должны ли мы каждый этемент массива указателей направлять на начало очередной строки манипуляцией
pMass[i]=mass[i]; или же pMass[i]=*(mass+i*50);
2) Тип массива указателей у нас char * или char ** , потому что у нас какбы строковый массив это тоже массив указателей.

короче я запутался, распутайте меня))) ну и если вдруг напишите код для наглядности будет вообще рахат-лукумчик
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2016, 18:33
Ответы с готовыми решениями:

Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей
Задача: создать специфицированный шаблон функции, принимающей массив указателей...

Создать специализацию для шаблона, которая принимает массив указателей на строки и количество этих указателей
Нужно создать специализацию для шаблона, которая принимает массив указателей на...

Массив строк как массив указателей на массивы чаров
Я всё правильно сделал? char* Files; Files = "AHEAD"; Files = "LEFT";...

Массив из указателей на масив из указателей на массив из int)
Доброго времени суток! Возникла проблема - как на C++ создать массив из...

Сформировать массив указателей на матрицу строк
может кто нибудь обьяснит что требуеться в задании сделать. сформировать...

4
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
19.10.2016, 18:55 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
#include <ctime>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
void swap(char*& str1, char*& str2)
{
    char* _ts = str1;
    str1 = str2; str2 = _ts;
}
 
bool equal_key(char* str1, char* str2, int pos)
{
    for (int i = pos - 1; i >= 0; i--)
        if (str1[i] != str2[i]) return false;
 
    return true;
}
 
int main()
{
    char* strings[8] = { "fruit", "banana", "apple", "grape", "apricot", "airwicks", "ananas", "bubbles" };
 
    for (int r = 0; r < 256; r++)
    {
        for (int i = 0; i < 8; i++)
        {
            int min_i = i;
            for (int k = i + 1; k < 8; k++)
                min_i = (strings[k][r] < strings[min_i][r] && 
                    equal_key(strings[min_i], strings[k], r)) ? k : min_i;
 
            swap(strings[i], strings[min_i]);
        }
    }
 
    std::cin.get();
}
Как видите, никаких лишних ссылок и указателей на адреса строк в памяти здесь НЕ НУЖНО.

И вот еще одна ссылка с использованием STL: Комплексная сортировка по частоте и алфавиту
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
19.10.2016, 19:26 3
Цитата Сообщение от o4enslabijcoder Посмотреть сообщение
2) Тип массива указателей у нас char * или char ** , потому что у нас какбы строковый массив это тоже массив указателей.
- указатель второго уровня(char**): pMass - вот так, без скобок. Если как у Вас написано:
C++
1
char *pMass[8];
- то тут можно интерпретировать так: у нас заведен массив указателей первого уровня(8 штук). Называется это все дело pMass - указатель второго уровня.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7092 / 3394 / 461
Регистрация: 04.12.2011
Сообщений: 9,447
Записей в блоге: 5
19.10.2016, 20:10 4
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
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    const int n=8, m=50;
    int i, j;
    char mass[n][m]={"5", "2", "7", "4", "1", "6", "3", "huh"};
    char *ptr_char[n]={mass[0], mass[1], mass[2], mass[3], mass[4], mass[5], mass[6], mass[7]};
 
char *temp;
for ( i=0; i<n-1; i++){
for ( j=i+1; j<n; j++){
            if (strcmp(ptr_char[i],ptr_char[j])>0)
            {                  
                   temp=ptr_char[i];
                   ptr_char[i]=ptr_char[j];
                   ptr_char[j]=temp;
            }       
                               
}
}
for ( i=0; i<n; i++)cout<<ptr_char[i]<<' ';
cout<<endl;
system("pause");
return 0;
}
Invader0x7F, массив встроенный 2-мерный. Это не массив указателей. Хотя одномерные массивы и приводятся к указателям, но это константные указатели. Так что ТС прав, вспомогательный массив указателей нужен.
0
o4enslabijcoder
0 / 0 / 0
Регистрация: 31.08.2016
Сообщений: 38
19.10.2016, 23:20  [ТС] 5
Спасибо всем большое сейчас попробую написать код и расскажу как все прошло))
0
19.10.2016, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2016, 23:20

Ввод строк и запись их в массив указателей
Мне надо считать определённое количество слов, это количество я должен ввести,...

Массив указателей объектов класса и их быстрая сортировка
Приветствую! Собственно, у меня есть: Класс Worker; Динамический массив,...

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
Слова английского текста рассортировать по возрастанию количества заданной...


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

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

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