Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
#1

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

01.09.2011, 22:30. Просмотров 4459. Ответов 10
Метки нет (Все метки)

Пользователь вводит 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2011, 22:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ввод чисел в массив (C++):

Ввод чисел в массив
Составьте программу, которая осуществляет ввод чисел в массив. Программа...

Ввод чисел в массив
Как сделать чтобы пользователь мог вводить числа в массив не по порядку?...

Ввод вручную чисел в массив
Здравствуйте! начинаю изучать Visual C++, работать с массивами. Не могу...

Ввод дробных чисел из файла в массив
Доброго времени суток. Возникла проблема с программой. Необходимо вывести из...

Ввод рандомных чисел в линейный массив.
Добрый день, программисты. У меня возник небольшой вопрос. Как можно в линейный...

Ввод в массив 4х4 элементов чисел
Написать программу ввода в массив 4х4 элементов чисел и поиска в нем модуля...

10
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 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;
}
Только можно и более рационально, используя другие методы.
1
-=ЮрА=-
Заблокирован
Автор 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;
}
2
Миниатюры
Ввод чисел в массив  
diagon
Higher
1937 / 1203 / 120
Регистрация: 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] << ' ';     
}
1
rangerx
02.09.2011, 12:24
  #5

Не по теме:

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

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

Добавлено через 4 минуты
Зависит от компилятора
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.09.2011, 12:47 #7
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Добавлено через 4 минуты
Зависит от компилятора
По стандарту с++ нельзя, по стандарту с99 можно. Это расширение gcc, и если компилировать с ключом -pedantic, то он выдаст предупреждение, что стандарт с++ запрещает использовать подобные конструкции.
1
xAtom
917 / 742 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.09.2011, 13:07 #8
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль, вообще такой стиль программирование в С++ нельзя применять да и компиляторы от Microsoft, Borland не за что такой код не с компилируют, нельзя так со стеком баловаться с кучей надо работать.
1
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
03.09.2011, 13:14 #9
С тем что это плохой стиль полностью согласен,
Цитата Сообщение от xAtom Посмотреть сообщение
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль
В конце символ конца строки или новой строки. Нуля не будет.
0
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
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
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
04.09.2011, 10:32 #11
Цитата Сообщение от Dani Посмотреть сообщение
С тем что это плохой стиль полностью согласен
Это не плохой стиль, так делать нельзя по стандарту, как вам уже и сказали. Да, gcc поддерживает variable-size arrays, но только он. Это не по стандарту, поэтому такой код непереносим.
Борланд, так тот вообще использует заголовки в старом стиле и не знает про пространства имён. Так что, скажете, это тоже "плохой стиль"?
0
04.09.2011, 10:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2011, 10:32
Привет! Вот еще темы с решениями:

Рандомный ввод вещественных чисел в массив
Здравствуйте. Проблема состоит в том, что надо заполнить массив случайными...

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

Ввод чисел в массив, без заданного размера с клавиатуры
#include &lt;iostream&gt; using namespace std; int main () { int a= {ЗДЕСЬ...

Сформировать одномерный массив целых чисел, используя ввод данных с клавиатуры
Найти в массиве наибольшее число подряд идущих одинаковых элементов (например...


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

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

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