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

Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран - C++

Восстановить пароль Регистрация
 
andrew_
12 / 12 / 2
Регистрация: 04.06.2010
Сообщений: 24
08.11.2012, 02:38     Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран #1
Вводится строка s, слова разделяются пробелами и разделительными знаками. Надо найти слова-сообщения в которых содержатся цыфры и вывести их на экран. У меня ничего не выводит.
Немогу найти в чём проблема у меня.
b -- начало первая буква слова
e -- знак после последней
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
#include "stdafx.h"
#include<iostream>
#include<math.h>
#include<locale>
using namespace std;
int b,e;
void write(char *s)
{
    int i,j=0;
    for(i=b;i<e;i++)//проверка на цыфры в слове
    {
        if(s[i]== '0' || s[i]== '1' || s[i]== '2' || s[i]== '3' || s[i]== '4' || s[i]== '5' || s[i]== '6' || s[i]== '7' || s[i]== '8' || s[i]== '9') 
            j=1;
    }
    if(j==1)
    {
        for(i=b;i<e;i++)
            cout<<s[i];
        cout<<" ";
    }
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    char s[250];
    int i,b=0,e,n=250;
    cin.getline(s, 250);
    for(i=1;i<250;i++) // отбор слов
    {
        if(s[i]== ' ' || s[i] ==',' || s[i] =='.' || s[i] =='!' || s[i] ==';' || s[i] =='?' || s[i] ==':'|| s[i] == NULL)
        { 
            e=i;
            write(s);
            b=e+1;
        }
        if(s[i] == NULL) break;
    }
    cout<<endl;
    system("Pause");
    return 0;
}
Добавлено через 14 минут
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
// ConsoleLaba3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<string>
#include<math.h>
#include<locale>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    char s[250];
    int i,b=0,e,n=250,j=0,k=0;
    cin.getline(s, 250);
    for(i=1;i<250;i++)
    {
        if(s[i]== ' ' || s[i] ==',' || s[i] =='.' || s[i] =='!' || s[i] ==';' || s[i] =='?' || s[i] ==':'|| s[i] == NULL)
        { 
            e=i;    
            for(j=b;j<e;j++)
            {
                if(s[j]== '0' || s[j]== '1' || s[j]== '2' || s[j]== '3' || s[j]== '4' || s[j]== '5' || s[j]== '6' || s[j]== '7' || s[j]== '8' || s[j]== '9')
                    k=1;
            }
            if(k==1)
            {
                for(j=b;j<e;j++)
                    cout<<s[j];
                cout<<" ";
            }
            b=e+1;k=0;
        }
        if(s[i] == NULL) break;
    }
    cout<<endl;
    system("Pause");
    return 0;
}
проблему решил
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 02:38     Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран
Посмотрите здесь:

Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова C++
C++ найти и вывести на экран слова, в которых нет повторяющихся букв
C++ Строка: вывести на экран все слова сообщения, состоящие из n букв.
C++ Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры
C++ В строке найти и вывести на экран все слова длиною в три символа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,036
08.11.2012, 07:21     Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//main.cpp
#include <iostream>
#include <ctype.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
    char str[100];
    cin.getline(str, 100);
 
    char c;
    for (int i = 0; (c = str[i]) != '\0'; i++)
    {
        if (isdigit(str[i]))
            cout << str[i] << " ";
    }
    _getch();
    return 0;
}
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
08.11.2012, 09:09     Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран #3
Цитата Сообщение от andrew_ Посмотреть сообщение
char s[250];
* * int i,b=0,e,n=250,j=0,k=0;
* * cin.getline(s, 250);
не забывайте что еще нужен 1 символ под '\0'

Цитата Сообщение от andrew_ Посмотреть сообщение
C++
1
if(s[j]== '0' || s[j]== '1' || s[j]== '2' || s[j]== '3' || s[j]== '4' || s[j]== '5' || s[j]== '6' || s[j]== '7' || s[j]== '8' || s[j]== '9')
не проще ли
C++
1
if(s[j]>='0'&&s[j]<='9')
Добавлено через 17 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int start=-1,finish=-1,i=0;
bool fl=false;
while(s[i]!='\0')
    if{s[i]!=/*тут ваше длинное условие на пробелы и знаки препинания*/){
        start=i;
        while(s[i]!=/*опять ваше условие на пробелы и знаки пепинания*/ только добавить еще s[i]!='\0']){
            if(s[j]>='0'&&s[j]<='9')
                fl=true;
            i++;
        }
        finish=i;
        if(fl){
            cout<<endl;
            for(int i=start;i<finish;i++)
                cout<<s[i];
            fl=false;
            start=finish=-1;
        }
        else
            start=finish=-1;
    }
    else
        i++;
+чтобы как-то избавиться от этого "/*тут ваше длинное условие на пробелы и знаки препинания*/"
советую сделать так
C++
1
2
3
4
5
6
bool prov (char a){
    if(a!=/*тут ваше длинное условие на пробелы и знаки препинания*/)
        return true;
    else
        return false;
}
и писать вместо
C++
1
if{s[i]!=/*тут ваше длинное условие на пробелы и знаки препинания*/)
это
C++
1
if(prov(s[i]))
Добавлено через 18 минут
Цитата Сообщение от andrew_ Посмотреть сообщение
C++
1
for(i=1;i<250;i++)
Цитата Сообщение от andrew_ Посмотреть сообщение
C++
1
if(s[i] == NULL) break;
не есть хорошо...
лучше использовать
Цитата Сообщение от MrGrig Посмотреть сообщение
C++
1
while(s[i]!='\0')
+ почему вы начинаете считать с 1го элемента?
andrew_
12 / 12 / 2
Регистрация: 04.06.2010
Сообщений: 24
02.12.2012, 23:35  [ТС]     Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран #4
Цитата Сообщение от MrGrig Посмотреть сообщение

+ почему вы начинаете считать с 1го элемента?
был час ночи вот и начал =)
спасибо, за помощь))
Yandex
Объявления
02.12.2012, 23:35     Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран
Ответ Создать тему
Опции темы

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