-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
1

Вывести только те слова строки, в которых есть и буквы и цифры

12.09.2017, 17:13. Показов 5771. Ответов 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
43
44
#include <stdio.h>
#include <iomanip>
using namespace std;
int hasSymbolz(char* path,char r) {
     char SYMBOLZ[] = "1234567890";
      r = 0; //проверка на цифру
      for (int i = 0; path[i]; ++i) {
          if (strchr(SYMBOLZ, path[i]) != 0)
              r++;
      }
          if (r > 0)
              return r;
          
      }
 
void main()
{
    setlocale(LC_ALL, "");
    srand(time(0));
    char temp[100] = {}, Array[] = { "qwertyuiopasdfghjklzxcvbnm" }, A[100] = {};
    char * path, o = 0; int y;//можно ли как-то заменить инициализацию Array 
    char r[12] = " ,./!?;:"\'";
    SetConsoleCP(1251);
    cin.getline(temp, 100, '\n');
    SetConsoleCP(866);
    path = strtok(temp, r);
    while (path != NULL){
        if (hasSymbolz(path, o) != 0 && strspn(path, Array)!=0)//это условие тоже хотелось бы улучшить
            //если в слове есть цифры и есть буквы
         y = hasSymbolz(path, o);//ко-во цифр
        int n = strlen(path);//длина текущего слова
        if (strspn(path, Array) == (n - y)){//эта функция возвращает индекс первого не совпадающего символа
            //есле в слове 
 
            strcat(strcat(A, path), " ");//соединяю
        }
        
            path = strtok(NULL, r);
        }
 
        cout << A;
    
    system("pause");
}
пожалуйста кто знает помогите)))

Добавлено через 15 минут
хотя есть ода еще проблемка
если сначала цифры потом буквы не выводит слово
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2017, 17:13
Ответы с готовыми решениями:

Прочитать текст из файла и вывести в другой файл только те строки, в которых есть слова, начинающиеся с буквы А
Прочитать текст из файла и вывести в другой файл только те строки, в которых есть слова,...

Прочитать текст из файла и вывести в другой файл только те строки, в которых есть слова, начинающиеся с буквы М
Прочитать текст из файла и вывести в другой файл только те строки, в которых есть слова,...

Ввести строку, ввести слово. Вывести из строки только те слова, в которых есть хоть одна буква из введённого слова
Здравствуйте, товарищи программисты. Я не смогла смириться с поражением и это снова привело меня к...

Получить 2 новые строки, одна из которых содержит только буквы, а другая только цифры
Дана строка состоящая из букв и цифр. Получить 2 новые строки, одна из которых содержит только...

6
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 897
12.09.2017, 18:05 2
vfhbf,
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
#include<iostream>
#include<vector>
#include<string>
 
int main()
{
    using std::string;
    using std::cout;
 
    string str = "kdf doi44 7 hdsi87 76d n?d89";
 
    int i = 0;
    while (str[i] != '\0')
    {
        int word = 0, num = 0;
        string truestr = "";
        while (str[i] != ' ' && str[i] != '\0')
        {
            truestr += str[i];
            if ((int)str[i] > 47 && (int)str[i] < 58)
                num++;
            else if ((int)str[i] > 96 && (int)str[i] < 123)
                word++;
                
            i++;
        }
 
        if (word > 0 && num > 0)
            cout << truestr << " ";
        if (str[i] == '\0')
            break;
        i++;
    }
 
    system("pause");
    return 0;
}
Решение лобовое. Можно все это упростить.
1
Рэмбо комнатный
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
12.09.2017, 18:21 3
как у тебя вообще что-то выводится без #include <iostream> и #include <string> ?
0
-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
12.09.2017, 18:51  [ТС] 4
GeFacle, да сейчас не об этом речь идет
я же не спрашиваю у тебя ка кие мне библиотеки подключать..

Добавлено через 3 минуты
Senarist, но при этом функции для строк нужно использовать.
0
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 897
12.09.2017, 19:05 5
vfhbf, char* ?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
12.09.2017, 21:08 6
vfhbf, здравствуйте! Вам нужно, чтобы в каждом слове обязательно присутствовали и буквы и цифры одновременно или можно по-отдельности? Я, вообще, за регулярные выражения.
0
-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
12.09.2017, 22:10  [ТС] 7
Fixer_84, спасибо большое, я уже сама разобралась
тема закрыта.

Добавлено через 16 секунд
Fixer_84, спасибо большое, я уже сама разобралась
тема закрыта.
0
12.09.2017, 22:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2017, 22:10
Помогаю со студенческими работами здесь

Получить две новые строки, одна из которых содержит только буквы, другая только цифры
добрый вечер! не могли бы вы помочь с двумя задачками? :) 1) Дана строка, состоящая из букв и...

Найти слова, в которых есть цифры и буквы латинского алфавита
Задание такое:Дана строка. Словом текста является последовательность цифр и букв латинского...

Множества: получить две новые строки, одна из которых содержит только буквы другая - только цифры
дана строка состоящая из букв и цифр. получить две новые строки, одна из которых содержит только...

Вывести только симметричные слова либо слова, в которых буквы упорядочены в порядке, обратном алфавитному
С консоли вводится текст. Напишите программу, которая будет выводить только те слова, которые...


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

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

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