Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/55: Рейтинг темы: голосов - 55, средняя оценка - 4.80
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94

Вывести слова у которых первый и последний символы совпадают

02.11.2015, 15:12. Показов 11939. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Странно считает слова. Помогите найти ошибку
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main( )
{
    char text[80];
    int size,n;
    int first_symbol = 0;
    int sum = 0;
    cout<<"Vvedite stroku: "<<endl;
    cin.get(text, 80);
    n=strlen(text);
    for (int i = 0; i < n; i++)
    {
        if ((text[i]==' ') || (i == (n-1)) || (text[i]=='\n'))
        {
            if (text[first_symbol] == text[i-1])
                sum++;
            first_symbol = i+1;
        }
    }
    cout<<"Kolichestvo slov: "<<sum<<endl;
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2015, 15:12
Ответы с готовыми решениями:

Найти слова, первый и последний символы которых совпадают, и вывести эти слова и их количество
Дана строка длиной n символов, содержащая слова, т.е. группы символов, разделенные пробелами и другими разделителями (знаками препинания)....

Найти в строке слова, первый и последний символы которых совпадают, и вывести эти слова и их количество
Дана строка длиной n символов, содержащая слова, т.е. группы символов, разделенные пробелами и другими разделителями (знаками...

Определить количество слов, у которых первый и последний символы совпадают
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; using namespace std; int num_symbol(string &amp;_str){ int...

22
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.11.2015, 15:31
Цитата Сообщение от EGKR Посмотреть сообщение
Странно считает слова.
Ничего не странно. Как написал, так считает:

14 строка: ты в цикле for проходишь по всем символам строки (строки, а не слова!)
16 строка: если i - символ пробела или последний символ строки или символ перехода на новую строку, то
18 строка: сравнить первый символ строки и символ, предшествующий найденому и если они одинаковы, то
19 строка: увеличить счётчик sum
20 строка: затем увеличить на единицу first_symbol

Где ты тут увидал подсчёт слов, я не понимаю.
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 15:40  [ТС]
Все равно, ни как не пойму
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
#include <iostream>
#include <string.h>
using namespace std;
 
int main( )
{
    char text[80];
    int k=0;
    int first_symbol = 0;
    int sum = 0;
    puts("Vvedyte stroku: ");
    gets(text);
    n=strlen(text);
    for (int i = 1; i < n; i++)
    {
        if ((text[i]==' '))
        {
            if (text[first_symbol] == text[i-1])
                sum++;
            first_symbol = i+1;
        }
    }
    printf("chislo slov ravno %d\n", sum+1);
    return 0;
}
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
02.11.2015, 15:53
Проанализируйте очень не спеша на бумаге каждый шаг программы и станет ясно.

Вариант, который работает, но не учитывает табуляцию между словами.
А вообще много чего можно учитывать. Зависит от того, на сколько вы дотошны.

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
#include <iostream>
#include <string.h>
using namespace std;
 
int main()
{
    char text[80];
    int k = 0;
    int first_symbol = 0;
    int sum = 0;
    int n = 0;
    puts("Vvedyte stroku: ");
    gets_s(text);
    n = strlen(text);
    for (int i = 1; i < n; i++)
    {
        if ((text[i] == ' '))
        {
            if (text[i - 1] != ' ')
                sum++;
            first_symbol = i + 1;
        }
    }
    printf("chislo slov ravno %d\n", sum + 1);
    system("pause");
    return 0;
}
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:02  [ТС]
Да было бы просто, если бы мне нужно было посчитать количество слов. Так мне нужно посчитать количество слов у которых первый и последний символы одинаковые. Например:
Happh new yeary
2 слова
0
 Аватар для anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:06
EGKR,
в
Цитата Сообщение от EGKR Посмотреть сообщение
Happh new yeary
одно слово символы H и h в таблице 72 и 104 сответственно
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:15  [ТС]
То ли ты меня не понял, то ли я тебя. Тогда повторюсь. Прошу помочь с заданием
Вывести слова у которых первый и последний символы совпадают.
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main( )
{
    char text[80];
    int size,n;
    int first_symbol = 0;
    int sum = 0;
    cout<<"Vvedite stroku: "<<endl;
    cin.get(text, 80);
    n=strlen(text);
    for (int i = 0; i < n; i++)
    {
        if ((text[i]==' ') || (i == (n-1)) || (text[i]=='\n'))
        {
            if (text[first_symbol] == text[i-1])
                sum++;
            first_symbol = i+1;
        }
    }
    cout<<"Kolichestvo slov: "<<sum<<endl;
    return 0;
}
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
02.11.2015, 16:19
Цитата Сообщение от EGKR Посмотреть сообщение
Так мне нужно посчитать количество слов у которых первый и последний символы одинаковые
И верно. Я плохо прочел заголовок. Вернее вообще не читал.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string.h>
using namespace std;
 
int main()
{
    char text[80];
    int k = 0;
    int sum = 0;
    int n = 0;
    puts("Vvedyte stroku: ");
    gets_s(text);
    n = strlen(text);
    char prev_char = text[0];
 
    for (int i = 1; i < n; i++)
    {
        if ((text[i] == ' '))
        {
            if (text[i - 1] == prev_char && prev_char!=' ')
                sum++;
            prev_char = text[i - 1];
        }
    }
 
    printf("chislo slov ravno %d\n", sum + 1);
    system("pause");
    return 0;
}

Опять же, надо учитывать лидирующие табуляции и прочее. Но в целом работает.
0
 Аватар для anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:22
EGKR,
или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
using namespace std;
 
int main()
{
    char* ch = new char[1000];
    cin.getline(ch, 1000);
    int count = 0;
    for (char*ptr = strtok(ch, ",. ;!?"); ptr; ptr = strtok(NULL, ",. ;!?")) {
        if (ptr[0] == *(ptr + strlen(ptr) - 1)){
            count++;
        }
        cout << ptr[0]<<" "<< *(ptr+ strlen(ptr)-1) <<endl;
    }
    cout << count << endl;
 
        
    system("pause");
}
0
76 / 76 / 32
Регистрация: 14.04.2014
Сообщений: 408
02.11.2015, 16:26
простой вопрос, считать ли совпадающими А и а?
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:29  [ТС]
Скорее всего да, но в задании не было заметок по этому поводу.

Добавлено через 14 секунд
[Error] 'gets_s' was not declared in this scope
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.11.2015, 16:30
Лучший ответ Сообщение было отмечено EGKR как решение

Решение

EGKR, вот:
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>
#include <cstring>
 
int main( )
{
    char text[80];
    int cstr_size = 0;
    int word_first_char = 0;
    int word_last_char = 0;
    int sum = 0;
    std::cout << "Please enter a string: ";
    std::cin.get(text, 80);
    cstr_size = strlen(text);
 
    int i = 0;
    while (i < cstr_size)
    {
        if (text[i] == ' ' || text[i] == '.' || text[i] == '!' || text[i] == '?')
        {
            if (i)
                word_last_char = i-1;
            else
                word_last_char = i;
 
            if (text[word_first_char] == text[word_last_char])
                sum++;
 
            word_first_char = i+1;
        }
        ++i;
    }
 
    if (i)
        word_last_char = i-1;
    else
        word_last_char = i;
 
    if (text[word_first_char] == text[word_last_char])
        sum++;
 
    std::cout << "\nThe number of the words, that first character equals to last is: " << sum;
 
    return 0;
}
Миниатюры
Вывести слова у которых первый и последний символы совпадают  
1
 Аватар для anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:31
EGKR,
Цитата Сообщение от EGKR Посмотреть сообщение
'gets_s' was not declared in this scope
что это?
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:33  [ТС]
при запуске выдало ошибку
0
 Аватар для anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:36
EGKR, у меня нет get_s это по ходу secure под визуал
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:39  [ТС]

все равно не так
0
 Аватар для anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:41
EGKR, А чего же не так? три слова-три совпадения
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.11.2015, 16:43
Цитата Сообщение от EGKR Посмотреть сообщение
все равно не так
"Всё не то и всё не так, когда твоя девушка больна... На вечеринку один..." (с)
типа того?
1
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:44  [ТС]
Точно, все спасибо за помощь!

Добавлено через 15 секунд
Наверное) спасибо за помощь!
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
02.11.2015, 16:45
'gets_s' was not declared in this scope - это действительно под VisualStudio, пишите просто gets
Цитата Сообщение от EGKR Посмотреть сообщение
все равно не так
А что не так? Три слова начинаются и заканчиваются на одну букву (text ,test, tat)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2015, 16:45
Помогаю со студенческими работами здесь

Определить количество слов текста, в которых первый и последний символы совпадают
Написать программу, которая: • Выводит текст на экран дисплея; • По нажатию произвольной клавиши поочередно выделяет каждое из слов...

Найти количество слов, у которых первый и последний символы совпадают между собой
Помогите пожалуйста написать программу, никак разобраться не могу(

Найти количество слов, у которых первый и последний символы совпадают между собой
Дан текст. а) Найти количество слов, начинающихся с буквы б; б) Найти количество слов, у которых первый и последний символы совпадают между...

Определить количество слов, у которых первый и последний символы совпадают между собой
Определить количество слов, у которых первый и последний символы совпадают между собой Почему не работает: #include&lt;iostream&gt; ...

Найти количество слов, у которых первый и последний символы совпадают между собой.
Даны натуральное число n, символы s1,...,sn. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru