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

Ввод чисел в массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
01.09.2011, 22:30     Ввод чисел в массив #1
Пользователь вводит 10-ти значное число, как сделать так чтоб каждое число этого большого числа попадало в массив без нажатия интер. То есть в идеале пользователь ввел число, нажал интер и все цифирки перебежали в массив.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
int main ()
{setlocale(LC_ALL,"Rus");
const int dofiga=10;
int a[dofiga];
cout<<"Введите число --> ";
cin>>a[1];
cin.get();
cin.get();
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
01.09.2011, 22:39     Ввод чисел в массив #2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
int main()
{
    std:: string s;
    std:: getline (std::cin,s);
    int a[s.size()-1];
    for (int i=0;i<s.size();i++)
    a[i]=s[i]-'0';
    return 0;
}
Только можно и более рационально, используя другие методы.
-=ЮрА=-
Заблокирован
Автор FAQ
01.09.2011, 23:12     Ввод чисел в массив #3
Цитата Сообщение от parkito Посмотреть сообщение
Пользователь вводит 10-ти значное число, как сделать так чтоб каждое число этого большого числа попадало в массив без нажатия интер. То есть в идеале пользователь ввел число, нажал интер и все цифирки перебежали в массив.
Как альтернатива
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 <iostream>
#include <conio.h>
 
using namespace std;
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
        for(char* ps=s; *ps; ps++){
                if(*ps=='ё')
                        stream<<char(241);
                else if(*ps=='Ё')
                        stream<<char(240);
                else if(*ps>=-64 && *ps<=-17)                   
                        stream<<char(*ps+64+128);
                else if(*ps<0)
                        stream<<char(*ps+64+176);
                else
                        stream<<*ps;
        }
        return stream;
}
 
#define N 10
 
int main()
{
    char ch;
    int i,a[N];
    do
    {
        std::cout<<"Введите число -->";
        for(i = 0; i < N; i++)
            std::cout<<(a[i] = getch() - (int)'0');
        std::cout<<"\r\n";
        std::cout<<"\tМассив чисел\r\n";
        for(i = 0; i < N; i++)
            std::cout<<a[i];
        std::cout<<"\r\n";
        cout<<"Y - новый ввод\r\n";
        ch = getch();
    }
    while(ch == 'Y' || ch == 'y');
    return 0;
}
Миниатюры
Ввод чисел в массив  
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.09.2011, 10:46     Ввод чисел в массив #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <sstream>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::stringstream sst(str);
    
    int arr[100500], n = 0;
    
    for ( int x ; sst >> x ; )
        arr[n++] = x;
    
    for (int i = 0; i < n; ++i)
        std::cout << arr[i] << ' ';
}
Хотя перечитал условие, у меня немного другое делает... Просто все числа, разделенные пробелами в массив заливает.

Добавлено через 13 минут
В вашем случае можно просто считать число и разложить его по цифрам.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
 
int main()
{
    unsigned long long num;
    std::cin >> num;
    
    int arr[100500], n = 0;
    for ( ; num != 0 ; num /= 10)
        arr[n++] = num % 10;
    
    //Цифры развернуты, если нужно, делаем разворот
    std::reverse( arr, arr + n );
    
    for (int i = 0; i < n; ++i)
        std::cout << arr[i] << ' ';     
}
rangerx
02.09.2011, 12:24
  #5

Не по теме:

Цитата Сообщение от Dani Посмотреть сообщение
C++
1
int a[s.size()-1];
В C++ так делать нельзя, размер статического массива должен задаваться константой.

Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
03.09.2011, 12:43     Ввод чисел в массив #6
Цитата Сообщение от rangerx Посмотреть сообщение
В C++ так делать нельзя, размер статического массива должен задаваться константой.
Вообщето можно.

Добавлено через 4 минуты
Зависит от компилятора
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.09.2011, 12:47     Ввод чисел в массив #7
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Добавлено через 4 минуты
Зависит от компилятора
По стандарту с++ нельзя, по стандарту с99 можно. Это расширение gcc, и если компилировать с ключом -pedantic, то он выдаст предупреждение, что стандарт с++ запрещает использовать подобные конструкции.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.09.2011, 13:07     Ввод чисел в массив #8
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль, вообще такой стиль программирование в С++ нельзя применять да и компиляторы от Microsoft, Borland не за что такой код не с компилируют, нельзя так со стеком баловаться с кучей надо работать.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
03.09.2011, 13:14     Ввод чисел в массив #9
С тем что это плохой стиль полностью согласен,
Цитата Сообщение от xAtom Посмотреть сообщение
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль
В конце символ конца строки или новой строки. Нуля не будет.
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
03.09.2011, 22:49  [ТС]     Ввод чисел в массив #10
Спасибо нашел я один вариант рабочий. Но главную задачу так и не смог сделать.

Есть ли какой алгоритм который позволяет эту задачу решить. Просто хотел заставить прогу мыслить как человека (сам думал как буду числа дописывать), но возможностей у человека больше и способы неординарны. Есть ли какой алгоритм для данных прог ?

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
Последовательность чисел назовем симметричной, если она одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными:
 
1 2 3 4 5 4 3 2 1
 
1 2 1 2 2 1 2 1
 
Вашей программе будет дана последовательность чисел. Требуется определить, какое минимальное количество и каких чисел надо приписать в конец этой последовательности, чтобы она стала симметричной.
 
Формат входных данных
 
Сначала вводится число N — количество элементов исходной последовательности (1 ≤ N ≤ 100). Далее идут N чисел — элементы этой последовательности,  натуральные числа от 1 до 9.
 
Формат выходных данных
 
Выведите сначала число M — минимальное количество элементов, которое надо дописать к последовательности, а потом M чисел (каждое — от 1 до 9) — числа, которые надо дописать к последовательности.
 
Примеры
 
Входные данные
    
 
Выходные данные
 
9
1 2 3 4 5 4 3 2 1
    
 
0
 
5
1 2 1 2 2
    
 
3
1 2 1
 
5
1 2 3 4 5
    
 
4
4 3 2 1
http://informatics.mccme.ru/moodle/m...hapterid=507#1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2011, 10:32     Ввод чисел в массив
Еще ссылки по теме:

C++ Организовать ввод целых четных значений в одномерный массив с контролем вводимых чисел
Ввод в массив 4х4 элементов чисел C++
Сформировать одномерный массив целых чисел, используя ввод данных с клавиатуры C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.09.2011, 10:32     Ввод чисел в массив #11
Цитата Сообщение от Dani Посмотреть сообщение
С тем что это плохой стиль полностью согласен
Это не плохой стиль, так делать нельзя по стандарту, как вам уже и сказали. Да, gcc поддерживает variable-size arrays, но только он. Это не по стандарту, поэтому такой код непереносим.
Борланд, так тот вообще использует заголовки в старом стиле и не знает про пространства имён. Так что, скажете, это тоже "плохой стиль"?
Yandex
Объявления
04.09.2011, 10:32     Ввод чисел в массив
Ответ Создать тему
Опции темы

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