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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
#1

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

01.09.2011, 22:30. Просмотров 3649. Ответов 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++):

Ввод чисел в массив - C++
Как сделать чтобы пользователь мог вводить числа в массив не по порядку? Допустим в массиве 10 элементов, доходим стрелочками до 5го и...

Ввод чисел в массив - C++
Составьте программу, которая осуществляет ввод чисел в массив. Программа рассматривает введенное число как денежную сумму в рублях. Цель...

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

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

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

Ввод дробных чисел из файла в массив - C++
Доброго времени суток. Возникла проблема с программой. Необходимо вывести из файла дробные числа вида 1/7 и ввести их в массив arr. ...

10
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 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
1929 / 1195 / 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] << ' ';     
}
1
rangerx
02.09.2011, 12:24
  #5

Не по теме:

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

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

Добавлено через 4 минуты
Зависит от компилятора
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.09.2011, 12:47 #7
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Добавлено через 4 минуты
Зависит от компилятора
По стандарту с++ нельзя, по стандарту с99 можно. Это расширение gcc, и если компилировать с ключом -pedantic, то он выдаст предупреждение, что стандарт с++ запрещает использовать подобные конструкции.
1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.09.2011, 13:07 #8
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль, вообще такой стиль программирование в С++ нельзя применять да и компиляторы от Microsoft, Borland не за что такой код не с компилируют, нельзя так со стеком баловаться с кучей надо работать.
1
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
03.09.2011, 13:14 #9
С тем что это плохой стиль полностью согласен,
Цитата Сообщение от xAtom Посмотреть сообщение
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль
В конце символ конца строки или новой строки. Нуля не будет.
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
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
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
04.09.2011, 10:32 #11
Цитата Сообщение от Dani Посмотреть сообщение
С тем что это плохой стиль полностью согласен
Это не плохой стиль, так делать нельзя по стандарту, как вам уже и сказали. Да, gcc поддерживает variable-size arrays, но только он. Это не по стандарту, поэтому такой код непереносим.
Борланд, так тот вообще использует заголовки в старом стиле и не знает про пространства имён. Так что, скажете, это тоже "плохой стиль"?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2011, 10:32
Привет! Вот еще темы с ответами:

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

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

Ввод чисел в массив, без заданного размера с клавиатуры - C++
#include &lt;iostream&gt; using namespace std; int main () { int a= {ЗДЕСЬ ДОЛЖНЫ БЫТЬ ВВОДИМЫЕ С КЛАВИАТУРЫ ПО ЦИКЛУ for числа} ...

Сформировать одномерный массив целых чисел, используя ввод данных с клавиатуры - C++
Найти в массиве наибольшее число подряд идущих одинаковых элементов (например {1,5,3,6,6,6,6,6,3,4,4,5,5,5} = 5). Заранее большое спасибо.


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

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

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