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

Сортировка двумерного массива char - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как вычислить значение суммы http://www.cyberforum.ru/cpp-beginners/thread616985.html
Для заданого целого числа n вычислить значение суммы
C++ Таймеры.Не срабатывает сравнение Всем доброго времени суток!.Есть код(архивация),который должен запускаться раз в 30 мин(в коде для теста 1 мин.),но почему-то этого не происходит.Прошу помочь!Закомментированый код тоже рабочий,просто пробовал. { time_t t; struct tm *t_m; t=time(NULL); t_m=localtime(&t); int timer1, timer2; int tm_hour,tm_min,tm_sec; t_m->tm_hour; http://www.cyberforum.ru/cpp-beginners/thread616977.html
C++ Как вычислить минимум
Подскажите как дописать программу По заданным значениям x,y,z вычислить u=min(x,max(y,z)) #include "stdafx.h" #include <iostream> #include <stdio.h> #include <iostream> #include <cmath> #include <conio.h>
C++ Объявление класса Patient
Доброго времени суток! Есть программа, в ней несколько файлов. Есть класс Patient, на который создается указатель в файле polyclinic.cpp, этот же класс нужен в файле patient.cpp. Вопрос в том, как сделать, чтобы определенный класс в polyclinic.cpp был доступен в patient.cpp? При определении в обоих файлах, студия ругается error LNK2005: "class Patient * patient" (?patient@@3PAVPatient@@A) уже...
C++ Учет обрывов связи за сутки http://www.cyberforum.ru/cpp-beginners/thread616941.html
Люди напишите плиз программу которая буде фиксировать обрывы связи за сутки. Я это вижу так. 1.Пингуем google.com 2.если пинга больше 1000 (тоесть связи нет) то в счетчик +1. 3.если пинга норм то пингуем еще раз. 4.В конце просто показываем количество вылетов. Единсвенное нужно отключать счетчик в тот момент пока инета нету ибо счетчик там фиг знает сколько насчитает. Ток скажите как ее...
C++ Дан массив из N целых чисел. Необходимо подсчитать a1+a2 – a3+a4 –.+aN Необходимо подсчитать a1+a2 – a3+a4 –..+aN подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
01.07.2012, 09:53     Сортировка двумерного массива char
Цитата Сообщение от dioxyde Посмотреть сообщение
Помогите пожалуйста отсортировать двумерный массив(2d) символов(char) по возрастанию..
Пишу программу на с++ в Visual Studio 2005;
дело вот в чём - есть двумерный массив символов состоящих из строк содержащих как цифры так и буквы.
Сдесь представлены пределы номеров кредитных карт и названия карт. Номер состоит из 16 символов затем следует разделитель и второй предел карты,далее название.Пример:
4000000000000000;4599999999999999;VISA
4600000000000000;4799999999999999;Visa Electron
9428000000000000;9428999999999999;Local CARD
6700000000000000;6799999999999999;MAESTRO
5000000000000000;5999999999999999;MASTERCARD
3000000000000000;3999999999999999;AMEX
в таком порядке данные записываются в двумерный массив char
Но как сделать так, чтобы строки в массиве были упорядочены по возрастанию?
Причём сортировка должна роводится по первому пределу номера карты, тоесть по первым 16 цифрам. Пример:
3000000000000000;3999999999999999;AMEX
4000000000000000;4599999999999999;VISA
4600000000000000;4799999999999999;Visa Electron
5000000000000000;5999999999999999;MASTERCARD
6700000000000000;6799999999999999;MAESTRO
9428000000000000;9428999999999999;Local CARD
Имеется ввиду чтобы, к примеру карта AMEX до сортировки была array[5][i], а после стала array[0][i]
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
#include <string>
#include <iomanip>
#include <fstream>
#include <iostream>
using namespace std;
 
struct CARD
{
    double beg;
    double end;
    char name[32];
};
 
//ÔóГ*êöèÿ âîçðГ*ГІГЁГІ ÷èñëî ñòðîê Гў ГґГ*éëå
//ГґГ«Г*ГЈ bUpdateData îòâå÷Г*ГҐГІ Г§Г* ГЁГ*èöèГ*ëèçГ*öèþ Г¬Г*Г±Г±ГЁГўГ* CARD * pList
//Гў Г§Г*âèñèìîñòè îò ГҐГЈГ® Г§Г*Г*Г·ГҐГ*ГЁГї ГґГіГ*êöèÿ Г±Г·ГЁГІГ*ГҐГІ Г¤Г*Г*Г*ûå ГґГ*éëГ* Г¬Г*Г±Г±ГЁГў 
//pList (bUpdateData == ÈÑÒÈÍÀ)
int getLinesInFile(ifstream &ifs, CARD * pList, bool bUpdateData);
//ÔóГ*êöèÿ îáìåГ*ГЁГўГ*ГҐГІ ñîäåðæèìîå ïîëåé ñòðóêòóð CARD pLeft, pRight
void swapCARDS(CARD &pLeft, CARD &pRight);
 
int main()
{
    int i,j, nCards = 0;
    CARD * pList    = NULL;
    ifstream ifs("cards.txt");
    if(!ifs.is_open())
        cout<<"Error open cards.txt\n";
    else
    {
        //Ïîëó÷Г*ГҐГ¬ ÷èñëî ñòðîê (÷èñëî Г§Г*ГЇГЁГ±ГҐГ© Г® ГЄГ*ðòГ*Гµ) ГЁГ§ ГґГ*éëГ*
        nCards = getLinesInFile(ifs, pList, false);
        if(nCards < 1)
            cout<<"cards.txt not contain card data\n";
        else
        {
            //Âûäåëÿåì ГЇГ*ìÿòü ïîä Г¬Г*Г±Г±ГЁГў ñòðóêòóð ñîäåðæГ*ùèìè ñâåäåГ*ГЁГї Г® ГЄГ*ðòå
            pList  = new CARD[nCards];
            //Ñ÷èòûâГ*ГҐГ¬ Г¤Г*Г*Г*ûå ГЁГ§ ГґГ*éëГ*
            nCards = getLinesInFile(ifs, pList, true);
            ifs.close();//Г‡Г*êðûâГ*ГҐГ¬ ïîòîê Г·ГІГҐГ*ГЁГї
            cout<<"\tCARDS DATA FROM FILE\n";
            for(i = 0    ; i < nCards; i++)
                cout<<setprecision(16)<<pList[i].beg<<";"
                    <<setprecision(16)<<pList[i].end<<";"
                    <<pList[i].name<<endl;
            for(i = 0    ; i < nCards; i++)
            for(j = i + 1; j < nCards; j++)
            {
                if(pList[j].beg < pList[i].beg)
                    swapCARDS(pList[j],pList[i]);
            }
            cout<<"\tSORTED CARDS DATA\n";
            for(i = 0    ; i < nCards; i++)
                cout<<pList[i].beg<<";"
                    <<pList[i].end<<";"
                    <<pList[i].name<<endl;
            delete [] pList;//Г—ГЁГ±ГІГЁГ¬ ГЇГ*ìÿòü
        }
    }
    system("pause");
    return 0;
}
 
int getLinesInFile(ifstream &ifs, CARD * pList, bool bUpdateData)
{
    int nLines = 0;
    string line;
    ifs.seekg(0,ios::beg);
    while(getline(ifs,line))
    {
        if(bUpdateData)//Åñëè bUpdateData == ÈÑÒÈÍÀ
            sscanf
            (
                line.c_str(),
                "%lf;%lf;%s",
                &pList[nLines].beg,
                &pList[nLines].end,
                pList[nLines].name
            );//Г—ГЁГІГ*ГҐГ¬ ïîëÿ ñòðóêòóðû ГЁГ§ ñòðîêè line
        nLines = nLines + 1;
    }
    ifs.clear();//ÑáðГ*ñûâГ*ГҐГ¬ ГґГ«Г*ГЈ EOF
    ifs.seekg(0,ios::beg);//ÂîçâðГ*Г№Г*ГҐГ¬ êóðñîð ГўГ*Г*Г·Г*ëî ГґГ*éëГ*
    return nLines;
}
 
void swapCARDS(CARD &pLeft, CARD &pRight)
{
    //ïðîñòîé îáìåГ* ÷åðåç ГЎГіГґГҐГ°Г*ГіГѕ ñòðóêòóðó
    CARD pBuf = pLeft;
    pLeft  = pRight;
    pRight = pBuf;
}
cards.txt
4000000000000000;4599999999999999;VISA
4600000000000000;4799999999999999;Visa Electron
9428000000000000;9428999999999999;Local CARD
6700000000000000;6799999999999999;MAESTRO
5000000000000000;5999999999999999;MASTERCARD
3000000000000000;3999999999999999;AMEX
Миниатюры
Сортировка двумерного массива char  
 
Текущее время: 04:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru