Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
1

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

02.04.2012, 22:50. Показов 6967. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте нужна помощь в корректировке кода, задача ниже, я сам понял как найти ВА и вывести сообщение , что ВА есть или нет!!! помогите пожалуйста, чтобы выполнялось требование задачи!! никак не могу разобраться.
задача:
Дана строка символов. Признак конца строки - символ \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 минут
кто понимает , хотя бы наводку дайте ...) подскажите)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2012, 22:50
Ответы с готовыми решениями:

Вывести слова, заканчивающиеся слогом "ба", и длину каждого из этих слов
Здравствуйте. Очень прошу, подскажите, пожалуйста! Есть задание: дана строка символов. Признак...

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

Подсчитать количество слов в строке и вывести длину каждого слова
Помогите пожалуйста! Я не могу додумать как нужно доделать программу и почему она не правильно...

Символьные массивы: посчитать количество слов в строке и вывести длину каждого слова
Помогите написать программу, условие такое: посчитайте количество слов в строке и выведите длину...

7
2554 / 1319 / 178
Регистрация: 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;
}
1
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();   /* чтение символа без отображения его на экране */
     }
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.04.2012, 23:16 4
Цитата Сообщение от shedex Посмотреть сообщение
можно более базовым с++
Начнем с того, что это не С++, а Си.
Тут расписаны используемые мной функции.
1
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
02.04.2012, 23:22  [ТС] 5
извините, мне нужно именно с++, спасибо за помощь, ну в моем первом посте, указан код программы, а там,если я не ошибаюсь с++,
0
163 / 163 / 22
Регистрация: 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;
}
0
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ый пост и следующий мой пост
0
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; // начало следующего слова сразу после пробела
        }
 
    }
 
}
1
03.04.2012, 00:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2012, 00:14
Помогаю со студенческими работами здесь

Дана строка, состоящей из слов, слова отделены друг от друга одним пробелом. Определить длину каждого слова
Дана строка, состоящей из слов, слова отделены друг от друга одним пробелом. Определить длину...

В тексте 4 слова. Определить длину каждого слов
Лабораторная работа в вузе. Необходимо после ввода 4 слов подсчитать длину каждого слова. и...

Ввести текст, закрасить слова синим цветом, и вывести длину каждого слова
Собственно дано задание: ввести текст (буду считывать в буфер через DOS ф-ию 0ah). Нужно слова...

Посчитать количество слов в строке и определить длину каждого слова
Здравствуйте))) Помогите доделать задачку, она у меня худо-бедно считает кол-во слов во всей...

Работа с файлом. Вывести на экран количество таких слов и вывести слова, имеющих длину менее 3х букв
помогите

Разбить строку на слова и вывести количество повторений этих слов в строке
Слова разделены пробелами


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru