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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Вурдалак
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
#1

Запись чисел в массив - C++

08.01.2014, 09:07. Просмотров 438. Ответов 11
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <clocale>
using namespace std;
 
const int SizeMassive = 50;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    char Text [SizeMassive];
    double Srednee [SizeMassive];
 
    cout << "Введите значения" << endl;
    gets(Text); 
}
Есть такой вот код.

Я ввожу например, "1 23 4 567 8"
Подскажите какой должен быть алгоритм, чтобы эти числа записать в массив Srednee[], но не по одной цифре, а так "1", "23", "4", "567", "8".
Условие - использовать цикл и простые функции .

Заранее Спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 09:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись чисел в массив (C++):

Запись случайных чисел в массив - C++
Подскажите, пожалуйста, в чем проблема. #include &lt;random&gt; ... std::tr1::mt19937 eng; ...

Чтение чисел из файла и запись в массив - C++
Дан файл с 20 строками типа: &quot;C=219-02,OU=comps,C=su,C=su,C=ru,20111129105801.0Z&quot; необходимо прочитать в каждой строке числа типа:...

Считывание чисел из файла и запись их в массив - C++
Имеется файл txt со следующей строкой: ght# 1, nkat= 8, str= 1.00000, lmv= 0.5000 0.0001 0.0001 (reduced coord) ght# 2, nkat= ...

Чтение чисел из файла и запись в массив - C++
В общем надо записать числа из файла в массив я написал код, но вот не могу понять почему значения массива остаются равными 0, хелпаните...

Запись случайных натуральных чисел в линейный массив - C++
for( j=0; j&lt;10; j++) { arr=rand()%(b-a+1)+a; } Пытаюсь сделать так но выводит вообще не по теме 0BF014 что то в...

Нахождение и запись в массив простых чисел с повторяющимися цифрами - C++
Не могу разобраться с задачей. Собственно условие такое - нужно вывести все простые числа не превышающие N но в которых нету...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
S_el
2100 / 1611 / 308
Регистрация: 15.12.2013
Сообщений: 6,451
08.01.2014, 09:15 #2
Используйте int массив.
0
Ev_Hyper
Заблокирован
08.01.2014, 09:15 #3
C++
1
2
3
4
5
        for (j = 0; j<SizeMassive; j++)
        {
            cout<<"["<<j<<"]";
            cin>>Srednee[j];
        }
0
Вурдалак
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
08.01.2014, 09:22  [ТС] #4
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
C++
1
2
3
4
5
        for (j = 0; j<SizeMassive; j++)
        {
            cout<<"["<<j<<"]";
            cin>>Srednee[j];
        }
Это самый простой вариант
А мне нужно чтобы пользователь ввел числа через пробел, а программа бы эти числа записала в массив Srednee[].
0
Ev_Hyper
Заблокирован
08.01.2014, 09:28 #5
тогда вам string понадобиться, а потом его разбивать на элементы по пробелу

Добавлено через 1 минуту
но наверное можно попроще как-то

Добавлено через 3 минуты
Аналог метода Split для std::string
1
Вурдалак
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
08.01.2014, 09:40  [ТС] #6
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
тогда вам string понадобиться, а потом его разбивать на элементы по пробелу

Добавлено через 1 минуту
но наверное можно попроще как-то

Добавлено через 3 минуты
Аналог метода Split для std::string
Ок. Сейчас попробую
0
Ev_Hyper
Заблокирован
08.01.2014, 10:23 #7
Хотя, наверное, все же имелось ввиду использование функции
C++
1
atof
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
08.01.2014, 11:15 #8
Самый простой способ, наверное, не будет удовлетворять условиям "использовать цикл и простые функции":
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 #include <algorithm>
 #include <iostream>
 #include <iterator>
 #include <sstream>
 #include <vector>
 
 int main()
 {
     std::vector<int> data;
 
     std::string line;
     std::getline(std::cin, line);
     std::istringstream ss(line);
     std::copy(std::istream_iterator<int>(ss),
               std::istream_iterator<int>(),
               std::back_inserter(data));
 
     
     for (int i = 0; i < data.size(); ++i)
         std::cout << data[i] << " ";
     
     std::cout << std::endl;
 }
1
Вурдалак
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
08.01.2014, 11:17  [ТС] #9
Цитата Сообщение от fasked Посмотреть сообщение
Самый простой способ, наверное, не будет удовлетворять условиям "использовать цикл и простые функции":
Такое условие дано только для того, чтобы я понимал что делается. Попробую разобрать этот код, что к чему))) Спасибо.
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
08.01.2014, 11:24 #10
Цитата Сообщение от Вурдалак Посмотреть сообщение
Такое условие дано только того, чтобы я понимал что делается.
Если так, то вызов алгоритма std::copy можно легко заменить циклом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
     // Считываем строку в переменную line.
     std::string line;
     std::getline(std::cin, line);
 
     // Объект stringstream служит для чтения различных 
     // данных (int, double, etc) из строки.
     // Работает по аналогии с std::cin, но только в качестве
     // источника данных берет строку.
     std::istringstream ss(line);
     int integer = 0;
     while (ss >> integer)
         data.push_back(integer);
Ну и раз уж такое дело, то можно читать и из std::cin, вот только завершением ему будет EOF, а не конец строки:
C++
1
2
3
     int integer = 0;
     while (std::cin >> integer)
         data.push_back(integer);
То есть Вы можете ввести сразу всю строку с числами, и вся строка будет добавлена, но цикл на этом моменте не остановится. Для остановки цикла необходимо, чтобы в поток попало либо не целое число, либо EOF.
0
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
08.01.2014, 11:31 #11
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
#include <iostream>
#include <string>
 
bool isNumberString(char *string);
 
int main()
{
    const size_t stringLength(255);
    char string[stringLength], stringCopy[stringLength];
 
    std::cout << "Input string: ";
    gets_s(string);
    strcpy_s(stringCopy, string);
 
    char *buffer(nullptr);
    char *currentNumber(strtok_s(string, " ", &buffer));
    size_t numbersCounter(0);
    while (currentNumber) {
        numbersCounter += isNumberString(currentNumber) ? 1 : 0;
        currentNumber = strtok_s(0, " ", &buffer);
    }
 
    size_t arrayIndex(0);
    int *array = new int [numbersCounter];
    buffer = nullptr;
    currentNumber = strtok_s(stringCopy, " ", &buffer);
    while (currentNumber) {
        if (isNumberString(currentNumber))
            array[arrayIndex++] = atoi(currentNumber);
        currentNumber = strtok_s(0, " ", &buffer);
    }
 
    std::cout << "Array: ";
    for (size_t i = 0; i < numbersCounter; i++) {
        std::cout << array[i] << ' ';
    }
    std::cout << std::endl;
    delete [] array;
 
    std::system("pause");
    return 0;
}
 
bool isNumberString(char *string)
{
    size_t digitsCounter(0);
    for (size_t i = 0; i < strlen(string); i++) {
        digitsCounter += isdigit(string[i]) ? 1 : 0;
    }
    return digitsCounter == strlen(string);
}
0
Вурдалак
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
13.01.2014, 11:27  [ТС] #12
Спасибо за вектора! Это вещь! Реально облегчают жизнь. Хоть и долго разбирался и еще надо будет столько же посидеть над ними, но это того стоит!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 11:27
Привет! Вот еще темы с ответами:

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив... - C++
помогите!!!((( дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько...

люди добрые! нужно программа инверсная запись чисел, запись из инверсной в обычную - C++
помогите сделать программа или датьсходник, можно на с++ или на паскале спасибо вам за раннее огромное!!!!!

Одномерный массив (Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах) - C++
Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах. Обьясните что делать?

Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел - C++
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел больших исходных на два порядка. Напечатать массивы в два...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.01.2014, 11:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru