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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2011, 11:03   #1
Sobaka_ru
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 44
По умолчанию TrimRight C++

Описать процедуру TrimRightC(S,C),удаляющую в строке S конечные символы,совпадающие с символом С. Строка S является входным и выходным параметром. Дан символ С и пять строк. Используя процедуру TrimRight,преобразовать данные строки
Sobaka_ru вне форума Ответить с цитированием
Старый 28.11.2011, 12:50   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
string TrimRightC(string S, char C)
{
    int i = S.length() - 1;
    while (S[i] == C)
        S = S.substr(0, i--);
    return S;
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 28.11.2011, 14:22   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Код:
std::string TrimRightC(const std::string& s, char ch)
{
	return s.substr(0, s.find_last_not_of(ch) + 1);
}
Rififi вне форума Ответить с цитированием
Старый 05.12.2011, 09:35   #4
Sobaka_ru
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 44
По умолчанию

Вот аналогичный код под функцию TrimRight:
Код:
#include "stdafx.h"
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <cstring>
using namespace std;

const int N = 80;
//==================================
void TrimRightC(char S[][N], char C)
{
 for(int i=0; i<5; i++)
  cout << S[i] << "\n";

 cout << "\n\n";

 for(int i=0; i<5; i++)
 {
  int j = strlen(S[i]) - 1;
  if(S[i][j] == C)
   S[i][j] = '\0';
 }

 for(int i=0; i<5; i++)
  cout << S[i] << "\n";
}
//==================================
int main()
{
 char S[][N] = 
 {
  "peace",
  "bee",
  "bicycle",
  "beach",
  "baran"
 };

 TrimRightC(S, 'e');
	
 _getch();	
 return 0;
}
Как сделать под TrimLeft?? И ваще я правильно сделал???
Sobaka_ru вне форума Ответить с цитированием
Старый 05.12.2011, 14:54   #5
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Sobaka_ru Посмотреть сообщение
Описать процедуру TrimRightC(S,C),удаляющую в строке S конечные символы,совпадающие с символом С. Строка S является входным и выходным параметром. Дан символ С и пять строк. Используя процедуру TrimRight,преобразовать данные строки
Как я понимаю, вам предлагается написать такую функцию для символьных массивов.

Выглядеть она может следующим образом

Код:
char * TrimRight( char *s, char c )
{
   char *p = strrchr( s, c );
   if ( p != NULL )
   {
      while( p != s && *( p - 1 ) == c ) --p;
      *p = '\0';
   }

   return ( s );
}
В этом коде функция strrchr - это стандартная функция из заголовочного файла <string.h> (если рассматривать язык С), которая ищет последнее вхождение заданного символа в строке. В С++ она объявлена в заголовочном файле <cstring>
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


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