/*
codeby.net
Autor: DarkKnight125
*/
#include<iostream>
using namespace std;
int main ()
{
setlocale(LC_ALL,"Russian"); //Переведем локаль в кодовую страницу .1251
char**a; //Наш массив строк или другими словами : Массив указателей на массив символов
int i;
cout<<"Введите размерность массива : ";
cin>>i;
//Когда мы получили кол-во массивов, то обязаны динамически выделить память под массив строк
a = new char*[i];
//Теперь к твоему вводу данных
getchar(); //Уберем последний символ с потока он у нас '\n'
cout<<"Введите массивы : "<<endl;
for(int r=0;r<i;r++)
{
a[r] = new char[128]; //Выделим память для строки 128-символов (включая нулевой) - максимум
gets(a[r]); //И получаем строку
}
//Вывод на экран что бы ты увидел что вышло
cout<<endl<<"Массив A: = {"<<endl;
for (int r = 0; r< i; r++)
{
cout<<a[r]<<endl;
}
cout<<"}";
//Ну а теперь к сортировки там например
char buffer[80]; //Введем буферную переменную
for (int j = 0; j<i; j++) //Перебираем массив строк
{
for (int k =j+1; k<i; k++) //Перебираем массив строк, но со след. строки
{
bool isCross = false; //Переменная замены - если тру то нужно менять местами строки
char *k1 = strstr(a[j]," ")+1; char *k2 = strstr(a[k]," ")+1; //*может понадобиться* если нужно будет сравнивать числовые типы
if (strcmp(strstr(a[j]," "),strstr(a[k]," ")) < 0) //Сравним строки от пробельного символа
isCross = true; //Если 1 строка меньше следующей то нужно менять
else if (strcmp(strstr(a[j]," "),strstr(a[k]," ")) ==0)
if(strncmp(a[j],a[k],strlen(a[j])-strlen(strstr(a[j]," "))) < 0) //Сравним строки до пробельного символа
isCross = true; //Та же история что и вверху
if (isCross) //Если нужно менять то
{
strcpy(buffer,a[j]); //Запишим j-ю строку в буфер
strcpy(a[j],a[k]); //Запишим k строку в j
strcpy(a[k],buffer); //Запишим буфер в k строку
}
}
}
//Вывод на экран что бы ты увидел что вышло
cout<<endl<<"Результат после сортировки:";
cout<<endl<<"A: = {"<<endl;
for (int r = 0; r< i; r++)
{
cout<<a[r]<<endl;
}
cout<<"}";
return 0;
}