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

Вывести слова и длину каждого из этих слов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
shedex
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
02.04.2012, 22:50     Вывести слова и длину каждого из этих слов #1
Здравствуйте нужна помощь в корректировке кода, задача ниже, я сам понял как найти ВА и вывести сообщение , что ВА есть или нет!!! помогите пожалуйста, чтобы выполнялось требование задачи!! никак не могу разобраться.
задача:
Дана строка символов. Признак конца строки - символ \n (перевод строки). Строка состоит из слов, разделенных пробелами. Вывести : слова,заканчивающиеся слогом "ВА" и длину каждого из этих слов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
main()
{
char s;        // текущий символ текста
char prs;      // предыдущий символ
short net = 1; // признак, имеется ли "ВА" в тексте
               // net = 1, "ВА" есть
               // net = 0, "ВА" нет
printf ("\nВведите текст.\n");
s = getchar(); // чтение первого символа
if (s != '\n')
{ do
{ prs = s; s = getchar();
if (prs == 'В' && s == 'А') net = 0;
}
while (s != \n');
}
if (net) printf ("В тексте нет 'ВА'.\n");
else printf ("В тексте есть 'ВА'.\n");
}
Добавлено через 9 минут
в тот ли раздел я написал? если в тот , заранее спасибо, за помощь

Добавлено через 50 минут
кто понимает , хотя бы наводку дайте ...) подскажите)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 22:50     Вывести слова и длину каждого из этих слов
Посмотрите здесь:

C++ Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину.
Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова. C++
Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова. C++
Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. C++
в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.04.2012, 23:01     Вывести слова и длину каждого из этих слов #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
#define DELIM " ,.!;\'\"?"
 
int main()
{
    char str[] = "asdBA asdba asdasdBA";
    char end[] = "BA";
    char* ptr = strtok(str, DELIM);
    while(ptr != NULL)
    {
        if(strlen(ptr) >= strlen(end))
            if(strcmp(ptr + strlen(ptr) - strlen(end), end) == 0)
                printf("%s - %d\n", ptr, strlen(ptr));
        ptr = strtok(NULL, DELIM);
    }
    return 0;
}
shedex
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
02.04.2012, 23:13  [ТС]     Вывести слова и длину каждого из этих слов #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
26
27
28
29
30
31
32
33
#include <stdio.h>
    #define  DLSTR  80     /* макс.длина строки */
 
    main()
     {  char str[DLSTR];   /* тек. строка */
         int i,j;                      /* индексы тек. символа в строке */
         int n,k;                    /* индексы перв. и посл. символов тек. слова
                                             в строке */
         int net_sl=1;           /* признак, что слов длиной до 5 симв. нет */
         printf ("\n\nВведите строку символов\n");
         gets(str);     /* ввод строки в массив str c заменой символа '\n'
                                 на признак конца строки '\0'  */
         printf ("Результат:\n");
         i=0;
         while (str[i]!='\0')
          {
             if (str[i]==' ')  i++;
             else
               { n=i;
                  do  i++;  while ((str[i]!=' ') && (str[i]!='\0'));
                  k=i;
                  if ( k-n < 5 )
                    { for (j=n; j<k; j++)
                          putchar(str[j]);
                       putchar(' ');
                       net_sl=0;
                    }
                }
           }
         if (net_sl)  printf ("Слов длиной до 5 символов нет.");
         printf ("\nДля завершения нажмите любую клавишу");
         getch();   /* чтение символа без отображения его на экране */
     }
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.04.2012, 23:16     Вывести слова и длину каждого из этих слов #4
Цитата Сообщение от shedex Посмотреть сообщение
можно более базовым с++
Начнем с того, что это не С++, а Си.
Тут расписаны используемые мной функции.
shedex
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
02.04.2012, 23:22  [ТС]     Вывести слова и длину каждого из этих слов #5
извините, мне нужно именно с++, спасибо за помощь, ну в моем первом посте, указан код программы, а там,если я не ошибаюсь с++,
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
02.04.2012, 23:27     Вывести слова и длину каждого из этих слов #6
Вот те С++

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
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#define forn(n0,i,n1) for(int i=n0; i<n1; i++)
 
using namespace std;
 
void input(string& s)
{
    int c;
    do
    {
        c = getchar();
        s += c;
    }
    while (c != '\n');
}
 
int main(int argc, char **argv)
{
    string s,buf;
    vector<string> v;
    input(s);
    forn(0,i,s.size())
    {
        if (s[i] == ' ' || s[i] == '\n')
        {
            if (buf.size() > 2)
                if (buf[buf.size()-1] == 'A' && buf[buf.size()-2] == 'B')
                    v.push_back(buf);
            buf.clear();
        }
        else
            buf += s[i];
    }
    if (buf.size() > 2)
                if (buf[buf.size()-1] == 'A' && buf[buf.size()-2] == 'B')
                    v.push_back(buf);
    forn(0,i,v.size())
        cout << v[i] << endl;
}
shedex
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
02.04.2012, 23:32  [ТС]     Вывести слова и длину каждого из этих слов #7
Цитата Сообщение от Algiz Посмотреть сообщение
Вот те С++

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
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#define forn(n0,i,n1) for(int i=n0; i<n1; i++)
 
using namespace std;
 
void input(string& s)
{
    int c;
    do
    {
        c = getchar();
        s += c;
    }
    while (c != '\n');
}
 
int main(int argc, char **argv)
{
    string s,buf;
    vector<string> v;
    input(s);
    forn(0,i,s.size())
    {
        if (s[i] == ' ' || s[i] == '\n')
        {
            if (buf.size() > 2)
                if (buf[buf.size()-1] == 'A' && buf[buf.size()-2] == 'B')
                    v.push_back(buf);
            buf.clear();
        }
        else
            buf += s[i];
    }
    if (buf.size() > 2)
                if (buf[buf.size()-1] == 'A' && buf[buf.size()-2] == 'B')
                    v.push_back(buf);
    forn(0,i,v.size())
        cout << v[i] << endl;
}
я писал ,что я новичок, и чужой код без комментариев крайне не понятен, мне нужен базовый примитивный с++, такой как в моих постах где я указал примеры, это 1ый пост и следующий мой пост
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2012, 00:14     Вывести слова и длину каждого из этих слов
Еще ссылки по теме:

C++ Узнать длину строки и длину каждого слова

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

Или воспользуйтесь поиском по форуму:
SerAlex
1 / 1 / 0
Регистрация: 02.04.2012
Сообщений: 3
03.04.2012, 00:14     Вывести слова и длину каждого из этих слов #8
Пример который ты привел написан на C. Вот работающая программа на сишке.

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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int main()
{
    char words[200]; // массив с вводимой строкой
    char word[40]; // вспомагательный массив для текущего слова
    int start = 0; // начало слова, предполагается что в начале строки не пробел
    int i;
    int wordLength; //
 
    gets(words); // читаем строку с консоли, читается все до перехода на новую
    // строку (\n)
    for (i = 0; i < strlen(words); i++) {
        if (isspace(words[i]) || i == strlen(words) - 1) { // если нашли пробел либо конец строки то выделяем слово
            if (i != strlen(words) - 1) // если конец строки последний символ не нужно заменять концом строки
                words[i] = '\0'; // если же нам попался пробел то заменяем его на симовол конца строки
            strcpy(word, words + start); // копируем текущее слово из words в word
            wordLength = strlen(word); // длинна слова вычисляется с помощью библиотечной функции
            if (wordLength >= 2) // если больше либо равно двум значит есть вероятность что подойдет под шаблон '%ВА'
                if (word[wordLength - 2] == 'B' && word[wordLength - 1] == 'A') {
                    // если два последний ВА то  выводим на екран слово и длинну строки
                    printf("Word: %15s length: %2d\n", word, strlen(word));
                }
            words[i] = ' '; // заменяем обратно символ конца строки на пробел (если его там небыло это уже не важно)
            word[0] = '\0'; // "обнуляем" наше текущее слово
            start = i + 1; // начало следующего слова сразу после пробела
        }
 
    }
 
}
Yandex
Объявления
03.04.2012, 00:14     Вывести слова и длину каждого из этих слов
Ответ Создать тему
Опции темы

Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru