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

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

Войти
Регистрация
Восстановить пароль
 
anfisso
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 4
#1

Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры - C++

13.10.2013, 14:54. Просмотров 631. Ответов 10
Метки нет (Все метки)

написать программу на C++ нужно

Задан текст, заканчивающийся точкой. Вывести на экран сначала все цифры, входящие в него, а затем все остальные литеры. При написании программы нельзя пользоваться стандартными функциями обработки строк
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 14:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры (C++):

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

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

Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной строки - C++
Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной строки. : a - указатель исходной стpоки

Сначала вывести все отрицательные числа, а затем все остальные - C++
написать последовательность операторов: дано 100 чисел..сначала вывести все отрицательные а затем все остальные я нереально путаюсь с...

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

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

10
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
13.10.2013, 14:59 #2
Цитата Сообщение от anfisso Посмотреть сообщение
Задан текст, заканчивающийся точкой. Вывести на экран сначала все цифры, входящие в него, а затем все остальные литеры.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
#include <set>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::multiset<char> m(str.begin(), str.end());
    for (auto c: m)
        std::cout << c;
}
Добавлено через 14 секунд
Про порядок ничего не сказано
0
anfisso
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 4
13.10.2013, 15:11  [ТС] #3
что то не работает, нужно для c++ builder 6
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 15:15 #4
Если и пробелы выводить:
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 <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    char *str = "as12df sdfse 3 2eee4ew w37wer2fgj9dl.";
    char *p = str;
    do
    {
        if (*p > 47 && *p < 58) cout << *p;
        ++p;
    } while (*p != '.');
    
    cout << endl;
    
    p = str;
    do
    {
        if (*p <= 47 || *p >= 58) cout << *p;
        ++p;
    } while (*p != '.');
    cout << *p << endl;
 
    system("pause");
    return 0;
}
1
Миниатюры
Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры  
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
13.10.2013, 15:18 #5
С динозаврами не работаю, но если этот код не поможет, то ничем более не подскажу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
#include <string>
#include <set>
#include <cstdlib>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::multiset<char> m(str.begin(), str.end());
    for (std::multiset<char>::iterator it = m.begin(); it != m.end(); ++it)
        cout << c;
    system("pause");
    return 0;
}
Я код писал под 11 стандарт (если заменить for-loop на обычный цикл, то под 98)

Добавлено через 2 минуты
alsav22, а если строковый литерал без точки? И вроде нигде нет гарантии, что числа стоят именно на этих позициях
1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 15:32 #6
Цитата Сообщение от MrGluck Посмотреть сообщение
alsav22, а если строковый литерал без точки? И вроде нигде нет гарантии, что числа стоят именно на этих позициях
Не понял вопроса. Есть задание:
Цитата Сообщение от anfisso Посмотреть сообщение
Задан текст, заканчивающийся точкой.
Позиции чисел - это о чём?
0
GirlAndCat
0 / 0 / 0
Регистрация: 11.08.2017
Сообщений: 2
06.10.2017, 14:21 #7
Здравствуйте, дабы не плодить темы, подниму этот топик.

Имеется все то же задание: "Задан текст заканчивающийся точкой
Вывести на экран сначала все цифры, входящие в него.а затем все остальные литеры. При написании программы нельзя пользоваться стандартными функциями обработки строк"

Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstdlib>
using namespace std;
const int i = 200;
int main()
{
    char s[i];
    cout << "Please enter your text \n";
    cin >> s;
    
    do {
        for (int j = 0; j < i; j++) if (s[i] >= '0' && s[i] <= '9') cout << s[i]; 
        for (int j = 0; j < i; j++) if (s[i] <= '0' || s[i] >= '9') cout << s[i];
    }
    while (s[i] != '.');
 
    system("pause");
    return 0;
}
Программа зацикливается и выводит бесконечное число раз символ "╬═".
Интересует, почему так происходит, где ошибка и как исправить? И будут ли данные циклы считывать русские символы?
p.s. темы читала, но хотелось бы реализовать ввод строки с клавиатуры.
0
Даценд
Модератор
Эксперт .NET
3516 / 3437 / 1770
Регистрация: 20.04.2015
Сообщений: 6,340
06.10.2017, 14:37 #8
Цитата Сообщение от GirlAndCat Посмотреть сообщение
где ошибка
в индексах
Цитата Сообщение от GirlAndCat Посмотреть сообщение
как исправить?
так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
using namespace std;
const int i = 200;
int main()
{
    char s[i];
    cout << "Please enter your text \n";
    cin >> s;
    for (int j = 0; j < strlen(s); j++) if (s[j] >= '0' && s[j] <= '9') cout << s[j]; 
    for (int j = 0; j < strlen(s); j++) if (s[j] <= '0' || s[j] >= '9') cout << s[j];
    system("pause");
    return 0;
}
1
COKPOWEHEU
257 / 246 / 46
Регистрация: 09.09.2017
Сообщений: 1,125
06.10.2017, 14:48 #9
У вас нет проверки на точку
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <ctype.h>
 
#define STR_SIZE 200
int main(){
  char s[STR_SIZE];
  char *sym;
  fgets(s, STR_SIZE-1, stdin);
  for( sym=s; sym[0]!='.' && sym[0]!=0; sym++ )if( isdigit(sym[0]) ) putchar(sym[0]);
  for( sym=s; sym[0]!='.' && sym[0]!=0; sym++ )if( !isdigit(sym[0]) ) putchar(sym[0]);
  return 0;
}
1
GbaLog-
06.10.2017, 15:01
  #10

Не по теме:

Цитата Сообщение от Даценд Посмотреть сообщение
(int j = 0; j < strlen(s); j++)
оптимизация тихо плачет в сторонке.

0
GirlAndCat
0 / 0 / 0
Регистрация: 11.08.2017
Сообщений: 2
06.10.2017, 16:24 #11
Цитата Сообщение от Даценд Посмотреть сообщение
в индексах

так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
using namespace std;
const int i = 200;
int main()
{
    char s[i];
    cout << "Please enter your text \n";
    cin >> s;
    for (int j = 0; j < strlen(s); j++) if (s[j] >= '0' && s[j] <= '9') cout << s[j]; 
    for (int j = 0; j < strlen(s); j++) if (s[j] <= '0' || s[j] >= '9') cout << s[j];
    system("pause");
    return 0;
}
Спасибо Вам, глупая ошибка получилась, но такие ошибки чаще всего ускользают из виду
strlen - стандартная функция обработки строк(?), по заданию ими нельзя пользоваться.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
У вас нет проверки на точку
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <ctype.h>
 
#define STR_SIZE 200
int main(){
  char s[STR_SIZE];
  char *sym;
  fgets(s, STR_SIZE-1, stdin);
  for( sym=s; sym[0]!='.' && sym[0]!=0; sym++ )if( isdigit(sym[0]) ) putchar(sym[0]);
  for( sym=s; sym[0]!='.' && sym[0]!=0; sym++ )if( !isdigit(sym[0]) ) putchar(sym[0]);
  return 0;
}
Я пыталась через Do-while сделать, за счет этого зацикливалась программа
Спасибо, добавила в свой for исключение по вашему примеру


P.S. Благодарю Вас за быстрый отклик
0
06.10.2017, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2017, 16:24
Привет! Вот еще темы с ответами:

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

Даны 100 чисел. Напечатать сначала все отрицательные из них, а затем все остальные - C++
Даны 100 чисел. Напечатать сначала все отрицательные из них, а затем все остальные воооооооооть=)

Дано 12 чисел. Напечатать сначала вс отрицательные из них, а затем все остальные. - C++
1)Дано 12 чисел. Напечатать сначала вс отрицательные из них, а затем все остальные. 2)Если в заданный текст вхлдит каждая из букв слова...

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


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

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

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