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

Проверить правильность написания чисел в тексте

10.11.2016, 19:46. Показов 2870. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди добрые, помогите пожалуйста, как написать программу?Просто я новичек!(

Проверить правильность написания чисел в тексте.Встретившиеся в начале числа незначащие нули опустить.Исправленный текст напечатать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2016, 19:46
Ответы с готовыми решениями:

Проверить правильность написания чисел в тексте
Проверить правильность написания чисел в тексте. Встретившиеся в начале числе незначащие нули опустить. Исправленный текст напечатать.

Проверить правильность написания чисел в тексте; встретившиеся в начале числа незначащие нули опустить
Привет, возникла такая проблема Цитирую задание : "Проверить правильность написания чисел в тексте. Встретившиеся в начале числа...

Проверить правильность написания сочетаний «жи», «ши», «ча», «ща»
Последовательностью слов задана строка. Проверить правильность написания сочетаний «жи», «ши», «ча», «ща», «чу» и «щу». Если надо, то...

16
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 8
12.11.2016, 21:29  [ТС]
ну пожалуйстаааа
0
110 / 1 / 2
Регистрация: 10.12.2015
Сообщений: 93
12.11.2016, 22:11
Проверка на правильность ввода с клавиатуры
Посмотри тут.
Не жди пока ответят , пытайся искать и все найдешь.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.11.2016, 22:32
Цитата Сообщение от Marisabelka Посмотреть сообщение
Люди добрые
Это мы.
Цитата Сообщение от Marisabelka Посмотреть сообщение
помогите пожалуйста, как написать программу?Просто я новичек!(
Это понятно.
Цитата Сообщение от Marisabelka Посмотреть сообщение
Проверить правильность написания чисел в тексте.Встретившиеся в начале числа незначащие нули опустить.Исправленный текст напечатать.
Это вообще непонятно.
Marisabelka, не ждите, что кто-то потратит полчаса - час впустую, только потому, что Вам лень написать условие по-человечески. Пишите сюда текст условия полностью. Пример исходного файла и выходного - обязательно. И Вы удивитесь, как быстро Вам ответят. Если конечно не окажется что прога тянет на курсовик или кусок прикладной задачи, скажем.
0
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 8
05.12.2016, 16:52  [ТС]
задание: Встретившиеся в начале числа незначащие нули опустить.(например было 0056, стало 56)
написала программу,но для вывода на консоль, а мне надо чтобы он в файл это выводил, не знаю как делать,знаю что как то надо указывать путь ,но как?
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
45
46
47
48
49
50
#include "stdafx.h" 
#include <iostream> 
#include <conio.h> 
#include <string> 
#include <fstream> 
#include <regex> 
 
 
using namespace std;                        //Определение пространства имён, чтобы не использовать его в программе много раз
 
int main()
{
    setlocale(LC_ALL, "Russian");           //Функция для отображения русского текста в консоли
 
 
 
 
    FILE * f;
    int n;
    char S[100], name[] = "обычный.txt";
 
    f = fopen(name, "w");                   //Открываем файл для записи в папке проекта
    puts("Введите предложение: ");            //Вывод на консоль
    gets_s(S);                              //Считываем строку с клавиатуры
    fprintf(f, "%s", S);                    //Запись строки в файл
    fclose(f);                              //Закрываем файл
 
    f = fopen(name, "r");                   //Открываем файл для чтения
    fgets(S, 100, f);                       //Считываем строку
    n = strlen(S);                          //Вычисляем её длину
 
    cout << "Исправленное предложение: " << endl;    //Вывод на консоль
    if (S[0] == '0')
        S[0] = ' ';
    for (int i = 0; i<n; i++)
    {
        if ((S[i] == ' ') && (S[i + 1] == '0'))     //Проверка на незначащие нули в числах
        {
            S[i + 1] = ' ';                         //Вывод исправленных элементов строки
        }
        else
        {
            cout << S[i];
 
        }
    }
    cout << endl;
    fclose(f);                                      //Закрываем файл
    system("PAUSE");                                //Закрытие консоли по нажатию клавиши
}
0
370 / 133 / 44
Регистрация: 05.02.2015
Сообщений: 901
06.12.2016, 00:24
вот, пишет в файл только цифры исходной строки, отличные от нуля:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
#include <fstream>
#include <clocale>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
cout << "ввведите строку с числами" << endl;
char input_line [100];
ofstream output("d:/output.txt", ios::app);
cout << "ввведите строку с числами" << endl;
cin >> input_line;
int n = strlen(input_line);
for (int i = 0; i < n; i++)
if (input_line[i] >='1' && input_line[i] <= '9')
output << input_line[i];
output.close();
 
return 0;
}
Добавлено через 26 минут
а вообще, в вашем варианте: что вам мешает вместо cout использовать fprintf, который вы уже использовали при записи исходной строчки в файл?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.12.2016, 01:03
Цитата Сообщение от minore Посмотреть сообщение
только цифры исходной строки, отличные от нуля:
Я плохо понял о каких числах речь: о целых (их аж целых несколько), или о float или double...
А не значащие в фразе:
Цитата Сообщение от Marisabelka Посмотреть сообщение
незначащие нули опустить.
это те, которые, если их опустить, - ничего не изменится:
0023 = 23
1,234e-01 = 0,1234
но поскольку в тексте могут быть и слова, то ТУ-134 станет 134 или, даже -134, Боинг-747 соответственно 747... Мутно всё. Когда станет яснее можно будет, что-то ответить.
И С-подобные либы, для такой задачки где парсинг возможен, это жестковато.
0
370 / 133 / 44
Регистрация: 05.02.2015
Сообщений: 901
06.12.2016, 10:15
будьте проще) она программу уже написала, только у нее проблема была выводить не на консоль а в файл. я всего лишь показал работу с файлами в C++) хотя ее программу доработать - это открыть файл для записи (в сишной натации у нее есть) и вместо cout использовать fprintf.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.12.2016, 10:55
Цитата Сообщение от minore Посмотреть сообщение
будьте проще)
Не умею)
Цитата Сообщение от minore Посмотреть сообщение
она программу уже написала
программа будет игнорить многократные ведущие нули, а одиночные не ведущие будет, наоборот, - удалять:
"002" = "02" и "0" = ""
И всё бы ничего, но я не понимаю тех, кто задаёт такие задачи:
Цитата Сообщение от Marisabelka Посмотреть сообщение
Проверить правильность написания чисел в тексте.Встретившиеся в начале числа незначащие нули опустить.
людям далёким от программирования.
0
06.12.2016, 11:07

Не по теме:


нормальная задача для 1, 2 курса. а если кто-то поступил на программиста, но не справляется, так не переделывать же под него программу.

0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,813
06.12.2016, 11:09
Цитата Сообщение от IGPIGP Посмотреть сообщение
ТУ-134 станет 134
Не станет, потому что ТУ-134 не число, а слово (текст) и его обрабатывать не нужно. Для начала, мне кажется, надо разбить весь текст на слова (слово должно начинаться с буквы, а перед словом может идти пробел, кавычки или скобки; после слова должен быть пробел или знак пунктуации; после слова может быть окончание файла или переход на новую строку). Потом каждое из слов обработать, и если очередное слово будет числом, то с ним и работать уж.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.12.2016, 11:26
Слова это подстроки. Из символов разделителей кроме пробела ничего не видно. А если формат файла не определён, то самое невинное с виду ограничительное условие может выглядеть в реализации, достаточно весело. А почему, я должен догадываться что любое слово типа "агент-007" это ошибочно написанное "-7" ?!
Цитата Сообщение от Nishen Посмотреть сообщение
Не станет, потому что ТУ-134 не число, а слово (текст) и его обрабатывать не нужно.
Если набрать без пробелов qwer123ty программа не сможет понять число это или нет. Нужен набор правил для разбора.
Цитата Сообщение от Nishen Посмотреть сообщение
Для начала, мне кажется, надо разбить весь текст на слова (слово должно начинаться с буквы, а перед словом может идти пробел, кавычки или скобки; после слова должен быть пробел или знак пунктуации
Вот-вот. Приходится самому выдумывать формат.

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

Не по теме:

Цитата Сообщение от minore Посмотреть сообщение
нормальная задача для 1, 2 курса. а если кто-то поступил на программиста
я не программист, но как по мне, - такое для будущих программистов - разрушающий посыл. Программирование это математика. Изложение задачи таким языком для будущих программистов это кислота (имхо). Тут уж лучше "удалять нечетные элементы из массива". Если иметь ввиду "логический массив", то оно ещё имеет какой-то вид.

0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
06.12.2016, 13:57
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//Проверить правильность написания чисел в тексте. Встретившиеся
//в начале числа незначащие нули опустить.Исправленный текст напечатать.
//задание: Встретившиеся в начале числа незначащие нули опустить.
//(например было 0056, стало 56)
//надо чтобы он в файл это выводил
///////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
const   char    SPACE_SYMB  {' '};
const   char    ZERO_SYMB   {'0'};
///////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
typedef long long       T_int;
///////////////////////////////////////////////////////////////////////////////
bool    successfully_set_int_val
    (
        T_str   const   &   word,
        T_int           &   val
    )
{
    auto    word_cur    ( word );
 
    while   (
                    word_cur.size   ()  >   1
                &&  word_cur.front  ()  ==  ZERO_SYMB
            )
    {
        word_cur.erase(0, 1);
    }
 
    size_t  ind{};
 
    try
    {
        val     =   std::stoll  (
                                    word,
                                    &ind
                                );
 
        return      ind
                ==  word.size();
    }
    catch(...)
    {
        return  false;
    }
}
///////////////////////////////////////////////////////////////////////////////
T_str   to_correct_numbers_writing( T_str   const   &   line_cur )
{
    std::istringstream  ssin( line_cur );
    std::ostringstream  sout;
    T_str               word;
 
    while( ssin >> word )
    {
        T_int   val{};
 
        if  (
                successfully_set_int_val
                    (
                        word,
                        val
                    )
            )
        {
            sout    <<  val;
        }
        else
        {
            sout    <<  word;
        }
 
        sout    <<  SPACE_SYMB;
    }//while
 
    return  sout.str();
}
///////////////////////////////////////////////////////////////////////////////
void    copy_with_correction_of_numbers_writing
    (
        std::istream    &   istr,
        std::ostream    &   ostr
    )
{
    T_str   line_cur;
 
    while   (
                getline( istr,  line_cur )
            )
    {
        ostr    <<  to_correct_numbers_writing( line_cur )
                <<  std::endl;
    }//while
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    const   T_str   IFILE_NAME  {"i.txt"};
    const   T_str   OFILE_NAME  {"o.txt"};
    std::ifstream   ifile       ( IFILE_NAME );
 
    if( !ifile )
    {
        std::cout   <<  "bad file!"
                    <<  std::endl;
 
        exit(1);
    }//if
 
    std::ofstream   ofile( OFILE_NAME );
 
    copy_with_correction_of_numbers_writing
        (
            ifile,
            ofile
        );
 
    std::cout   <<  "finish"
                <<  std::endl;
}
0
06.12.2016, 14:26

Не по теме:


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

0
06.12.2016, 14:35

Не по теме:

Цитата Сообщение от minore Посмотреть сообщение
Если вы думаете, что программист всегда получает на руки математически отточенное техническое задание, то вы заблуждаетесь. так должно быть, но это не так.
и мы будем учить новичков так чтобы это было нормой. Да? Я думаю, что каждому периоду своя задача. Убрать ведущие нули в файле при неполном (мягко говоря условии), когда нужно бы понять как их в слове убрать, - садизм и пустая трата времени.
Цитата Сообщение от minore Посмотреть сообщение
"я не программист...." а значит, не вам и не мне оценивать правильность заданий, которые даются преподавателями с определенным опытом подачи материала.
Правильно: - "Там же не дураки сидят!".
Поэтому так и живём.
Спасибо за диалог. Признаю, что может и погорячился.

0
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 8
22.12.2016, 23:29  [ТС]
Вобщем всем большое спасибо ,программу я как то сделала вроде,не без помощи конечно..
Но еще одна маленькая просьба))) кто может помочь комментарии написать))буду очень благодарна)
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 "stdafx.h"
#include <iostream>
#include <fstream>
#include "string"
#include <conio.h>
using namespace std;
int main()
{
    ifstream file("B:/badfile.txt");
    char s[500];
    ofstream out("B:/goodfile.txt"); 
    file.getline(s, 500); 
    int l = strlen(s), pos = -1; 
    for (int i = 0; i < l; i++) 
    {
        if (s[i] >= '1' && s[i] <= '9')
        {
            pos = i;
        }
        if (pos != -1 && (s[i] == ' ' || s[i] == '.' || s[i] == ',' || s[i] == '!'))
            pos = -1;
        if (s[i] == '0' && pos == -1)
        {
            if (s[i] == '0')
                s[i] = ' ';
        } 
    } 
    cout << s; 
    out << s; 
    file.close(); 
    out.close(); 
    _getch(); 
    return 0;
}
 Комментарий модератора 
Marisabelka, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.9 (порядок оформления кода).
0
370 / 133 / 44
Регистрация: 05.02.2015
Сообщений: 901
23.12.2016, 21:22
вот комментарии, плюс подправил некоторые неточности:
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
#include <iostream> // библиотека ввода вывода
#include <fstream> // библиотека для работы с файлами
#include <string> // подключаем строки
#include <conio.h> // для задержки после выполнения программы
using namespace std; // подключаем пространство 
int main() // точка входа в программу
{
ifstream file("D:/badfile.txt"); // открываем файл на чтение
string s, s1; // объявление входной и выходной строк
ofstream out("D:/goodfile.txt"); // открытие файла на запись
getline(file, s); // считываем строку
for (int i = 0; i < s.length(); i++) // бежим по строке
{
if (s[i] >= '1' && s[i] <= '9') // проверяем на цифру от 1 до 9
s1 += s[i]; // присваиваем цифру выходной строке
if (s[i] == '0' && s[i - 1] >= '1' && s[i - 1] <= '9') // если цифра нулевая, но до нее есть также цифра надо записать
s1 += s[i]; // присваиваем цифру выходной строке
} // остальные символы не пишем
cout << s1;  // выводим на консоль
out << s1; // запись выходной строки в файл
file.close();// закрытие файла на чтение
out.close(); // закрытие файла на запись
_getch(); // задержка, пока не нажата клавиша
return 0; // точка возврата в программе
} // конец
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2016, 21:22
Помогаю со студенческими работами здесь

Проверить правильность написания заглавных букв в текстовом файле (не понимаю, почему программа не работает)
Мне необходимо было проверить правильность написания заглавных букв в текстовом файле. Исправить текст и вывести его в новый файл.Помогите,...

Проверить правильность расстановки в тексте круглых скобок
Задача: Проверить правильность расстановки в тексте круглых скобок. #include &lt;iostream&gt; #include &lt;cstring&gt; using...

Проверить правильность расстановки в тексте круглых скобок (конечный автомат)
Только начала изучать С++.Необходимо проверить правильность расстановки в тексте круглых скобок. Текст вводится с клавиатуры и...

Проверить в тексте файла правильность расстановки открывающих и закрывающих скобок
Помогите, пожалуйста написать программу C++ Дан текстовый файл INPUT.TXT. Проверить в тексте файла правильности расстановки открывающих и...

Проверить правильность расстановки и вложенности скобок в тексте (абстрактный стек)
реализовать с помощью связного списка...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru