|
|
|
| Здравствуте, люди добрые.
Сижу пытаюсь разобраться, но так и не выходит...В общем вот текст задачи: Задан текст, состоящий из слов, записанных через запятые и/или пробел, и заканчивающийся точкой. Длина текста не больше 100 символов, могут быть использованы любые символы. Словом считается последовательность символов, не содержащая пробел. Сформировать новую строку, в которой слова будут следовать в обратном порядке.Получить массив результатов умножения цифровых слов на –1, если соответствующая цифра меньше 0.
Пока что хочу разобратся с записью слов в обратном порядке. Как это реализовать? Помогите, пожалуйста. | |
|
|
|
|
|
|
|
для: 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;
} |
| |
|
|
|
|
|
|
|
для: cheops
(24.10.2009 в 12:57)
| | Спасибо. Попробую. | |
|
|
|
|
|
|
|
для: 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;
}
} | |
|
|
|
|
|
|
|
для: WolfLite
(26.10.2009 в 21:59)
| | Это зеркальное отображение...Но спасибо. Занят был..Сейчас поразбираюсь с этим. | |
|
|
|