С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 693
#1

Из символов в буквы - C++

19.07.2011, 11:23. Просмотров 848. Ответов 16
Метки нет (Все метки)

Знаю один из методов защиты от переполнения массива.

C++
1
2
3
4
5
char str[40];
cout<<"Введите строчку символов --> ";
cin>>setw(40)>>str;
 
}
Мне надо проделать такую же защиту с типом данных
C++
1
int
Примерно должно выглядеть так

C++
1
2
3
int str[40];
cout<<"Введите цифры --> ";
cin>>setw(40)>>str;
Как этого добится ?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 11:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из символов в буквы (C++):

C (СИ) - Ввести строку символов.И После каждой 2 Буквы ( Именно буквы ) Вставить слово - C++
Огромное Спасибо Darkrduk за эту программу ( программа вставляет MAU ) после каждого 2 символа ** .. Нужно умудриться сделать ! Именно...

Слова, буквы. Вывести последовательность символов. - C++
Помогите разобраться с задачей на Си, со строками проблемы. Дана не пустая последовательность слов (не более 30), в каждом слове не более 8...

Коды символов одной и той же буквы различаются. [help] - C++
тоесть если я делаю cout&lt;&lt;int('а'); где а-русская, он выводит код -32. И так до я -1; а если char c; cin&gt;&gt;c; cout&lt;&lt;int(c) и...

Определить класс символов (цифры или буквы) - C++
Дано арифметическое выражение. Написать программу, определяющую к какому классу(цифрам или буквам) относятся символы в строке. Если условие...

Найти количество символов в строке, найти заданные буквы, разделить количество букв на количество символов - C++
Написать код который сперва подсчитывает количество символов в строке а потом из этих находит буквы (a,e,y,u,i) и делит количество букв на...

Найти в массиве символов количество слов, начинающихся с буквы b - C++
Дан массив символов, содержащий английский текст. Найти количество слов, начинающихся с буквы b. Добавлено через 19 часов 29 минут ...

16
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
19.07.2011, 11:24 #2
Циклом for?
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 693
19.07.2011, 11:25  [ТС] #3
Цитата Сообщение от neske Посмотреть сообщение
Циклом for?
нужно сделать так чтоб пользователь только один раз нажимал интер
0
co6ak
Кошковед
409 / 502 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
19.07.2011, 11:33 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
cout << " НЕ ЖМИ ENTER, ПАДЛА !!! << endl;
Добавлено через 45 секунд
или так:
C++
1
cout << "ВВОДИ ДАННЫЕ ЧЕРЕЗ ПРОБЕЛЫ, А НЕ ЧЕРЕЗ ENTER !!!!!!!!!!!" << endl;
4
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
19.07.2011, 11:36 #5
ВВОДИ ДАННЫЕ ЧЕРЕЗ ПРОБЕЛЫ, А НЕ ЧЕРЕЗ ENTER - будь плохим парнем.
1
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
19.07.2011, 12:52 #6
Цитата Сообщение от parkito Посмотреть сообщение
нужно сделать так чтоб пользователь только один раз нажимал интер
Вводить данные в строку(std::string) и парсить(std::istringstream). Ну, или следовать советам приведённым выше )
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 693
19.07.2011, 13:06  [ТС] #7
Ну вот этот массив чтоб заполнить нужны интеры

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<iomanip>
#include <windows.h>
#include <cstring>
using namespace std;
int main ()
{setlocale(LC_ALL,"Rus");
int a[10];
cout<<"Не жми на интер ***ла --> ";
for(int i=0;i<10;i++)
    cin>>a[i];
cout<<'1';
cout<<a;
cin.get();
cin.get();
return 0;
}
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
19.07.2011, 13:20 #8
Можно ввести и без enter'a.
1
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
19.07.2011, 13:33 #9
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
#include <sstream>
#include <iostream>
#include <string>
#include <cstddef>
 
void ReadLnToArr(int array[], std::size_t capacity, std::size_t* new_size)
{
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream(s);
 
    *new_size = 0;
 
    for(std::size_t i = 0; i < capacity; ++i)
    {
        if(stream >> array[i]) ++*new_size;
        else break;
    }
}
 
int main()
{
    const std::size_t a_capacity = 10;
 
    std::size_t a_size = 0;
    int a[a_capacity] = {0};
 
    ReadLnToArr(a, a_capacity, &a_size);
 
    for(std::size_t i = 0; i < a_size; ++i)
        std::cout << a[i] << '\n';
 
    return 0;
}
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 693
19.07.2011, 13:47  [ТС] #10
Цитата Сообщение от neske Посмотреть сообщение
Можно ввести и без enter'a.
А без пробелов можно ? Нужно просто чтоб ввелась строка и каждая ее цифра поместилась в разные части массива
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.07.2011, 13:48 #11
rangerx, млин вот не знаю почему но мне вот это не нравится
C++
1
2
3
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream(s);
мне кажется что stream должно инициализироваться пустой строкой (ведь на этапе компиляции же)
хотя код проверил - работает.
вообщем не знаю ... не доверяю как-то.

имхо лучше так делать:
C++
1
2
3
4
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream;
stream << s;
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
19.07.2011, 14:19 #12
Цитата Сообщение от OstapBender Посмотреть сообщение
мне кажется что stream должно инициализироваться пустой строкой
Нет
Цитата Сообщение от OstapBender Посмотреть сообщение
(ведь на этапе компиляции же)
???
Цитата Сообщение от OstapBender Посмотреть сообщение
имхо лучше так делать
Так сделать нельзя, оператор << для входного потока не перегружен
1
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,389
Записей в блоге: 2
Завершенные тесты: 1
19.07.2011, 14:25 #13
Цитата Сообщение от OstapBender Посмотреть сообщение
мне кажется что stream должно инициализироваться пустой строкой (ведь на этапе компиляции же)
Так а какая разница? Будет создан примерно такой код:
C++
1
istringstream(this, s);//где this=&stream
т.е. вызов конструктора, а там уже что он будет делать со строкой s - это его дело))
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
19.07.2011, 14:26 #14
Цитата Сообщение от OstapBender Посмотреть сообщение
имхо лучше так делать:
Для этого есть специальный метод str
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.07.2011, 14:57 #15
Цитата Сообщение от rangerx Посмотреть сообщение
Так сделать нельзя, оператор << для входного потока не перегружен
да, не заметил что там iss а не просто ss.
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Для этого есть специальный метод str
ето для вывода, а я хотел ввести строку туда

Kastaneda, да, мне почему то взбрело что конструктор вызывается на этапе компиляции, когда строка s еще пустая, типа ошибка наподобие этого:
C++
1
2
3
4
5
6
    int n;
 
    std::cout << "n: ";
    std::cin >> n;
 
    int arr[n];
0
19.07.2011, 14:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 14:57
Привет! Вот еще темы с ответами:

После каждой 2 Буквы вставлять строку символов MAU - C++
С++ Ввести строку символов.И После каждой 2 Буквы ( Вставлять MAU ) Немного поправлю * И После каждой 2 Буквы ( Вставлять строку...

Ввести строку символов, если ее длина >15, удалить все буквы - a…z. - C++
Помогите,пожалуйста,решить задачку на С++: :gsorry: Ввести строку символов, если ее длина &gt;15, удалить все буквы - a…z.

Дана строка из 20 символов. вывести из неё латинские строчные буквы - C++
Дана строка из 20 символов. Вывести из нее на печать только строчные буквы латинского алфавита.

Сдвинуть буквы, в каждом слове, влево или вправо, на n символов - C++
Задача: Взять из файла текст (слова, разделённые знаками препинания и пробелами) и сдвинуть буквы, в каждом слове, влево или вправо, на n...


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

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

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