Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Необходимо написать программу VC++, которая располагает произвольный текст в алфавитном порядке

Сергей Сергей Знаток (426), на голосовании 14 лет назад
Ввод строк я задал, поиск разделителей в ней тоже, но не могу понять, как слова местами поменять в строке. Вот мои наработки:
#include "stdafx.h"
#include <iostream>
#include <string.h>

using std::cin;
using std::cout;
using std::endl;

int main()
{
const int n=10;
const int m=80;
int d,i,s, beg;
char string[n][m];
char word;
char word2;
char pstr = string;
char found, found2 = 0;

int count = 0;
cout << "Vvedite tekst na angliiskom yazike ne bolee 10 strok ne bolee 80 simvolov v kagdoi\n";
for (int i=0;i<n;++i)>, m, '\n'); //Ввод с клавиатуры 10 строк по 80 символов максимально

cout<<" stop";
for (int i=0;i<n;++i)>);
for (int j=0;j<=d;++j)

if (*(string+j)!=',' || *(string+j)!=' ' || *(string+j)!='\0') //Поиск разделителей
count=count+1;
else
{
g=g+1;
if (*(string+j+1)<*(string+beg)) //Здесь я сравниваю первые буквы соседних слов
{
И вот не знаю, как дальше делать, в программировании пока не силен. Помогите, если кто знает как довести прогу до ума.
Дополнен 14 лет назад
cout<<" stop";
for (int i=0;i<n;++i)>);
for (int j=0;j<=d;++j)
Только.
Дополнен 14 лет назад
cout<<" stop";
for (int i=0;i<n;++i)>);
for (int j=0;j<=d;++j) Только
Дополнен 14 лет назад
В этом куске после for (int i=0;i<n;++i)>);
Почему-то он косячит текст тут при вставке.
Голосование за лучший ответ
DarkLostSoul Мудрец (11177) 14 лет назад
чтоб текст кода не косячил тут - ставь пробелы между > ;)

Для сортировки в алфавитном порядке испоьзуй не сравнение первых букв ( О_О ) а ф-ию strcmp (почитай про нее и разберешься) .
А по поводу "поменять местами слова в строке"...ну считываешь слово посимвольно до пробела в массив. запоминаешь его. считываешь так же след слово. запоминаешь и его. и посимвольно заменяешь эл-ты массива исходной строки, соответствующие второму слову, символами из первого.
Тут еще нужно учесть сдвиг остальных слов (которые идут после этих двух, если всего слов в строке больше двух) , чтобы между словами в итоге осталось по одному пробелу.... задача теоритически не сложная, но не используя всякие стандартные библиотеки или доп. библиотеки работы со строками становится кропотливой) Так что удачи. Хорошая тренировка за то;)
Похожие вопросы