Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 10.02.2015
Сообщений: 56

При вводе строки выводить только цифры

27.10.2015, 13:17. Показов 2775. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "ctype.h"
using namespace std;
void read(char *x) {
    int i = 0;
    while (x[i] != '\0') {
        if (isdigit(x[i]))printf("%s", x[i++]);
        else i++;
    }
}
int main()
{
    char  x[200],*p=x;
    int i = 0,n;
    //cin >> n;
    cin >> *p;
    read(x);
    return 0;
}
в чем здесь ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2015, 13:17
Ответы с готовыми решениями:

Проверка строки, если ли там цифры при вводе
Как проверить, если в строке цифры? Проверить на длину строки введённых символов удалось, а если ли что-то похожее типа type = int? ...

Почему при вводе строки с пробелом программа считывает только символы до пробела?
#include <iostream> using namespace std; int main() { string T; int S=0, i,d, m=0, n=0, p=0; cout<< "...

Как выводить из строки только цифры
Всем привет! Не знаю по тему ли я? Но очень нужная помощь! В поисковиках не нашел, (не считая только для JAVA, PHP и прочее). Так вот,...

16
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
27.10.2015, 14:10
Лучший ответ Сообщение было отмечено El Senor как решение

Решение

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
//#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "ctype.h"
using namespace std;
void read(unsigned char *x) {
    int i = 0;
 
    while (x[i]) {
        if (isdigit(x[i]))  cout << x[i++];
        else i++;
    }
    
}
int main()
{
    unsigned char  x[200] , *p = x;
    int i = 0, n;
    //cin >> n;
    cin >> p;
    read(x);
 
    
 
    system("PAUSE");
    return 0;
}
1
1 / 1 / 0
Регистрация: 10.02.2015
Сообщений: 56
28.10.2015, 18:39  [ТС]
Цитата Сообщение от daslex Посмотреть сообщение
1
//#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "ctype.h"
using namespace std;
void read(unsigned char *x) {
* * int i = 0;
while (x[i]) {
* * * * if (isdigit(x[i])) *cout << x[i++];
* * * * else i++;
* * }
}
int main()
{
* * unsigned char *x[200] , *p = x;
* * int i = 0, n;
* * //cin >> n;
* * cin >> p;
* * read(x);
system("PAUSE");
* * return 0;
}
спасибо той ошибки которую мне выдавало больше нет, но я столкнулся с другой проблемой при выполнении программа вылетает.Почему она так со мной поступает??? И еще одно можете обьяснить почему именно так надо было сделать?
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
29.10.2015, 09:46

Не по теме:

Цитата Сообщение от El Senor Посмотреть сообщение
Почему она так со мной поступает
это судьба....


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
//#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "ctype.h"
#include "cstring"
using namespace std;
void read(unsigned char *x) {
 int i = 0;
while (x[i]) {
 if (isdigit(x[i])) cout << x[i++];
 else i++;
}
}
int main()
{
 unsigned char x[200]={} , *p = x;
 
 //int i = 0, n;
 //cin >> n;
 cin.getline((char*)p,200);
 
 read(x);
 cout << '\n';
system("PAUSE");
 return 0;
}
Цитата Сообщение от El Senor Посмотреть сообщение
почему именно так
Именно так сделать что?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
29.10.2015, 10:06
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include "ctype.h"
using namespace std;
void PrintDigits(unsigned char *x) 
{
    for(int i=0;x[i];i++) 
        if (isdigit(x[i]))
            cout << x[i];
    cout<<endl;
}
int main()
{
    unsigned char  x[200] , *p = x;
    cout<<"Enter string:";
    cin >> p;
    PrintDigits(x);
    system("PAUSE");
    return 0;
}
0
1 / 1 / 0
Регистрация: 10.02.2015
Сообщений: 56
29.10.2015, 20:55  [ТС]
Цитата Сообщение от daslex Посмотреть сообщение
Именно так сделать что?
почему надо было обьявить тип char как безнаковый?
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
29.10.2015, 21:41
Цитата Сообщение от El Senor Посмотреть сообщение
почему надо было обьявить тип char как безнаковый?
а разве если как без указания знаковости не работает? Я просто так это сделал.
0
1 / 1 / 0
Регистрация: 10.02.2015
Сообщений: 56
29.10.2015, 23:17  [ТС]
Цитата Сообщение от daslex Посмотреть сообщение
а разве если как без указания знаковости не работает? Я просто так это сделал.
нет не работал.после того как указал выполнение запускалось,но вылетает
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
29.10.2015, 23:23
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
//#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "ctype.h"
#include "cstring"
using namespace std;
void read(char *x) {
 int i = 0;
while (x[i]) {
 if (isdigit(x[i])) cout << x[i++];
 else i++;
}
}
int main()
{
  char x[200]={} , *p = x;
 
 cin.getline(p,200);  //<--------- Вот что поменялось в моем варианте. (было как (cin << *p) , сначала поменял на (cin<<p) , подом исправил на рабочую (cin.getline(p,200))
 
 read(x);
 cout << '\n';
system("PAUSE");
 return 0;
}
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.10.2015, 23:28
Очень интересно наблюдать, как все ринулись решать проблему не зная её сути...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
29.10.2015, 23:35
Цитата Сообщение от El Senor Посмотреть сообщение
почему надо было обьявить тип char как безнаковый?
может быть потому что русские буквы отрицательные
Цитата Сообщение от castaway Посмотреть сообщение
Очень интересно наблюдать, как все ринулись решать проблему не зная её сути...
и я влез

Добавлено через 2 минуты
Цитата Сообщение от daslex Посмотреть сообщение
cin << *p
так стрелочки то в другою сторону
из консоли в переменную а не наоборот
и звездочка лишняя, не зачем разыменовывать указатель
C++
1
cin >>p;
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.10.2015, 23:35
ValeryS, вместо того, чтобы выяснить в чём проблема, все начали строить предположения Для меня это выглядит как-то.. глупо что-ли...

Не по теме:

Не хочу никого обидеть своим мнением.

0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
29.10.2015, 23:43

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Очень интересно наблюдать, как все ринулись решать проблему не зная её сути...
Вы о чем вообще? В этой теме все очевидно.



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
и звездочка лишняя, не зачем разыменовывать указатель
Вначале темы в коде строка 18. Я просто показал, что менял.

0
29.10.2015, 23:49

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
Вы о чем вообще? В этой теме все очевидно.
Если тебе нравится разбираться в нубовском коде в поисках какой-то неизвестной ошибки, вместо того чтобы изначально поинтересоваться в чём проблема, тогда да, всё очевидно.

0
30.10.2015, 00:03

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Если тебе нравится разбираться в нубовском коде в поисках какой-то неизвестной ошибки
Да какой неизвестной-то.

Человек очевидно выфильтровывает цифры.
Человек по ошибке делает cin >> *p;, вместо cin >> p;
Человек по ошибке вводит в p[] больше символов чем там вмещается.
Все. Вся проблема.

0
30.10.2015, 00:09

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
Все. Вся проблема.
У нас с тобой разные взгляды на ситуацию.
Ты - готов помочь любому лентяю.
Я - терпеть не могу тех, кто даже не может объяснить свою проблему.
Всё. Вся проблема. Точнее нет никакой проблемы.

0
1 / 1 / 0
Регистрация: 10.02.2015
Сообщений: 56
06.11.2015, 23:18  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
может быть потому что русские буквы отрицательные
честно говоря не понял. где тут русские буквы?

Добавлено через 5 часов 2 минуты
проблема решена я вместо printf поставил cout и заработало....яхз че так если будут мысли пишите. использую ms visual последней версии может это связано со средой?Спасибо всем тем кто пытался помочь и уделил время
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2015, 23:18
Помогаю со студенческими работами здесь

Реализация программы, издающей писк только при вводе латинских букв после цифры
Необходимо создать программу, издающую писк(звуковой сигнал) только при вводе латинских букв после цифр. Прошу подсказать, как и где...

При вводе a <= 0 выводить надпись о повторном вводе
Я думаю суть задачи понятна, нужно чтобы в том случае когда a&lt;=0, выходила надпись о повторнгом вводе, как это правильно реализовать? ...

Написать программу-фильтр: при нажатии любых клавиш выводить на экран только буквы и цифры
помогите пожалуйста, срочно нужно Написать программу-фильтр, которая при нажатии любых клавиш выводит на экран только буквы и цифры, при...

Почему при вводе строки с клавиатуры могу напечатать только 35 символов
подскажите, пожалуйста, почему при вводе строки с клавиатуры могу напечатать только 35 символов? string db 128 dup ('$')...вроде как 126...

Switch: выводить не только цифры, но и текст
Здравствуйте как сделать так что switch выводил не только цифры но и текст допусти есть такой код P1 = 2+1; switch...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru