Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 31

Расставить по очереди слова из цифр, из букв и смешанные.

17.11.2014, 10:58. Показов 3018. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Преобразовать строку так что бы сначала выводило слова состоящие только из цифр, потом только из букв, потом из букв и цифр
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2014, 10:58
Ответы с готовыми решениями:

Расставить слова по возрастанию количества букв
Пожалуйста помогите с задачей. Вводится текст, конец ввода F5. Расставить слова по возрастанию количества букв.

Расставить слова по убыванию количества букв
Вводится текст, конец ввода F3. Расставить слова по убыванию количества букв.

Как вывести слова из цифр в одну строку, а слова из букв в другую?
Условие задачи: Вводят строку слов. Необходимо найти слова, состоящие только из букв и только из цифр. Код написал, работает. Помогите...

27
Почетный модератор
12274 / 5341 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
17.11.2014, 14:15
Студворк — интернет-сервис помощи студентам
-THE_MASTER666-, у меня есть стойкое желание с учетом Ваших прошлых заслуг отправить Вас в перманентный бан.

Показывать какой Вы умный будете у себя на кухне. Здесь следуйте правилам форума.

Это последнее предупреждение.
0
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 31
17.11.2014, 14:29  [ТС]
Код который я написал по твоему совету ( без векторов)там пару проблемок, и почему нельзя написать using namespace std?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
17.11.2014, 14:39
Цитата Сообщение от Moggie Посмотреть сообщение
почему нельзя написать using namespace std?
Давно я не приводил этот темный мануал: using namespace std и std:: надоело смотреть!
0
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 31
17.11.2014, 20:43  [ТС]
У меня проверяет только 1-е слово, и определяет к какому типу оно относится, как проверять остальные слова

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
45
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cctype>
using namespace std;
int vibor(char *str, int n)
{
int d=0,f=0,w=0;
for (int i=0; i<n; i++)
if (isdigit(str[i]))
d++;
else
if (isalpha(str[i]))
f++;
if (d==n)
w=1;
else
if (f==n)
w=2;
else 
w=3;
 return w;}
 
 
int main()
{char s[256];
char s2[256];
char s3[256];
int b,q=0, i=0, j=0, k=0,n,a,m,x,y;
gets(s);
cin>>n;
a=strlen(s);
 
//сдесь должен быть цикл ?
 
do 
{
s2[i]=s[i];
i++;}
while (s[i]!=' ')
m=vibor(s2,i);
cout<<m;
 
    return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.11.2014, 21:46
Лучший ответ Сообщение было отмечено Moggie как решение

Решение

Хотел бы сразу указать на ошибку Распространенные ошибки
Заменил d на numberOfDigits, f на numberOfAlphas, w на result, n на len
Работа функции strtok http://www.cplusplus.com/refer... ?kw=strtok

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <cstring>
#include <cctype>
 
using namespace std;
 
 
int vibor(const char *str)
{
    unsigned int numberOfDigits = 0, numberOfAlphas = 0;
    const size_t len = strlen(str); // определяем размер строки
    for (unsigned int i=0; i < len; i++)
    {
        if (isdigit(str[i]))
            numberOfDigits++;
        else if (isalpha(str[i]))
            numberOfAlphas++;
    }
 
    int result = 0;
    if (numberOfDigits == len) // все символы - числа
        result = 1;
    else if (numberOfAlphas == len) // все символы - буквы
        result = 2;
    else
        result = 3;
 
    return result;
}
 
// принимает строку, возвращает количество пробелов в ней
int NumberOfSpaces(const char *str)
{
    int result = 0;
    const size_t len = strlen(str); // определяем размер строки
    for (unsigned int i=0; i < len; i++)
    {
        if (isspace(str[i]))
            result++;
    }
 
    return result;
}
 
int main()
{
    const size_t size = 256; // размер строк
    char str[size];
    do
    {
        cin.getline(str, sizeof(str)); // считать строку, но не длиннее максимального размера
    } while (strlen(str) == 0); // пока не ввели строку
 
    // для начала нужно узнать размер массива: количество пробелов + 1
    const int numberOfWords = NumberOfSpaces(str) + 1;
 
    // далее выделить память под этот массив
    char **words = new char*[numberOfWords]; // массив указателей на char*
    // каждому элементу массива тоже выделяем память
    for (int i=0; i < numberOfWords; i++)
        words[i] = new char[size];
 
    // разбить строку на слова и записать их в массив
    int index = 0; // индекс в массиве
    for (char *word = strtok(str, " "); word != NULL; word = strtok(NULL, " ")) // для С++11 nullptr
        strcpy(words[index++], word); // копируем в массив и увеличиваем индекс
 
    // выводим содержимое массива на экран с типами у слов
    for (int i=0; i < numberOfWords; i++)
        std::cout << vibor(words[i]) << " " << words[i] << std::endl;
 
    // сортировка массива, читать про пузырьковую сортировку
 
    // и не забываем освободить память
    for (int i=0; i < numberOfWords; i++)
        delete[] words[i];
    delete[] words;
}
Как видите, я и вам оставил место для доработки.
1
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 31
17.11.2014, 23:14  [ТС]
Единственое, что непонятно, щас попытаюсь разобраться
C++
1
2
3
4
// разбить строку на слова и записать их в массив
    int index = 0; // индекс в массиве
    for (char *word = strtok(str, " "); word != NULL; word = strtok(NULL, " ")) // для С++11 nullptr
        strcpy(words[index++], word); // копируем в массив и увеличиваем индекс
Добавлено через 8 минут
Такая сортировка может быть правильной?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            int q,y;
        char *c;
        for (j=0; j < numberOfWords; j++)
        for (int i=0; i < numberOfWords; i++)  {
        q=vibor(words[i]);
        y=vibor(words[i+1]);
        if (q>y){
        c=words[i]; 
        words[i]=words[i+1];
        words[i+1]=c;}}
        
        
          for (int i=0; i < numberOfWords; i++)  
        cout<<words[i];
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.11.2014, 01:05
Цитата Сообщение от Moggie Посмотреть сообщение
c=words[i];
words[i]=words[i+1];
words[i+1]=c;}}
Нет, к сожалению С-строки не поддерживают простого присваивания. Вам следует использовать функцию strcpy, но алгоритм правильный.
Я бы советовал придерживаться отступов в едином стиле, это делает код нагляднее.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// сортировка массива, читать про пузырьковую сортировку
for (int j=0; j < numberOfWords-1; j++)
    for (int i=j+1; i < numberOfWords; i++)
    {
        int q=vibor(words[j]);
        int y=vibor(words[i]);
        if (q > y)
        {
            char tmp[size];
            strcpy(tmp, words[j]);
            strcpy(words[j], words[i]);
            strcpy(words[i], tmp);
        }
    }
1
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 31
18.11.2014, 08:22  [ТС]
Спасибо большое)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2014, 08:22

Расставить символы по алфавиту. Удалить из строки слова в которых больше 2 букв "а"
Здравствуйте,помогите пожалуйста с решением данной задачи) 1)Дана последовательность латинских букв длиной 18 символов. Расставить их...

Напечатать все слова, состоящие из одинакового количества букв и цифр
напечатать все слова состоящие из одинакового количества букв и цифр

Найти все слова,в которых букв меньше чем цифр
Дана строка, состоящая из слов, разделенных пробелами. Каждое слово состоит из цифр и букв. Найти все слова, в которых букв меньше чем цифр...

Множества.Дан текст из строчных латинских букв и цифр. Определить чего – букв или цифр – больше в этом тексте
Переделать код,чтобы там были множества.Или написать новый код с множествами PROGRAM pr1; VAR S:STRING; I,K,L:INTEGER; BEGIN ...

Заменить по очереди три слова test по очереди тремя строками из переменной Arr.Text
Есть 3 строки в переменной Arr.Text (переменная типа TStringList) Есть 3 слова test в Memo1.Text Цель: Заменить по-очереди три...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru