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

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

Войти
Регистрация
Восстановить пароль
 
Ruber54
Сообщений: n/a
#1

строка с клавиатуры - C++

07.07.2013, 15:56. Просмотров 396. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Наткнулся на задание в интернете.
"Пользователь вводит строку с клавиатуры (максимальная длина строки — 80 символов). Программа должна выбрать из строки все чётные цифры (нуль отнести к ним), если они есть в строке, и поместить их в первый динамический массив, и все нечётные цифры, если они есть — поместить их во второй динамический массив. Вывести оба динамических массива (если они появились) на экран.

Пример работы программы программы (на второй строке показан ввод пользователя):

Введите строку:
Я родился 17.03.1972 в 23 часа 45 минут
0 2 2 4
1 7 3 1 9 7 3 5
"

Начал писать программу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <iostream>
#include <conio.h>
using std :: cout;
using std :: cin;
using std :: endl;
using std :: string;
 
int main()
{
    char stroka[80];
    stroka[80] = '\0';
    cout<<"введите строку: "<<endl;
    for(int i=0;i<=80;i++)
    cin>>stroka[i];
    
    for(int i=0;stroka[i]!='\0';i++)
    cout<<stroka[i];
    
    
    getch();
    return 0;
}
Теперь мои вопросы
1. Как мне сделать, чтобы ввод строки прерывался,если символов больше, чем указано в задание?
( у меня получается, что вводить могу сколько угодно, а после вывода того, что ввел на экран ,обрезается до 80 символов строка.)
2. Как мне сделать проверку на символы? а конкретнее на четность и нечетность?
спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2013, 15:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос строка с клавиатуры (C++):

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

З клавиатуры ввести символьная строка - C++
з клавиатуры ввести символьная строка, в котором кроме текста могут быть также числа: цели и действительны, в которых дробная часть...

При вводе с клавиатуры получается непонятная строка - C++
Объясните пожалуйста, почему когда строка задаю сразу в коде программа работает адекватно, а когда хочу ввести строку с клавиатуры через...

Проверить, является ли строка, введённая с клавиатуры, палиндромом - C++
ЗАдание следующее: Написать программу, которая проверяет, является ли строка, введённая с клавиатуры палиндромом. Строка может...

Проверить, является ли введенная с клавиатуры строка шестнадцатеричным числом - C++
1. Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом.

Проверить, является ли введенная с клавиатуры строка целым числом - C++
1) Напишите программу, которая проверяет, является ли введеная с клавиатуры строка с целым числом. 2)Напишите программу которая удаляет...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.07.2013, 16:25 #2
Цитата Сообщение от Ruber54 Посмотреть сообщение
1. Как мне сделать, чтобы ввод строки прерывался,если символов больше, чем указано в задание?
( у меня получается, что вводить могу сколько угодно, а после вывода того, что ввел на экран ,обрезается до 80 символов строка.)
2. Как мне сделать проверку на символы? а конкретнее на четность и нечетность?
спасибо.
1. например,
C++
1
2
char s[80];
cin.getline(s, 80)
2. проверка на четность-нечетность цифры
C++
1
if ((c - '0') & 1)
пример без динамических массивов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
#include<cctype>
const int N = 80;
int main()
{
   char s[N], a[N], b[N];
   int i, j, k;
   std::cin.getline(s, N);
   for(i = j = k = 0; s[i]; ++i)
      if (isdigit(s[i]))
         if ((s[i] - '0') & 1)
            a[j++] = s[i];
         else b[k++] = s[i];   
   a[j] = b[k] = '\0';
   std::cout << a << std::endl; 
   std::cout << b << std::endl; 
   return 0;
}
Добавлено через 14 минут
в стиле Croessmah :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<cctype>
const int N = 80;
int main()
{
   char s[N], a[N], b[N];
   int i, j, k;
   std::cin.getline(s, 80);
   for(i = j = k = 0; a[j] = b[k] = s[i]; j += (isdigit(s[i]) && ((s[i] - '0') & 1)), k += (isdigit(s[i]) && !((s[i] - '0') & 1)), ++i)
      ;
   a[j] = b[k] = '\0';
   std::cout << a << std::endl; 
   std::cout << b << std::endl; 
   return 0;
}
0
Stereotip
2 / 2 / 0
Регистрация: 17.04.2012
Сообщений: 22
07.07.2013, 16:26 #3
Отличный пример если можно обьясните эту строчку
C++
1
if ((s[i] - '0') & 1)
. И как я понимаю в консоле нельзя проследить количество вводимых символов пока не будет нажат enter??
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.07.2013, 16:29 #4
Цитата Сообщение от Stereotip Посмотреть сообщение
обьясните эту строчку
C++
1
if ((s[i] - '0') & 1)
.
это тоже самое, что
C++
1
if ((s[i] - '0') % 2)
а (s[i] - '0') это получения из кода символа значения цифры, так как цифры в кодировках идут подряд.

Цитата Сообщение от Stereotip Посмотреть сообщение
И как я понимаю в консоле нельзя проследить количество вводимых символов пока не будет нажат enter??
можно, только цикл нужен ввода посимвольно
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 16:29
Привет! Вот еще темы с ответами:

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

Проверить, является ли введенная с клавиатуры строка двоичным числом - C++
Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом. #include &lt;iostream&gt; int main() { ...

Определить, является ли введённая с клавиатуры строка текстовым сообщением - C++
Помогите пожалуйста

Строка: Найти цвет/цвета предмета, введенного с клавиатуры. - C++
Помогите с решением! Дан 3-х мерный инициализированный массив символов (6 строк, 2 столбца, 20 символов) const int N=6, J=2, I=20; ...


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

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

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