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

Из текста выбрать числа и записать в массив - C++

Восстановить пароль Регистрация
 
Folayt
 Аватар для Folayt
1 / 2 / 1
Регистрация: 25.10.2012
Сообщений: 107
10.06.2013, 20:28     Из текста выбрать числа и записать в массив #1
Из текста выбрать числа и записать в массив. Предполагается, что количество встречающихся чисел не более 10.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.06.2013, 20:43     Из текста выбрать числа и записать в массив #2
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
#include <stdio.h>
#define N 10
void Extract(char *s, int *a, int *pn)
{
   int x;
   *pn = 0;
   while(*s && !isdigit(*s))
      ++s;
   while(*s)
   {
       x = 0;
       while(*s && isdigit(*s))
       {
           x = x * 10 + (*s) - '0';
           ++s;
       }
       a[*pn] = x;
       ++(*pn);
       while(*s && !isdigit(*s))
           ++s;
   }
}
 
int main()
{
    char s[] = "abc123 10 11 xyz";
    int a[N], n, i;
    Extract(s, a, &n);
    for(i = 0; i < n; ++i)
       printf("%d\n", a[i]);
    return 0;
}
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
10.06.2013, 20:50     Из текста выбрать числа и записать в массив #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cctype>
 
int main()
{
    int num = 0;
    char c = 0;
    while((c = std::cin.peek()) != '\n')
    {
        if(isdigit(c))
        {
            std::cin >> num;
            std::cout << num << '\n';
        }
        else
            std::cin.get();
    }
    return 0;
}
Folayt
 Аватар для Folayt
1 / 2 / 1
Регистрация: 25.10.2012
Сообщений: 107
10.06.2013, 21:19  [ТС]     Из текста выбрать числа и записать в массив #4
Цитата Сообщение от igorrr37 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cctype>
 
int main()
{
    int num = 0;
    char c = 0;
    while((c = std::cin.peek()) != '\n')
    {
        if(isdigit(c))
        {
            std::cin >> num;
            std::cout << num << '\n';
        }
        else
            std::cin.get();
    }
    return 0;
}
работает без задержки
ставлю system("pause") не помогает
и getch() тоже
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
10.06.2013, 21:39     Из текста выбрать числа и записать в массив #5
вот для действительных чисел с задержкой
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
#include <iostream>
#include <cctype>
#include <string>
#include <cstdlib>
 
int main()
{
    double num = 0;
    char c = 0;
    std::string srel("-.");
    while((c = std::cin.peek()) != '\n')
    {
        if(isdigit(c) || (srel.find(c) != std::string::npos))
        {
            std::cin >> num;
            if(std::cin)
                std::cout << num << '\n';
            else
                std::cin.clear();
        }
        else
            std::cin.get();
    }
    system("pause");
    return 0;
}
Yandex
Объявления
10.06.2013, 21:39     Из текста выбрать числа и записать в массив
Ответ Создать тему
Опции темы

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