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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс Матрица http://www.cyberforum.ru/cpp-beginners/thread127880.html
Ребят, помогите с прогой! Определить класс матрица. В класс включить два конструктора: создание матрицы по количеству столбцов и строк и конструктор-копия. Определить функции-члены: вывод на экран...
C++ Строки и иже с ними Как бы странно не звучало, но:я не могу нормально очистить строку в C++ пытаюсь присвоить признак конца строки первому символу строки--он присваивает первому символу, а все остальные так и остаются... http://www.cyberforum.ru/cpp-beginners/thread127871.html
Вывести на экран все различные натуральные числа, символьная запись которых содержится только строго в одной из строк массива C++
Добрый день. Срочно нужна помощь с решением следующей задачи. Помогите кто чем может...)) Дан массив строк. Необходимо вывести на экран все различные натуральные числа, символьная запись которых...
C++ Метод Холецкого для решения Слау
AZigumgaru, Скажу я Вам алгоритм очень прост мне помог вот эти два ресурса (по ним написал программу, использующую алгорит Холецкого)... Ты не мог бы выложить программу?
C++ Перевести натуральное число из десятичной системы в двоичную. http://www.cyberforum.ru/cpp-beginners/thread127845.html
Здравствуйте уважаемые форумчане :) Помогите составить программу Перевода числа из десятичной системы в двоичную. Очень блгодарен!!:)
C++ Решить пример Как вычислить 5 (1+0.04) в степени (1/3) с точностью до 0,001.??? подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
11.05.2010, 16:50
Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Вот мой взгляд на проблемму. Алгоритм программы такой
открываем файл, и производим построчное чтение, т.е. до символа '\n'
одновременно подсчитіваем число цифр в числах строки, если хотябы
одно число состоит более чем из 2-х цифр печатаем сообщение :
"consist numbers with num digits > 2\r\n"
Иначе возвращаемся на начало строки и при вовторном считывании выводим на экран
всю строку. Конешно 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
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
#include <stdio.h>
#include <ctype.h>
 
FILE * file = NULL;
char fPath[256];
int iNum;
 
//Печать строки из файла
//в случае если строка содержит число с количеством 
//цифр больше трёх выводится соответствующее сообщение
void PrintLine(FILE * file, int iPos);
//Подсчёт цифр в считываемом из файла числе
//возвращаемое значение - число цифр в числе
int ReadDigits(FILE * file, int iPos);
//Печать nChars символов с позиции iPos
//возвращаемое значение - число напечатанных символов
int PrintChars(FILE * file, int iPos, int nChars);
 
void main()
{
    printf("\tEnter file path :\r\n");
    printf("It may be full path as D:\\folder\\...\\fname.txt \r\n");
    printf("or only file name as fname.txt\r\n");
    //Вводим путь к файлу
    //В случае ввода имени файла для чтения будет окрываться
    //файл в одном каталоге с программой
    scanf("%s",fPath);
    //устанавливаем 2-й режим чтения "rb"
    //это очень важно!
    if(!(file = fopen(fPath,"rb")))
        printf("Error of open file : %s \r\n");
    else
    {
        iNum = 0;
        while(!feof(file))
        {
            printf("line %003d : ",(iNum++));
            PrintLine(file, ftell(file));
        }
        fclose(file);
    }
    main();
}
 
void PrintLine(FILE * file, int iPos)
{
    bool bCount = true;char chr;
    fread(&chr,1,sizeof(char),file);
    while(chr != '\n' && !feof(file))
    {
        if(bCount && isdigit(chr))
        if(ReadDigits(file, ftell(file)) < 2)
            bCount = true;
        else
            bCount = false;
        fread(&chr,1,sizeof(char),file);
    }
    if(bCount && !feof(file))
        PrintChars(file, iPos, ftell(file) - iPos);
    else
        printf("consist numbers with num digits > 2\r\n");
}
 
int ReadDigits(FILE * file, int iPos)
{
    int nDigits = 0;char chr;
    fseek(file,iPos,SEEK_SET);
    fread(&chr,1,sizeof(char),file);
    while(isdigit(chr) && !feof(file))
    {
        nDigits++;
        fread(&chr,1,sizeof(char),file);
    }
    return nDigits;
}
 
int PrintChars(FILE * file, int iPos, int nChars)
{
    int nPrint = 0;char chr;
    fseek(file,iPos,SEEK_SET);
    while(!feof(file) && nPrint++ < nChars)
    {
        fread(&chr,1,sizeof(char),file);
        printf("%c",chr);
    }
    return nPrint;
}
0
Миниатюры
Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел  
Вложения
Тип файла: txt text.txt (116 байт, 87 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru