3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
1

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

02.11.2015, 15:12. Показов 10317. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2015, 15:12
Ответы с готовыми решениями:

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

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

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

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

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

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

Где ты тут увидал подсчёт слов, я не понимаю.
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 15:40  [ТС] 3
Все равно, ни как не пойму
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 4
Проанализируйте очень не спеша на бумаге каждый шаг программы и станет ясно.

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

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  [ТС] 5
Да было бы просто, если бы мне нужно было посчитать количество слов. Так мне нужно посчитать количество слов у которых первый и последний символы одинаковые. Например:
Happh new yeary
2 слова
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:06 6
EGKR,
в
Цитата Сообщение от EGKR Посмотреть сообщение
Happh new yeary
одно слово символы H и h в таблице 72 и 104 сответственно
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:15  [ТС] 7
То ли ты меня не понял, то ли я тебя. Тогда повторюсь. Прошу помочь с заданием
Вывести слова у которых первый и последний символы совпадают.
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 8
Цитата Сообщение от 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
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:22 9
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 10
простой вопрос, считать ли совпадающими А и а?
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:29  [ТС] 11
Скорее всего да, но в задании не было заметок по этому поводу.

Добавлено через 14 секунд
[Error] 'gets_s' was not declared in this scope
0
Модератор
Эксперт CЭксперт С++
5150 / 2330 / 339
Регистрация: 20.02.2013
Сообщений: 5,720
Записей в блоге: 20
02.11.2015, 16:30 12
Лучший ответ Сообщение было отмечено 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
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:31 13
EGKR,
Цитата Сообщение от EGKR Посмотреть сообщение
'gets_s' was not declared in this scope
что это?
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:33  [ТС] 14
при запуске выдало ошибку
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
02.11.2015, 16:36 15
EGKR, у меня нет get_s это по ходу secure под визуал
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
02.11.2015, 16:39  [ТС] 16
Вывести слова у которых первый и последний символы совпадают

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

Добавлено через 15 секунд
Наверное) спасибо за помощь!
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
02.11.2015, 16:45 20
'gets_s' was not declared in this scope - это действительно под VisualStudio, пишите просто gets
Цитата Сообщение от EGKR Посмотреть сообщение
все равно не так
А что не так? Три слова начинаются и заканчиваются на одну букву (text ,test, tat)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2015, 16:45
Помогаю со студенческими работами здесь

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

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

Определить количество слов, у которых первый и последний символы совпадают между собой
Определить количество слов, у которых первый и последний символы совпадают между собой Почему не...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru