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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Переписать программу с C# на C++ http://www.cyberforum.ru/cpp-beginners/thread326003.html
ребят есть исходники программы написанной на с# я хочу ее переписать на с++ как это можно по проще осуществить :(
C++ XCode и OpenCV Mac OS… XCode 4… долго мучался с установкой opencv… то файла не видит(хотя есть) то еще какаято проблема…*нашел OpenCV Framework. Подключил к проэкту, и тут проблем не миновать… вот допустим море ошибок аля Undefined symbols for architecture x86_64: "_cvLoadImage", referenced from: calcImageHash(_IplImage*, bool) in main.o _main in main.o ну нашел статейку что компилятору... http://www.cyberforum.ru/cpp-beginners/thread325999.html
графика по теме метро для dev cpp C++
нарисовать схему московского метро, либо сделать рисунок метро..в dev cpp Форум - это не чат. Разговоры в режиме он-лайн здесь не проходят. Пишите задания сразу и подробно.
Кодировка в ASKII C++
Составить алгоритм и программу обработки фразы (строки текста), находящемся в текстовом файле Input.txt. В результате работы программы в файле отчета необходимо в алфавитном порядке расположить буквы из которых состоит текст с их количеством. Пример: Содержание исходного файла Input.txt слово "МАМА" В результате работы программы получен файл следующего вида: Буква Количество...
C++ Написать программу для нахождения суммы большего и меньшего из трех чисел. http://www.cyberforum.ru/cpp-beginners/thread325957.html
Написать программу для нахождения суммы большего и меньшего из трех чисел.
C++ Статическое связывание параметров методов Добрый день! В коде (представлен ниже) сделал оболочки для константной и простой ссылок. Известно, что в функции, которая ожидает константную ссылку, можно передать как конс-ю, так и простую ссылку. Поэтому наследую класс-оболочку константной ссылки классом-обол-й для простой ссылки. И, при проверке этого факта произошла ошибка, в ф-ции changeRef вызывает метод get() для базового класса -... подробнее

Показать сообщение отдельно
Seatless
1 / 1 / 0
Регистрация: 19.06.2011
Сообщений: 24
25.06.2011, 23:15  [ТС]     Сортировка строк в алфавитном порядке
Цитата Сообщение от CEBEP Посмотреть сообщение
можно использовать "матрицу", объявив
C++
1
char string[ amount ][ 300/*или, скажем, как в вашем примере, 40*/ ]
ещё можно использовать динамическое выделение памяти, тогда объявление можно не трогать но перед
C++
1
strcpy ( string[ i ], temp );
нужно вписать
C++
1
string [ i ] = new char[strlen(temp)];
и в конце программы освободить память вызвав для каждого элемента массива
C++
1
delete[] string [ i ];
То что я написал - очень мало, чтобы разобраться нужно почитать в гугле.

Добавлено через 1 минуту
насчёт завершения вывода - в учебных программах принято сначала спрашивать о количестве вводимых строк, потом предлагать последовательный ввод каждой...
Переделав под матрицу получилось вот что:

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
//Программа сортировки строк в алфавитном порядке
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
 
//начало функции main
int main()
{   
    /*смена кодовой страницы для корректного
    отображения русского языка*/
    system( "chcp 1251" ); 
 
    // объявление переменных
    const int amount = 20;
    const int length = 40;
    char string[ amount ][ length ];
    char temp[ length ];
    int i = 0;
    bool exit = 0; 
 
    // ввод строк
    cout << "Введите строку номер " << i << " или СТОП для завершения: ";
    cin >> temp;
    for ( ; i < amount && strcmp( temp, "СТОП" ); i++ )
    {
        strcpy ( string[ i ], temp );
        cout << "Введите строку номер " << i + 1 << " или СТОП для завершения: ";
        cin >> temp;
    }
    
 
    // сортировка в алфавитном порядке
    for ( int l = 0;  exit != 1; l++ ) // l - количество проверенных символов
    {
        exit = 1;
        for (int j = 0; j < i - 1; j++ )
            for ( int k = j + 1; k < i; k++ )
            {
                if ( string[ j ][ l ] != '\0' && string[ k ][ l ] != '\0' )
                    if ( strncmp( string[ j ], string[ k ], l ) == 0 && string[ j ][ l ] > string[ k ][ l ] )
                    {
                        swap( string[ j ], string[ k ] );
                    }
            }
    }
    
    // вывод сортированных строк
    cout << "\nУпорядоченные в алфавитном порядке строки:\n";
    for ( int j = 0; j < i; j++ )
        cout << j << ". " << string[ j ] << endl;
 
    //ожидание нажатия клавиши и выход из программы
    cout << endl;
    system( "pause" );
    return 0;
}
Но так даже не компилируется. Вот такое пишет:
Warning 1 warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. d:\игорь\c++ progs\exerci\exerci\main.cpp 27
Error 2 error C2075: '_Tmp' : array initialization needs curly braces c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility 102
Error 3 error C2106: '=' : left operand must be l-value c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility 103
Error 4 error C2106: '=' : left operand must be l-value c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility 104

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