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

длинное слово - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести скалярное произведение векторов. http://www.cyberforum.ru/cpp-beginners/thread407805.html
Даны векторы j(7) и k(8). Если наименьший элемент вектора k больше наибольшего элемента вектора k, то поменять их местами и вывести векторы, иначе вывести скалярное произведение векторов.
C++ Inline-метод Как можно декларировать inline-метод класса не используя ключевое слово inline?? http://www.cyberforum.ru/cpp-beginners/thread407803.html
C++ Программирование с использованием абстрактных типов данных
Уважаемые участники форума, помогите, пожалуйста, с написанием программ на С++. В задачах следует, помимо перечисленного в условии, определить еще необходимые конструкторы и деструкторы, возможно оператор(ы) присваивания для создаваемых типов и написать программу, иллюстрирующую работу с созданным типом. Задача 1. Определить класс "очередь символов", операции постановки в очередь и выборки ...
Задача по строкам C++ C++
Разработать программу , позволяющую добавлять данные структур с указанными полями в массив, просматривать массивы, а также найти средний балл студента с введенной фамилией.
C++ Как вывести массив? http://www.cyberforum.ru/cpp-beginners/thread407800.html
class Pirma_klase{ public: void isvesti_teksta(double JD); double skaicioti_jdn(); double JD; }; void Pirma_klase::isvesti_teksta(double JDN){ cout.setf(ios::fixed,ios::floatfield);
C++ Задачи по Функциям С++ Помогите с заданиями. Очень нужно... 1) Написать функцию, которая выводит на экран строку заданной длины из заданных символов. 2) Даны два случайно заполненных массива. Написать функцию, входными параметрами которой являются эти массивы, а выходными параметрами являются два других массива, в одном из которых содержаться отрицательные числа, а в другом – неотрицательные. 3) Написать функцию,... подробнее

Показать сообщение отдельно
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
15.12.2011, 07:23     длинное слово
у меня вот так получилось. каждую строчку прокомментировал. думаю все должно быть понятно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<iostream>
using std::cout;
using std::endl;
 
#include <cstring>
 
#include<iostream>
using std::cout;
int main() {
    const int arraySize = 486;
    int realStringLength;
    int counter = 0, longestWord = 0;
 
    char s[arraySize] = "So she was considering in her own mind, as well as she could, for the hot day made her feel very sleepy and stupid,  whether  the  pleasure  of making a daisy-chain would be worth the trouble of getting up and  picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her";
    char maxWord[100];
 
    //работает с реальной длиной предложения
    realStringLength = strlen(s);
 
    //начинаем с конца предложения и двигаемся пока не достигнем начала предложения 
    //или текщее длинное слово больше чем остаток символов в строке.
    for (int i = realStringLength - 1; i > longestWord && i >= 0; --i) {
        if (s[i] == ' ' || i == realStringLength - 1) { //если пробел или только начинаем проверять предложение
            if (s[i - 1] == 'y') { //если последняя буква слова равна 'y'
                while(s[i-1]!=' '){ //пока слово не кончилось
                    counter++;      //считаем символы
                    --i;
                }
                if(counter > longestWord){  //если текущее слово длиннее того что уже было 
                    for(int j = 0; j < counter; ++j){ //записываем это слово в массив
                        maxWord[j]=s[i+j];
                    }
                    maxWord[counter] = '\0'; //закрываем массив char
                    longestWord = counter;   //запоминаем максимальную длину
                }
            }
            counter = 0;  //обнуляем счетчик для повторного использования
        }
    }
 
    cout << "Longest word :: " << maxWord << endl;
    cout << "World length :: " << longestWord << endl;
    return 0;
}
 
Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru