Потоки

Тема в разделе "C/C++/C#", создана пользователем Ilias, 13 апр 2011.

  1. Ilias

    Ilias Гость

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

    Вот я начал:

    Код (C++):
    char str[250]=" ",str2[250];
    int i=0;
    FILE *f, *fo;
    if((f = fopen("d:\\files.txt", "r")) == 0)
    {cout << "Ошибка чтения файла";
    return 1;
    }
    while(!feof(f))
    {
    str[i]= fgetc(f);
    i++;
    }
    cout<< str;
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Хм.. Круто. Я так понимаю идет считывание в несколько потоков без функции main с последующей возможностью усовершенствования кода.
     
  3. ierofant

    ierofant Гость

    Из C++ в вашем коде только cout.
    Вот чтение из файла в строку, но её разбиение и вывод проведите сами, уж больно неприятное задание, мне просто лень :facepalm: :
    Код (C++):
    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <algorithm>

    typedef std::istreambuf_iterator<char> Itr;

    int main ()
    {
    std::ifstream in ("file");
    if (in)
    {
    std::string str;
    std::copy (Itr (in), Itr (), std::back_inserter (str));
    in.close ();

    std::cout << str << std::endl;                           // Это для демонстрации, что всё прочитано, из программы можно убрать
    }
    else std::cout << "Ошибка чтения файла" << std::endl;

    return 0;
    }
     
  4. Ilias

    Ilias Гость

    В строку моя программа прекрасно считывает.Помощь требуется в выводе нужного.
     
  5. ierofant

    ierofant Гость

    Сдаётся мне, что если в файле будет больше 250-ти символов (что отнюдь не редкость), то всё перестанет быть таким уж прекрасным... :)
     
  6. Rififi

    Rififi Гость

    Ilias

    Помощь требуется в выводе нужного.

    а что непонятно?
    не знаешь как определить whether предложение начинается с тире?
     
  7. Ilias

    Ilias Гость

    Используется файл с такой строчкой:Hello!My name Vasia. -What?Vasia! -Yes.Не думаю что тут больше 250-ти символов :rolleyes:

    Добавлено:
    Значит не знаю,раз спрашиваю.Тут кроме тире ещё и пробелы.Образец я привел.
     
  8. ierofant

    ierofant Гость

    Надо стремится к универсальности. Зачем тогда аж 250 символов, если вы только на это предложение нацелены?
     
  9. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Догадайся куда подставить.
    Код (C++):
    int n = -1;
    ...
    while ( str[n+++1] == ' ' );
    if ( str[n] == '-' ) {
    str[i] = '\0';
    printf( "%s\n", str );
    }
     
  10. Ilias

    Ilias Гость

    Так?

    Код (C++):
    char str[250]=" ";
    int i=0,n = -1;
    FILE *f;
    if((f = fopen("d:\\files.txt", "r")) == 0)
    {cout << "Ошибка чтения файла";
    return 1;
    }
    while(!feof(f))
    {
    str[i]= fgetc(f);
    i++;
    }
    cout<< str;
    while ( str[n+++1] == ' ' );
    if ( str[n] == '-' ) {
    str[i] = '\0';
    printf( "%s\n", str );
    }

    Но результата нет :)
     
  11. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    1. меняй
    fopen("d:\\files.txt", "r")
    на
    fopen("d:\\files.txt", "rb")

    2. зачем нужна следующая строка я так и не понял.
    cout<< str;

    3. прикрепи files.txt

    Да, и черт побери что означает:
    ?!!???? А что есть? У тебя хоть "cout<< str" что-нибудь выводит?
     
  12. Ilias

    Ilias Гость

    Поменял.
    cout<< str показывает,как считались строки.Выводит всё правильно,как в файле.
    Результата нет-т.е. в работе программы ничего не изменилось.Как выводила строку из файла,так и выводит.Ничего не поменялось. Посмотреть вложение 4466
     
  13. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Я не вижу прикрепленный файл. Выкладывай еще раз и исходник целиком.
     
  14. Ilias

    Ilias Гость

    Код (C++):
    #pragma hdrstop
    #include <conio.h>
    #include <iostream.h>
    #include <fstream.h>
    #include <windows.h>
    #include <string.h>

    char bufRus[256];
    char* RUS(const char*text)
    {
    CharToOem(text,bufRus);
    return bufRus;
    }
    #pragma argsused
    int main(int argc, char* argv[])
    {
    char str[250]=" ";
    int i=0,n = -1;
    FILE *f;
    if((f = fopen("d:\\files.txt", "rb")) == 0)
    {cout << "Ошибка чтения файла";
    return 1;
    }
    while(!feof(f))
    {
    str[i]= fgetc(f);
    i++;
    }
    cout<< str;
    while ( str[n+++1] == ' ' );
    if ( str[n] == '-' ) {
    str[i] = '\0';
    printf( "%s\n", str );
    }

    getch();
    return 0;
    }
     

    Вложения:

    • files.txt
      Размер файла:
      39 байт
      Просмотров:
      14
  15. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Не верно понял задание...
    Код (C++):
    #include <windows.h>
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>

    char    bufRus[256];

    char* RUS( const char *text )
    {
    CharToOem( text, bufRus );
    return bufRus;
    }

    int main()
    {
    char    str[250] = " ";
    int     i = 0, n = -1, flag;
    FILE *  f;

    if ( (f = fopen( "files.txt", "rb" )) == 0 ) {
    cout << "Can\'t open file" << endl;
    return 1;
    }

    while ( !feof( f ) ) {
    str[i] = (char)fgetc( f );
    i++;
    }

    fclose( f );

    while ( n < i ) {
    while ( str[n+++1] == ' ' );

    flag = 0;
    if ( str[n] == '-' ) flag = 1;

    while ( str[n] != '.' && str[n] != '!' && str[n] != '?' ) {
    if ( flag ) cout << str[n];
    n++;
    }
    if ( flag ) cout << str[n] << endl;
    }

    getch();

    return 0;
    }
     
  16. Ilias

    Ilias Гость

    Теперь после компиляции мигнет окном и всё :ya_lamo: В чём дело?
     
  17. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    поставь путь правильный т.е.: "d:\\files.txt"
     
  18. Ilias

    Ilias Гость

    Спасибо!
     
Загрузка...
Похожие Темы - Потоки
  1. Mady
    Ответов:
    3
    Просмотров:
    1.475
  2. 203
    Ответов:
    4
    Просмотров:
    1.751
  3. Senset
    Ответов:
    0
    Просмотров:
    2.330

Поделиться этой страницей