Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 13:42   #1
alina1995
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 15
По умолчанию Помогите закомментировать задачу

Помогите закомментировать задачу,желательно в каждой функции
Код:
Код:
#include <cstring>
#include <string>
#include <iostream>
#include <conio.h>
using namespace std;
//Удаляет все слова короме первого в введенной строке
string DeleteWord(char s[])
{
   char psz[255];
   char rez[255]="";
   strcpy(psz,s);
   
   int b=0;
   for (int i = 0,a=0; (psz[i] != 0)&&(a<1); i++)
   {
        rez[b]=psz[i];
        b++;
        if ((psz[i] == ' ')&&(psz[i+1]!=' ')) 
            a++;
        else if((psz[i] == ' ')&&(psz[i+1]==' '))
            b--;
   }
  return rez;
}

// удаляет первое слово строки со всеми пробелами.
string DeleteSpace(char s[])
{
    int i, j, k, len, cnt = 0;
    char *ptr, c;
   
    len = strlen(s);
    if(s[0] != 0 && s[0] != ' ')
        cnt = 1;

    for(i = 0; i < len && cnt < 2; i++)
        if(s[i] == ' ' && s[i+1] != ' ')
            ++cnt;
    for(j = k = i; k < len; ++k)
    {
        c = s[k];
        if(c != ' ')
            s[j++] = c;
    }
    s[j] = 0;
    return &s[i];
}

// является ли данное слово перевертышем 
bool Palindrom(char s[])
{
    if (s[0] + s[1] + s[2]+ s[3] == s[4] + s[5] + s[6]+ s[7]) return true; else return false;

}

int main()
{
   char s[255];
   cout << "Enter string: ";
   gets(s);
   cout << "Deleted ! the first word: " << DeleteWord(s)<<endl;
   cout << "Deleted the first word and all space: " << DeleteSpace(s)<<endl;;
   cout << "Palindrom boolean: "<<Palindrom(s)<<endl;  
   _getch();
}

Последний раз редактировалось Stilet; 08.12.2014 в 13:55.
alina1995 вне форума Ответить с цитированием
Старый 08.12.2014, 14:48   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что тут комментировать? Тут даже англо-русского словаря хватит, даже справочника по языку не нать...
p51x вне форума Ответить с цитированием
Старый 10.12.2014, 18:39   #3
alina1995
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что тут комментировать? Тут даже англо-русского словаря хватит, даже справочника по языку не нать...
и всё таки?!
alina1995 вне форума Ответить с цитированием
Старый 10.12.2014, 19:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
#include <cstring> //Подключаем хедер работы со строками
#include <string> //Подключаем хедер работы со строками
#include <iostream> //Подключаем хедер работы с консолькой
#include <conio.h> //Еше один хедер для работы с консолькой
using namespace std; //Указываем пространство имен std

//Удаляет все слова короме первого в введенной строке
//Описываем функцию, в которую передается строка
string DeleteWord(char s[])
{
   char psz[255]; //Описываем строку в 255 символов с мусором внутри
   char rez[255]=""; //Описываем другую такю ще строку без мусора внутри
   strcpy(psz,s); //Копируем то что передано в функцию в описанную строку, где был мусор
   
   int b=0; //Описываем целое судя по всему... а фик его знает...
   for (int i = 0,a=0; (psz[i] != 0)&&(a<1); i++) // Проводим цикл с первого до последнего символа
   //Цикл будет возможно закончен если "а"... А непонятно что она тут делает... А кажись цикл закончится после первого слова.
   {
        rez[b]=psz[i]; //Передаем символ в переменку, которая приготовлена для результата
        b++; //Увеличиваем счетчик чего-то.
        if ((psz[i] == ' ')&&(psz[i+1]!=' '))  //Если встретился пробел, а после него непробельный символ
            a++; //Увеличиваем... видимо счетчик слов
        else if((psz[i] == ' ')&&(psz[i+1]==' ')) //Иначе... Я не пойму зачем эта строка нужна...
            b--;
   }
  return rez;//Собсно возвращаем результирующую строку.
//Такое впечатление что возвращается строка абсолютно без изменений.
// И если честно кажется это неправильный возврат
}

// удаляет первое слово строки со всеми пробелами.
//Описываем функцию, в которую приходит строка
string DeleteSpace(char s[])
{
    int i, j, k, len, cnt = 0;//Некие переменные для цикла, кол-ва и пр.
    char *ptr, c;
   
    len = strlen(s);//Выясняем длину строки
    if(s[0] != 0 && s[0] != ' ') //Если первый символ не пробел то мы счетчик кол-ва увеличиваем
        cnt = 1;
 //Далее в цикле до второго пробела или до конца строки
    for(i = 0; i < len && cnt < 2; i++)
        if(s[i] == ' ' && s[i+1] != ' ') //Если найден пробел
            ++cnt; //Увеличим счетчик
//Еще один цикл до конца строки с начала второго слова
    for(j = k = i; k < len; ++k)
    {
        c = s[k]; //Получаем символ строки
        if(c != ' ') //Сравниваем его с пробелом
            s[j++] = c; //И если это не пробел сохраняем его в строке
    }// Строка подожмется и уйдут пробелы начиная с третьего
    s[j] = 0; //После чего корректно закроем строку терминатором
    return &s[i]; //И вернем из функции.
}

// является ли данное слово перевертышем 
bool Palindrom(char s[])
{
//Это посимвольное сравнение 7-и символьной строки на перевертыша
    if (s[0] + s[1] + s[2]+ s[3] == s[4] + s[5] + s[6]+ s[7]) return true; else return false;

}

//Главная функция
int main()
{
   char s[255]; //Определим переменку для строки
   cout << "Enter string: "; //Попросим ввести
   gets(s); //И таки введем
   cout << "Deleted ! the first word: " << DeleteWord(s)<<endl; //Выполним первую функцию, выведем результат
   cout << "Deleted the first word and all space: " << DeleteSpace(s)<<endl;;// ТО же самое с второй
   cout << "Palindrom boolean: "<<Palindrom(s)<<endl;  // И проверим на палиндромность
   _getch();// После чего задержим консоль для любования результатом.
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите закомментировать каждую строку privod Общие вопросы C/C++ 3 02.10.2014 16:49
Дельфи(помогите пожалуйста закомментировать строки) jula939393 Помощь студентам 2 17.04.2014 10:02
помогите решить задачу sverhuVniz Паскаль, Turbo Pascal, PascalABC.NET 4 25.10.2008 22:17