Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами, Нужно переделать прогу под файлы 
:(
    Опции темы
maksim112610
Дата 31.5.2019, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 31.5.2019

Репутация: нет
Всего: нет



Парни пожалуйста переделайте код, чтобы он мог работать без cin,а всю информацию считывал из файлов.
Код

#include <conio.h> 
#include <string.h> 
#include <iostream> 
using namespace std;
struct date // дата 
{int day; 
int year; }; 
//======= class File ================= 
 
class File {
    char name[30]; //private 
    date t; 
    int obrash;
    int razmer;
public: 
    File(); 
    char *getalf();
    void setalf(char *);
    int getrazmer(); 
    int getobrash(); 
    void show(); 
};
 
File::File() {
    cout<<"Vvedite imya faila: "; cin>>name; 
    cout<<"Vvedite datu obrasheniya\n"; 
    cout<<"Den: "; cin>>t.day; 
    cout<<"God: "; cin>>t.year; 
    cout<<"Vvedite razmer: "; cin>>razmer; 
    cout<<"Vvedite kol-vo obrasheniy: "; cin>>obrash; 
    cout<<"\n";
}
 
void File::show() { 
    cout<<"Imya faila: "<<name<<endl; 
    cout<<"Data obrasheniya: "<<t.day<<'.'<<t.year<<endl; 
    cout<<"Razmer: "<<razmer<<endl; 
    cout<<"Kol-vo obrasheniy: "<<obrash<<endl; 
    cout<<"\n";
}
 
char *File::getalf() { return name; }
int File::getrazmer() { return razmer; } 
int File::getobrash() { return obrash; }
void File::setalf(char *inp_name) {
    strcpy(name, inp_name);
}
//список файлов по алфавиту
void spisalf(File spis[],int n) {
    cout<<"Spisok failov v alfavitnom poryadke:";  
    for(int i = 0; i < n; i++) {
        for(int j = n - 1; j > i; j--) {
            if(strcmp(spis[j].getalf(), spis[j - 1].getalf()) < 0) {
                char name[30];
                strcpy(name, spis[j].getalf());
                spis[j].setalf(spis[j - 1].getalf());
                spis[j - 1].setalf(name);
            }
        }
    }
}
 
//список файлов заданного размера
void spisrazmer(File spis[],int n) {
    int razm; 
    cout<<"Vvedite razmer: ";
    cin>>razm; 
    for(int i=0;i<n;i++) 
    if(spis[i].getrazmer() > razm)
        spis[i].show(); 

 
//список файлов по дате обращения
void spisobrash(File spis[],int n) {
    int obr; 
    cout<<"Vvedite kol-vo obrasheniy: "; cin>>obr; 
    for(int i=0;i<n;i++) 
        if (spis[i].getobrash()> obr)
            spis[i].show(); 

 
//========= main ================ 
int main() {
    File *spis; 
    int n; 
    cout<<"Vvedite kol-vo failov: ";
    cin>>n; 
    spis = new File [n]; 
 
    spisalf(spis,n);
    for(int i=0;i<n;i++) {
        cout<<"=============================="<<endl; 
        spis[i].show(); 
    } 
    //spisrazmer(spis,n); 
    //spisobrash(spis,n); 
    delete [] spis; 
    cout<<"Dlya prodoljeniya najmite lubyu knopku" ;
    while(!kbhit()); 
}

PM MAIL   Вверх
kapbepucm
Дата 6.6.2019, 11:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(maksim112610 @  31.5.2019,  01:47 Найти цитируемый пост)
чтобы он мог работать без cin,а всю информацию считывал из файлов
Заменить 
Код
cin>>t.day;
на
Код
setDay(&t.day);
,где setDay чтото подобное на:
Код
void setDay(int* day)
{
  ifstream file("example.bin", ios::binary);
  if (file.is_open())
  {
    file.read((char*)day, sizeof(int));
    file.close();
  }
}
Ну и по аналогии доделать всё остальное.

Это сообщение отредактировал(а) kapbepucm - 6.6.2019, 11:39


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
bsa
Дата 6.6.2019, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



maksim112610, создаешь переменную типа std::fstream, например: std::fstream file. Открываешь текстовый файл с помощью этого объекта. Все cin меняешь на file. В файле все данные должны быть на отдельных строках.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1134 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.