Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
 Аватар для Студентка-007
1 / 1 / 1
Регистрация: 18.01.2016
Сообщений: 10

Вывод на экран только строк, не содержащих двузначных чисел

23.06.2016, 20:09. Показов 3038. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, помогите исправить ошибки. Программа запускается, но значения выводить не желает
Задание: Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел.
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
#include <fstream>
#include <iostream>
#include <cstdio>
#include <clocale>
using namespace std;
int main() {
    setlocale(LC_ALL, "Rus");
    ifstream fin("text2.txt");
    if (!fin) { cout << "Ошибка открытия файла." << endl; return 1; }
    fin.seekg(0, ios::end); // определение начала файла и смещение текущей позиции чтения до конца файла
    long len = fin.tellg(); // переменная хранящая длину файла
    char *buf = new char[len + 1]; // выделение памяти для символьной строки buf
    fin.seekg(0, ios::beg); // смещение текущей позиции чтения от начала файла
    fin.read(buf, len); // считывание из файла len символов в массив buf
    buf[len] = '\0'; long n = 0, i = 0;
    while ((buf[i] = fin.get()) != EOF) {
        for (int i = 0; buf[i] != '\0'; ++i)
            if (isdigit(buf[i])){
                for (int j = i + 1; buf[j] != '\0' && isdigit(buf[j]); ++j);
                int j = n;
                if (j - i == 2)
                {
                    cout << buf << endl;system("pause");
                }
                i = j;
            }
    }
    fin.close(); // 9
    system("pause");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.06.2016, 20:09
Ответы с готовыми решениями:

Строка: Вывести на экран только те строки, что не содержат двузначных чисел.
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел.

Считать текст из файла и вывести на экран только строки, не содержащие двузначных чисел
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел. Вылетает программа...

Считать текст из файла и вывести на экран только строки, не содержащие двузначных чисел
помогите пожалуйста написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел ...

6
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
23.06.2016, 20:34
Так, вот обнаружил ты с помощью if (isdigit(buf[i])) цифру, а дальше что происходит вообще? Пожалуйста, объясни.
1
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
23.06.2016, 20:40
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
#include <iostream>
#include <fstream>
#include <string>
 
void output_lines(std::ostream& _out, std::istream& _in){
    const char delim[] = "0123456789";
    std::string::size_type i, j;
    std::string s;
    bool ok;
    while(std::getline(_in, s) && !_in.fail()){
        ok = true;
        for(i = 0; (i = s.find_first_of(delim, i)) != std::string::npos; i = j){
            if((j = s.find_first_not_of(delim, i)) == std::string::npos)
                j = s.length();
 
            if((j - i) == 2){
                ok = false;
                break;
            }
        }
 
        if(ok)
            _out << s << std::endl;
    }
}
 
int main(void){ 
    std::ifstream fp("file.txt");
    output_lines(std::cout, fp);
    fp.close();
    return 0;
}
1
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
23.06.2016, 20: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
#include <iostream>
#include <string>
#include <fstream>
 
void checkDigits(std::string line) {
 
    for (size_t i = 0; i < line.size(); ++i) {
 
        if (isdigit(line[i])) {
 
            size_t amount_of_digits = 0;
 
            while (isdigit(line[i++]))
                amount_of_digits++;
 
            if (amount_of_digits == 2)
                return;
 
        }
 
    }
 
    std::cout << line << std::endl;
}
 
int main() {
    
    std::ifstream inStream;
 
    inStream.open("test.txt");
    if (!inStream || inStream.fail()) { /* Ошибка */ }
 
    std::string line;
    while (std::getline(inStream, line))
        checkDigits(line);
 
    inStream.close();
 
}
1
 Аватар для Студентка-007
1 / 1 / 1
Регистрация: 18.01.2016
Сообщений: 10
23.06.2016, 21:08  [ТС]
Цитата Сообщение от Студентка-007 Посмотреть сообщение
for (int j = i + 1; buf[j] != '\0' && isdigit(buf[j]); ++j);
Определяем где заканчивается подстрока цифр
Цитата Сообщение от Студентка-007 Посмотреть сообщение
if (j - i == 2)
если количество цифр в строке равно двум, выводим строку..а почему у меня равно двум, интересно))
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
23.06.2016, 21:15
Студентка-007, вам стоит сделать подобие моего условия, там все намного более понятно. Видно, что при встрече цифры начинается их счет и, если их кол-во подряд составляет 2, то я просто выхожу из функции, обрабатывающей строку.
1
 Аватар для Студентка-007
1 / 1 / 1
Регистрация: 18.01.2016
Сообщений: 10
23.06.2016, 21:43  [ТС]
Программа работает отлично только не выводит строки с 3-х и т.д-значными числами, можно этот момент учесть и попробовать решить)

Добавлено через 5 минут
А нет, все в порядке. В комментарий Ваш плохо вчиталась видимо. Спасибо большуущее за помощь и за допуск к сегодняшнему экзамену, в том числе

Добавлено через 4 минуты
в 38 строке нужно system("pause") добавить, без него у меня программа срабатывала слишком быстро, даже можно сказать, неуловимо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.06.2016, 21:43
Помогаю со студенческими работами здесь

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

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

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

Вывод на экран всех двузначных чисел от 11 до xy
Здравствуйте! Нужна помощь с написанием программы по выводу на экран всех двузначных чисел от 11 до xy, где x и y отдельно вводятся с...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru