Форум: Форум C++Разное
Новые темы: 00
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Слова в обратном порядке.
 
 автор: Min_Fin   (24.10.2009 в 08:31)   письмо автору
 
 

Здравствуте, люди добрые.
Сижу пытаюсь разобраться, но так и не выходит...В общем вот текст задачи: Задан текст, состоящий из слов, записанных через запятые и/или пробел, и заканчивающийся точкой. Длина текста не больше 100 символов, могут быть использованы любые символы. Словом считается последовательность символов, не содержащая пробел. Сформировать новую строку, в которой слова будут следовать в обратном порядке.Получить массив результатов умножения цифровых слов на –1, если соответствующая цифра меньше 0.

Пока что хочу разобратся с записью слов в обратном порядке. Как это реализовать? Помогите, пожалуйста.

  Ответить  
 
 автор: cheops   (24.10.2009 в 12:57)   письмо автору
 
   для: Min_Fin   (24.10.2009 в 08:31)
 

Можно отталкиваться от следующей программы
#include <iostream>
using namespace std;

int main()
{
  char phrase[] = "Словом считается последовательность символов, не содержащая пробел.";
  int i, j;
  // Количество символов в строке
  int len = strlen(phrase);
  // Выделяем память под результат
  char *str = new char[len];

  int start = 0;
  for(i = 0; i < len; i++)
  {
    // Найден пробел или конец строки
    if(phrase[i] == ' ' || i == len - 1)
    {
      // Переворачиваем слово и записываем в str
      for(j = i - 1; j >= start; j--)
      {
        str[j] = phrase[start + i - 1 - j];
      }
      // Записываем последний символ без изменения
      str[i] = phrase[i];
      start = i + 1;
    }
  }

  // Старая строка
  cout << phrase << endl;
  // Новая строка
  cout << str << endl;

  // Освобождаем выделенную ранее память
  delete [] str;

  return 0;
}

  Ответить  
 
 автор: Min_Fin   (25.10.2009 в 07:31)   письмо автору
 
   для: cheops   (24.10.2009 в 12:57)
 

Спасибо. Попробую.

  Ответить  
 
 автор: WolfLite   (26.10.2009 в 21:59)   письмо автору
 
   для: Min_Fin   (24.10.2009 в 08:31)
 

//reverstr.cpp
//переворачивает строку
#include <iostream>
#include <string> //для strlen()
#include <locale>

using namespace std;


int main()
{
setlocale(LC_ALL,"rus"); // локализация

// объявление функции revrsit
void reversit(char []);

const int MAX = 80; //размер массива
char str [MAX]; //строка

strcpy(str,"Привет!");
cout << "Исходная строка - " << str << endl;
reversit(str); //перевернуть строку
cout << "Перевернутая строка: "; //и вывести ее
cout << str << endl;

cout << "\nВведите строку: "; //получить строку от
cin.get(str,MAX);
reversit(str); //перевернуть строку
cout <<"Перевернутая строка: "; //и вывести ее
cout <<str <<endl;
system("PAUSE");
return 0;
}
//---------------------------------------------------------
//reversit()
//функция, переворачивающая строку, переданную в аргументе
void reversit(char s [])
{
int len = strlen(s); //найти длину строки
for(int j = 0;j <len/2;j++) //поменять все
//символы из первой половины
{
char temp = s [j]; //на символы
s [j] = s [len-j-1]; //из второй половины
s [len-j-1] = temp;
}
}

  Ответить  
 
 автор: Min_Fin   (01.11.2009 в 07:44)   письмо автору
 
   для: WolfLite   (26.10.2009 в 21:59)
 

Это зеркальное отображение...Но спасибо. Занят был..Сейчас поразбираюсь с этим.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования