На мой взгляд получилась уж сильно грамоздко.
Закомментил все основные моменты, для более быстрого "разбора" кода. Подскажите/направте, что можно укоротить в коде.
Задача программы:
1. Ввести исходную строку.
2. Поменять первый символ на последний и последний на первый в каждом слове.
3. Ввести новую длину новой строки(она будет содержать текст редактированной строки, а длина разгоняется пробелами).
Все работает, но уж больно грамоздко :|
Закомментил все основные моменты, для более быстрого "разбора" кода. Подскажите/направте, что можно укоротить в коде.
Задача программы:
1. Ввести исходную строку.
2. Поменять первый символ на последний и последний на первый в каждом слове.
3. Ввести новую длину новой строки(она будет содержать текст редактированной строки, а длина разгоняется пробелами).
Все работает, но уж больно грамоздко :|
PHP код:
<?php 
#include <iostream>
#include <fstream>
using namespace std;
// Расширение новой строки (заполнение пробелами)
void ExtensionIfANewLine(char* str,char* str_2,int s,int n)
{
    int nSpace = n - s;    // кол-во пробелов для новой строки          (str_2(newString))
    int counterStr1 = 0,   // счетчик строки                            (str(editString))
        counterStr2 = 0,   // счетчик новой строки                      (str_2(newString))
        counterSpace = 0,  // счетчик пробелов
        position = 0;      // позиция для выполнения
     
    for(;str[counterStr1];counterStr2++)
    {
        if(position==0)
        {
            if(str[counterStr1]!=' ')
            {
                str_2[counterStr2] = str[counterStr1];
                counterStr1++;
            }
            else position = 1;
        }
        else if(position == 1)
        {
            counterStr2--;
            str_2[counterStr2] = str[counterStr1];
            
            for(;counterSpace<nSpace;counterSpace++)
            {
                counterStr2++;
                str_2[counterStr2] = ' ';
            }
            counterStr1++;
            position = 0;
        }
    }
}
// Счетчик слов в строке
int CountWordsInARow(char* str)
{
    int nWord = 0,          // кол-во найденных слов
        position = -1;      // позиция для выполнения
    for(int i = 0;str[i];i++)
    {
       if(position == -1)
       {
          if(str[i] != ' ') position = i;
       }
       else if(str[i] == ' ')
       {
          nWord++;
          position = -1;
       }
    }
    if(position != -1) nWord++;
    
    return nWord;
}
// Смена позиции символа c сохранением предыдущего
void ChangingPositionCharacter(char* str,int j,int i)
{
    char r = str[j];
    str[j] = str[i-1];
    str[i-1] = r;
}
// Получение редактированной строки
void getEditString(char* str)
{
    int size = strlen(str);
    int begin = -1;
    for(int i=0;str[i];i++)
    {
       if(begin == -1)
       {
          if(str[i]!=' ') begin = i;
       }
       else if(str[i]==' ')
       {
          ChangingPositionCharacter(str,begin,i);
          begin = -1;
       }
    }
    if(begin!=-1) ChangingPositionCharacter(str,begin,size);
}
// Сохранение данных
int DataStorage(char* str,char* newFile,int n)
{
    FILE *F = fopen(newFile, "wt");
    if(F==NULL) 
    {
        printf("[Error!] Failed to save the data.\n"); 
        return 0;
    }
    else 
    {
        for(int i=0;i<n;i++)
            fprintf(F,"%c",str[i]);        
        fclose(F);
        printf("The data are stored.\n");
        return 1;
    }
}
int main()
{
    char saveFile[256] = {0},     // имя файла для сохранения данных
         sourceString[256] = {0}, // исходная строка 
         editString[256] = {0},   // редактированная строка
         newString[256] = {0};    // новая строка
         
    int  lengthString = 0,        // длина исходной строки
         newLengthSring = 0,      // длина новой строки
         nWord = 0;               // кол-во слов в исходной строке
         
    
    printf("=================================================[Settlement Graphic Work N2]===");
    printf("[Note!] Line can not consist of one word.\n");  // примечание к условию
    
    // зацикливаем до выполнения условия (см. примечание)
    while(1)
    {
        printf("Enter a string: "); gets(sourceString);      // ввод исходной строки
        nWord = CountWordsInARow(sourceString);                   // получаем кол-во введенных слов
        
        // проверяем на наличие более 2х слов в строке
        if(nWord<=1)
            printf("[Error!] Check the condition and try again.\n");   
        else break;
    }
    
    strcpy(editString,sourceString);       // копируем содержимое из sourceString в editString
    getEditString(editString);             // получаем отредактированную строку
    lengthString = strlen(editString);     // получаем длину строки
    
    printf("[Note!] The length of the converted string\nshould be in the range from %d to 255.\n",lengthString);    // примечание к условию
    
    // зацикливаем до выполнения условия (см. примечание)
    while(1)
    {
        printf("Enter the length of new line: "); scanf("%d",&newLengthSring);      // ввод длины новой строки
        
        // проверка на ввод
        if(newLengthSring<=lengthString || newLengthSring>=255)
            printf("[Error!] Check the condition and try again.\n");
        else break;
    }
    
    ExtensionIfANewLine(editString,newString,lengthString,newLengthSring);          // расширение новой строки (заполнение пробелами)
    
    // Результат
    printf("=====================================================================[Result]===");
    printf("sourceString = %s;\neditString = %s;\nnewString = %s;\n",sourceString,editString,newString);
    
    // Сохранение данных
    printf("===============================================================[Data storage]===");
    printf("Save the file: "); scanf("%s",&saveFile);
    DataStorage(newString,saveFile,newLengthSring);
        
    system("PAUSE");
    return EXIT_SUCCESS;
} 
Добавлено через 15 минут
Наглядный пример выполнения программы:
![[Изображение: image.png]](http://rghost.ru/36886030/image.png) 
	
 
 

 




 tring для кого придуман?
tring для кого придуман? 
![[Изображение: dxqV.gif]](http://image.zone-game.info/images/2014/06/04/dxqV.gif) 
