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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.61
Noklia
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 3
11.05.2010, 11:20     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #1
Помогите Решить!
Вот Условие:Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Вот черновик:

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
#include <iostream>
#include <stdio.h>
#include <ctype.h>
 
using namespace std;
 
#define STRING_LEN 70 
 
int main()
{
    FILE *file;
    char buff[STRING_LEN];
    unsigned int n, i, dig;
 
    file = fopen("file.txt", "r");
    if(!file)
        return -1;
    while(fgets(buff, STRING_LEN, file)) 
    {
        dig = 0; 
        n = strlen(buff);
        if(n >= 2) 
        {
            for(i = 0; i != n; i++) 
            {
                dig = isdigit(buff[i])
                    & isdigit(buff[i+1]); 
                if(dig) 
                    break; 
                }
            if(!dig) 
                cout << buff; 
        }
    }
    fclose(file);
    return 0;
}
Заранее благодарен! )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 11:20     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Посмотрите здесь:

Нужно написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа. C++
C++ Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых.
C++ Написать программу,которая считывает текст из файла и выводит на экран только предложения,содержащие введенное с клавиатуры слово.
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
11.05.2010, 14:40     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #2
Цитата Сообщение от Noklia Посмотреть сообщение
for(i = 0; i != n; i++)
for(int i=0;i<n;i++)
первое что заметил
-=ЮрА=-
Заблокирован
Автор FAQ
11.05.2010, 16:50     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #3
Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Вот мой взгляд на проблемму. Алгоритм программы такой
открываем файл, и производим построчное чтение, т.е. до символа '\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;
}
Миниатюры
Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел  
Вложения
Тип файла: txt text.txt (116 байт, 84 просмотров)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.05.2010, 17:11     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define FILE_NAME "text2.txt"
#define SPC " \t\n"
 
int main(void){
    FILE *f;
    char buf[BUFSIZ], *test, *p;
    int isGood;
 
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    while ( fgets(buf, BUFSIZ, f) ){
        if ( ( test = strdup(buf) ) == NULL ){
            perror("strdup");
            exit(1);
        }
        isGood = 1;
        for ( p = strtok(test, SPC); p; p = strtok(NULL, SPC) ){
            if ( strlen(p) == 2 && isdigit(p[0]) && isdigit(p[1]) ){
                isGood = 0;
                break;
            }
        }
        free(test);
        if ( isGood )
            printf("%s", buf);
    }
    if ( ferror(f) ){
        fprintf(stderr, "Can't read from file!\n");
        exit(1);
    }
    fclose(f);
    exit(0);
}
Noklia
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 3
12.05.2010, 00:01  [ТС]     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #5
Спасибо большое парни,очень благодарен! =)

Добавлено через 31 минуту
А вы их запускали?нормально работают? А то че то они у меня непашут! =(
Noklia
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 3
17.05.2010, 23:35  [ТС]     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #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
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define FILE_NAME "text2.txt"
#define SPC " \t\n"
 
int main(void){
    FILE *f;
    char buf[BUFSIZ], *test, *p;
    int isGood;
 
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    while ( fgets(buf, BUFSIZ, f) ){
        if ( ( test = strdup(buf) ) == NULL ){
            perror("strdup");
            exit(1);
        }
        isGood = 1;
        for ( p = strtok(test, SPC); p; p = strtok(NULL, SPC) ){
            if ( strlen(p) == 2 && isdigit(p[0]) && isdigit(p[1]) ){
                isGood = 0;
                break;
            }
        }
        free(test);
        if ( isGood )
            printf("%s", buf);
    }
    if ( ferror(f) ){
        fprintf(stderr, "Can't read from file!\n");
        exit(1);
    }
    fclose(f);
    exit(0);
}
Помогите пожалуста,срочно нужно,заранее огромное спасибо! )
HDR
39 / 14 / 2
Регистрация: 11.05.2010
Сообщений: 139
18.05.2010, 00:26     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #7
вот ток пока расчет размера импортируемого файла накатал.
Это пригодится для динамического выделения памяти под массив
куда считывать их из файла.

Добавлено через 20 секунд
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
void main (){
 
 
    FILE*stream=fopen("import.txt","r");
    
    fseek(stream,1,SEEK_END);
    long fSize=ftell(stream);
           rewind(stream);
 
    (int)fSize;
 
    printf("FILE_SIZE: %d",fSize);
 
    char *buffer=(char*)calloc(fSize,sizeof(char));
 
 
    getch();
}
Добавлено через 5 минут
кстати используй проверку на открытие файла только в тестах программы,
или если убедиться в том что файл действительно не открывается (поток точнее).

Проверка на это в готовой программе необязательна и толку от этого никакого,
только если наоборот.
Ванёк
4 / 4 / 0
Регистрация: 12.12.2009
Сообщений: 29
23.05.2010, 18:41     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #8
подскажите, а где должен находится файл из которого читает текст?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2010, 19:47     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
23.05.2010, 19:47     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел #9
Ванёк, где укажешь ему место там и должен вот пример:
C++
1
f = fopen("C:\\directory\\text.txt", "r")
Yandex
Объявления
23.05.2010, 19:47     Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Ответ Создать тему
Опции темы

Текущее время: 20:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru