Форум программистов, компьютерный форум CyberForum.ru

Строка: удалить последнее слово из каждого предложения. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из положительных значений двух целочисленных массивов различной размерности сформировать общий массив http://www.cyberforum.ru/cpp-beginners/thread546647.html
Из положительных значений двух целочисленных массивов различной размерно- сти сформировать общий массив. Найти среднее арифметическое элементов, рас- положенных в массиве после последнего совершенного числа. Создать функции для вычисления среднего значения и определения совершенного числа. Добавлено через 1 час 11 минут напишите пожалуйста на начальном уровне,уровне студента 1 курса)
C++ Шифрование DES: на выходе получаются каждый раз новые результаты с одинаковыми входными данными Здравствуйте. Попробовал сегодня реализовать хоть как-то шифрование DES. Накодил кучу корявого кода. В итоге на выходе получаются каждый раз новые результаты с одинаковыми входными данными. Наверное где-то с выделением памяти накосячил и оно друг на друга налазит. Помогите найти ошибку, пожалуйста :) #include <iostream> int sj={ { {14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7},... http://www.cyberforum.ru/cpp-beginners/thread546591.html
Нужна помощь в создании алгоритма C++
Имеется файл (архив), который содержит в себе древо папок и файлов. Для каждого объекта (файла/папки) есть структура с данными: typedef struct tag_HTREEITEMINFO { UINT nNode; UINT tStart; UINT nParent; UINT nNull1; UINT nDataStart; UINT nDataSize1;
C++ Перегрузка операторов(строки).
Задание:Описать класс, три объекта с1 с2 с3, используя разные конструкторы: вычесть из объекта с2 символ '5', сложить объекты с2 и с3, результат в с1:результат действий вывести на экран. описание класса: строки:значение строки(цифры), конструктор по умолчанию, конструктор с параметрами, конструктор копирования, метод вычисления длины строки, метод вывода строки, перегрузка операторов сложения,...
C++ Использование передачи параметра (массива) через указатель http://www.cyberforum.ru/cpp-beginners/thread546580.html
#include <iostream.h> #include <stdlib.h> #include <conio.h> int n; int mas; int fun1(int) ; int main() { //clrscr(); cout<<"Vvedite razmer posledovatel'nosti"<<endl; cin>>n;
C++ Как сделать, чтобы калькулятор реагировал на унарный минус подскажите, как сделать, чтобы этот калькулятор реагировал на унарный минус? int prior(char c) { int a; if (c=='+' || c=='-') return a=0; if (c=='*' || c=='/') return a=1; if (c=='^') return a=2; else return a=3; } double calc(char *str, int left, int right) подробнее

Показать сообщение отдельно
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
13.04.2012, 17:31     Строка: удалить последнее слово из каждого предложения.
1. Уважаемай GHOST12, с указателем в вашем примере не работает потому что, он указывает на
константное значение строки в памяти. Если знаете, то стандартн. функции strtok, strcspn тоже
не работают с указателями, которым присваевают адрес константного значения в памяти.

2. Размещаю варианты кода в которых все работает с указателем:

Вариант 1:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(void)
{
     static char line[256] = "the question is to be or not to be? parameter is like a variable.";
     lword(line); printf("%s\n",line);
}
 
void lword(char* psz)
{
    for (int i = 0; psz[i] != '\0'; i++)
        if (psz[i] == '.' || psz[i] == '?' || psz[i] == '!')
        {
            int pos = i;
            while ((psz[pos] != ' ') && (pos >= 0)) pos--;
            for (int n = pos; psz[n] != '\0'; n++)
                psz[n] = psz[n+(i-pos)];
        }
}
Вариант 2:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    char* psz = new char[256];
    strcpy(psz,"the question is to be or not to be? parameter is like a variable.");
 
    for (int i = 0; psz[i] != '\0'; i++)
        if (psz[i] == '.' || psz[i] == '?' || psz[i] == '!')
        {
            int pos = i;
            while ((psz[pos] != ' ') && (pos >= 0)) pos--;
            for (int n = pos; psz[n] != '\0'; n++)
                psz[n] = psz[n+(i-pos)];
        }
 
     printf("%s\n",psz);
 
Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru