1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

С++.Работа с файлами. Текстовый файл.

Тема в разделе "Вопросы новичков и не только", создана пользователем -, 26 дек 2010.

  1. Гость

    Репутация:
    0
    С использованием классов обязательно .Имеется текстовый файл. Напечатать.
    а)его первую строчку.
    б)его пятую строчку.
    в)его первые пять строк.
    г)его строки с s1 по s2.
    д)весь файл.

    работу с файлами вообще не одупляю. Просьба кто может напишите простую и понятную прогу хоть под а) дальше думаю по подобию разберусь.
     
  2. Rififi

    Rififi Гость

    Репутация:
    0
    Код:
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <locale>
    
    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <sstream>
    
    /*
    С использованием классов обязательно .Имеется текстовый файл. Напечатать.
    а)его первую строчку.
    б)его пятую строчку.
    в)его первые пять строк.
    г)его строки с s1 по s2.
    д)весь файл.
    */
    
    struct file_printer
    {
    file_printer(std::istream& is) : is_(is) {}
    
    void print(size_t from, size_t length) const
    {
    is_.seekg(0, std::ios_base::beg);
    
    std::string s;
    for (size_t i=0; i<from; i++)
    if (!std::getline(is_, s))
    return;
    
    size_t i = 0;
    do 
    {
    std::cout << "Line #" << (i+1) << ": " << s << std::endl;
    i++;
    } while (i < length && std::getline(is_, s));
    
    std::cout << std::endl;
    }
    
    std::istream& is_;
    };
    
    int main()
    {
    setlocale(LC_ALL, "");
    
    std::ifstream ifs("lines.txt");
    if (!ifs)
    return 0;
    
    const file_printer fp(ifs);
    
    fp.print(1, 1);
    fp.print(5, 1);
    
    fp.print(1, 5);
    
    const size_t s1 = 6;
    const size_t count = 4;
    fp.print(s1, count);
    
    return 0;
    }
    программа читает строки из файла lines.txt
    если в нём содержится, например, это:

    строка 1
    строка 2
    строка 3
    строка 4
    строка 5
    строка 6
    строка 7
    строка 8
    строка 9
    строка 10
    строка 11


    то вывод будет таким:

    Код:
    Line #1: строка 1
    
    Line #1: строка 5
    
    Line #1: строка 1
    Line #2: строка 2
    Line #3: строка 3
    Line #4: строка 4
    Line #5: строка 5
    
    Line #1: строка 6
    Line #2: строка 7
    Line #3: строка 8
    Line #4: строка 9
     
  3. Гость

    Репутация:
    0
    Благодарю ))))
     
  4. Гость

    Репутация:
    0
    Но если честн отедьные строки понятны отдельные нет.
    Общими силами написали программу но почему то выскакивают ошибки в Майкрософт Вижуал

    Не подскажете уважаемый Rififi что не так B)

    // 15.16.cpp: определяет точку входа для консольного приложения.
    //

    Код:
    #include "stdafx.h"
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <cstring>
    #define n 10;
    using namespace std;
    class file
    {public:
    void open()
    {char s[n];
    int i;
    ifstream f;
    f.open("D:\\15.16\\temp.txt");
    if(f);
    for(i=0;i<n;i++)
    {f>>s[i];}
    {
    cout<<"a)"<<endl;
    cout<<s[0]<<endl;
    }
    
    {
    cout<<"b)"<<endl;
    cout<<s[4]<<endl;
    }
    
    {
    cout<<"v)"<<endl;
    for(i=0;i<5;i++)
    {
    cout<<s[i]<<endl;
    }
    }
    
    {
    cout<<"g)"<<endl;
    cout<<"Vvedite c kakoj stroki pe4atat S1=";
    int s1;
    cin>>s1;
    cout<<endl;
    
    cout<<"Vvedite do kakoj stroki pe4atat S2=";
    int s2;
    cin>>s2;
    cout<<endl;
    
    
    for(s1;s1<s1;s1++)
    {
    cout<<s[s1]<<endl;
    }
    }
    
    {
    cout<<"d)"<<endl;
    for(i=0;i<n;i++)
    {
    cout<<s[i]<<endl;
    }
    }
    f.close();
    }
    
    }st;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    st.open;
    system("PAUSE");
    return 0;
    }
     
  5. Rififi

    Rififi Гость

    Репутация:
    0
    АМ101

    твоя прога слишком помойно оформлена, глаза прямо ломает, и рука сама ищет кнопку DEL
    Приведи её в божеский вид, как у меня в посте.
     
  6. Гость

    Репутация:
    0
    Уважаемый Rififi, отредактировал B)
     
  7. Rififi

    Rififi Гость

    Репутация:
    0
    АМ101

    #define n 10;

    точку с запятой ставить нельзя

    if(f);
    for(i=0;i<n;i++)

    оператор if ничего не делает

    for(s1;s1<s1;s1++)

    условие в цикле бредовое

    это что сразу заметно.

    ну и самое главное - прога в корне неверна, поскольку по заданию нужно считывать строки, а вот здесь у тебя читаются символы:

    {f>>s;}
     
  8. Гость

    Репутация:
    0
     
  9. Гость

    Репутация:
    0
    у менятакое ошущение что ошибка идентификатор string :ya_lamo: , не подсвечивается синим как int или char , а горит черным. Может его надо заменить другим типом ? или string не может быть массивом?

    Код:
    // 15.15ы.cpp: определяет точку входа для консольного приложения.
    //
    #include "stdafx.h"
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <cstring>
    #define n 10
    using namespace std;
    class file
    {public:
    void open()
    {string s[n]; /*у менятакое ошущение что ошибка тут вопрос идентификатор string не подсвечивается синим как int или char , а горит черным. Может его надо заменить другим типом ? или string не может быть массивом??????*/
    int i;
    ifstream f;
    f.open("D:\\15.16\\temp.txt");
    //if(f);
    //for(i=0;i<n;i++)
    //{f>>s[i];}
    {
    cout<<"a)"<<endl;
    cout<<s[0]<<endl;
    }
    
    {
    cout<<"b)"<<endl;
    cout<<s[4]<<endl;
    }
    
    {
    cout<<"v)"<<endl;
    for(i=0;i<5;i++)
    {
    cout<<s[i]<<endl;
    }
    }
    
    {
    cout<<"g)"<<endl;
    cout<<"Vvedite c kakoj stroki pe4atat S1=";
    int s1;
    cin>>s1;
    cout<<endl;
    
    cout<<"Vvedite do kakoj stroki pe4atat S2=";
    int s2;
    cin>>s2;
    cout<<endl;
    
    
    for(int i=s1;i<s2;s1++)
    {
    cout<<s[s1]<<endl;
    }
    }
    
    {
    cout<<"d)"<<endl;
    for(i=0;i<n;i++)
    {
    cout<<s[i]<<endl;
    }
    }
    f.close();
    }
    
    }st;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    st.open;
    system("PAUSE");
    return 0;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    return 0;
    }
     
Загрузка...

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