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

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

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

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

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

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

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

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

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

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

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

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

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

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

4
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.12.2012, 05:13 #2
Звучит, прям как вызов:
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
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
12.12.2012, 14:08 #3
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
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 109
Завершенные тесты: 1
12.12.2012, 15:21 #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
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
Миниатюры
Для тех кто умеет работать с файлами (Вывести на экран только строки, содержащие двузначные числа)  
Roka
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 25
12.12.2012, 19:23  [ТС] #5
Спасибо народ) Очень помогли
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 19:23
Привет! Вот еще темы с ответами:

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

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

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

Вывести на экран все двузначные числа, оканчивающиеся на 2 или 5 - C++
Составить программы для решения следующих задач (выполните задание двумя способами: с использованием одного цикла и с использованием...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
12.12.2012, 19:23
Ответ Создать тему
Опции темы

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