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

Для тех кто умеет работать с файлами (Вывести на экран только строки, содержащие двузначные числа)

11.12.2012, 23:23. Показов 1814. Ответов 4
Метки нет (Все метки)

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

Добавлено через 1 час 36 минут
Помогите пожалуйста.

Добавлено через 21 час 41 минуту
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2012, 23:23
Ответы с готовыми решениями:

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

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

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

4
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
12.12.2012, 05:13
Звучит, прям как вызов:
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
void read_and_print( char *s );
 
int main( int argc, char **argv )
{
    if( argc < 2 ) {
    printf( "Error: enter file name\n" );
    return EXIT_FAILURE;
    }
    FILE *file;
    int i;
    char *line = NULL;
    size_t len = 0;
    ssize_t read;
    
    if( (file = fopen( argv[1], "r")) == NULL ) {
    fprintf( stderr, "Error: couldn't read file %s\n", argv[1] );
    return EXIT_FAILURE;
    }
    
    while( (read = getline( &line, &len, file)) != -1 ) {
    read_and_print( line );
    }
    free( line );
    fclose( file );
    
    return EXIT_SUCCESS;
}
 
void read_and_print( char *s )
{
    char *ps = s;
    int status = 1;
    
    while ( *ps != '\n' && *ps != EOF ) {
    while( isspace(*ps) )
        ++ps;
    if( *ps == '-' || *ps == '+' )
        ++ps;
    if( *ps == '0' )
        ++ps;
    if( isdigit(*ps) && isdigit(*(ps+1)) && isspace(*(ps+2)) )
        ps = ps + 2;
    else {
        status = 0;
        break;
    }
    }
    if( status )
    printf( "%s", s );
    return;
}
Добавлено через 8 минут
Небольшая поправка:
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
void read_and_print( char *s );
 
int main( int argc, char **argv )
{
    if( argc < 2 ) {
    printf( "Error: enter file name\n" );
    return EXIT_FAILURE;
    }
    FILE *file;
    int i;
    char *line = NULL;
    size_t len = 0;
    ssize_t read;
    
    if( (file = fopen( argv[1], "r")) == NULL ) {
    fprintf( stderr, "Error: couldn't read file %s\n", argv[1] );
    return EXIT_FAILURE;
    }
    
    while( (read = getline( &line, &len, file)) != -1 ) {
    read_and_print( line );
    }
    free( line );
    fclose( file );
    
    return EXIT_SUCCESS;
}
 
void read_and_print( char *s )
{
    char *ps = s;
    int status = 0;
    
    while ( *ps != '\n' && *ps != '\0' ) {
    while( isspace(*ps) )
        ++ps;
    if( *ps == '\n' || *ps == '\0')
        break;
    if( *ps == '-' || *ps == '+' )
        ++ps;
    if( *ps == '0' )
        ++ps;
    if( isdigit(*ps) && isdigit(*(ps+1)) && isspace(*(ps+2)) ) {
        ps = ps + 2;
        status = 1;
    }
    else {
        status = 0;
        break;
    }
    }
    if( status )
    printf( "%s", s );
    return;
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.12.2012, 14:08
xtorne21st, Я прям-таки очень прошу, чтобы ответы на тему в разделе С++ писались на С++. Ибо если ТС-а удовлетворяет ответ на Си, значит ему в раздел Си => тема будет перенесена.

Добавлено через 50 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <fstream>
 
#include <boost/regex.hpp>
 
int main()
{
   const boost::regex re("(^|\\D)\\d{2}($|\\D)");
   std::ifstream ifs("file1.txt");
   std::string current;
   while (std::getline(ifs, current))
   {
      if (boost::regex_search(current, re))
      {
         std::cout << current << std::endl;
      }
   }
}
Bash
1
2
3
4
5
6
7
8
9
forever@pterois:~/My_pro1/cpp_pro$ cat file1.txt 
this is nothing
what is 23 its
now this is end
and 1234 hello
12 with
forever@pterois:~/My_pro1/cpp_pro$ ./new 
what is 23 its
12 with
2
 Аватар для DPS
43 / 41 / 20
Регистрация: 12.11.2011
Сообщений: 188
12.12.2012, 15:21
Такой еще вариант)

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
#include<iostream>
#include<cctype>        //для функции isdigit()
#include<fstream>       //файлы
#include<string>        //строки
 
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
 
bool est_li_dve_cifri_v_stroke(const string &copy_stroka);
 
int main()
{
    setlocale(LC_ALL,"Rus");
 
    string namefile;
 
    cout<<"Введите путь к файлу:  ";
    getline(cin,namefile);
    
    ifstream in(namefile.c_str());;
 
    if(!in.is_open())
    {
        cout<<"Не удалось открыть файл!!!";
        exit(0);    //выход из программы
    }
 
    cout<<"*************************************************"<<endl;
 
    string stroka;
    bool a;
 
    while(in.good())
    {
        a=false;            //полагаем, что функция не содержит двухзначное число
        getline(in,stroka); //читаем строку
        a=est_li_dve_cifri_v_stroke(stroka);    //передаем ее в функцию, которая определяет, содержит ли строка двухзн. число
        
        if(a)       //если строка содержит двухзначн. число, выводим
            cout<<stroka<<endl;     //строку на экран
    }
 
    in.close();     //закрываем файл*/
 
    return 0;
}
 
bool est_li_dve_cifri_v_stroke(const string &copy_stroka)
{
    string::size_type i=0;
 
    char simvol;
 
    for(i=0;i!=copy_stroka.size();++i)  //от начала строки и до конца
    {
        if(isdigit (simvol=copy_stroka[i]&127) )    //если считанный символ - цифра, проверяем следующий
        {
            ++i;
 
            if(i==copy_stroka.size())   //если строка закончилась
                break;                  //выходим из цикла
            else if(isdigit(simvol=copy_stroka[i]&127) )    //иначе если считанный символ - цифра, проверяем следующий(число уже двухзначное)
                {
                    ++i;
 
                    if(i==copy_stroka.size()||(!isdigit( simvol=copy_stroka[i]&127)) )  //если строка закончилась или следующий символ - не цифра
                        return true;    //значит, строка содержит двухзначное число
                }
        }
    }
 
    return false;
}
Миниатюры
Для тех кто умеет работать с файлами (Вывести на экран только строки, содержащие двузначные числа)  
1
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 25
12.12.2012, 19:23  [ТС]
Спасибо народ) Очень помогли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2012, 19:23
Помогаю со студенческими работами здесь

Вывести на экран только предложения, содержащие двузначные числа (строки: string)
Помогите разобраться со строками, второй вечер не могу найти ошибку. Задание такое: Вывести на экран только предложения, содержащие...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru