Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/103: Рейтинг темы: голосов - 103, средняя оценка - 4.74
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695

Ввод чисел в массив

01.09.2011, 22:30. Показов 20256. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2011, 22:30
Ответы с готовыми решениями:

Ввод чисел в массив
Я создаю массив типа double, но числа ввожу целые, и когда делю одно число на другое то получается Int, можно ли как-то сделать что бы я...

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

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

10
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
01.09.2011, 22:39
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
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
01.09.2011, 23:12
Цитата Сообщение от 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
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.09.2011, 10:46
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
02.09.2011, 12:24

Не по теме:

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

0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
03.09.2011, 12:43
Цитата Сообщение от rangerx Посмотреть сообщение
В C++ так делать нельзя, размер статического массива должен задаваться константой.
Вообщето можно.

Добавлено через 4 минуты
Зависит от компилятора
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.09.2011, 12:47
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Добавлено через 4 минуты
Зависит от компилятора
По стандарту с++ нельзя, по стандарту с99 можно. Это расширение gcc, и если компилировать с ключом -pedantic, то он выдаст предупреждение, что стандарт с++ запрещает использовать подобные конструкции.
1
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.09.2011, 13:07
Цитата Сообщение от Dani Посмотреть сообщение
Вообщето можно.
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль, вообще такой стиль программирование в С++ нельзя применять да и компиляторы от Microsoft, Borland не за что такой код не с компилируют, нельзя так со стеком баловаться с кучей надо работать.
1
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
03.09.2011, 13:14
С тем что это плохой стиль полностью согласен,
Цитата Сообщение от xAtom Посмотреть сообщение
Допустим пользователь ведёт один символ а у тебя при выделение size() - 1 получиться нуль
В конце символ конца строки или новой строки. Нуля не будет.
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
03.09.2011, 22:49  [ТС]
Спасибо нашел я один вариант рабочий. Но главную задачу так и не смог сделать.

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

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/mo... erid=507#1
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
04.09.2011, 10:32
Цитата Сообщение от Dani Посмотреть сообщение
С тем что это плохой стиль полностью согласен
Это не плохой стиль, так делать нельзя по стандарту, как вам уже и сказали. Да, gcc поддерживает variable-size arrays, но только он. Это не по стандарту, поэтому такой код непереносим.
Борланд, так тот вообще использует заголовки в старом стиле и не знает про пространства имён. Так что, скажете, это тоже "плохой стиль"?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.09.2011, 10:32
Помогаю со студенческими работами здесь

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

Ввод чисел в массив с клавиатуры
Здравствуйте. Есть условие задачи, нужно в массив вводить числа, а когда вводим цифру 0, обрывается цикл и на выходе получаем символ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru