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

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

Восстановить пароль Регистрация
 
Стивен
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 36
10.04.2012, 19:31     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #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
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <iomanip.h>
using namespace std;
main()
{ int mol,pens=0,i;
float m,p,n;
char fam[10][15]={"Ivanov", "Cidorova", "Cyvorov", "Boiko", "Petrov", "Katyzhanskay", "Mirnaj",     "Belozercev", "Irduncev", "Vacileva"};
int vozr[10]={65, 32, 90, 68, 80, 74, 56, 38, 54, 60};
char pol[10]={'m', 'w', 'm', 'm', 'm', 'w', 'w', 'm', 'm', 'w'};
int st[10]={7, 12, 19, 2, 10, 8, 5, 16, 3, 10};
 
for (i=0;i<10; i++) {
 cout<<setw(12)<<fam[i]<<" ";
  cout<<setw(5)<< vozr[i];
  cout<<setw(5)<<pol[i];
  cout<<setw(5)<<st[i]<<"\n";
  if ((vozr[i]<35)&&(st[i]<4)) mol++;
  if (((vozr[i]>55)&&(pol[i]=='w'))||((vozr[i]>60)&&(pol[i]=='m'))) pens++;
}
 cout<<"\n"<<"Kol-vo molodux "<<mol<<"\n";
 cout<<"Kol-vo pencionrov "<<pens<<"\n";
 cout<<"Prochie rabotniki "<<10-mol-pens<<"\n\n";
 cout<<"Procent molodux "<<((float) mol/10)*100<<"%\n";
 cout<<"Procent pensionerov "<<((float) pens/10)*100<<"%\n";
 cout<<"Procent prochix sotrydnikov "<<((float) (10-mol-pens)/10)*100<<"%";
 getch();
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2012, 19:31     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл
Посмотрите здесь:

ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хра-нилище данных в файле). C++
В текстовый файл вставить пробелы таким образом, чтобы каждая строка имела длину 80 символов C++
В файл вставить пробелы таким образом, чтобы каждая строка имела длину 80 символов C++
Переделать программу, чтобы вывод осуществлялся в текстовый файл C++
Написать простую программу на С++ с двумерным массивом, чтобы ввод осуществлялся с клавы и вывод полученной матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Стивен
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 36
17.04.2012, 17:42  [ТС]     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #2
ну кто нибудь ответьте
Ieroglif
 Аватар для Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 16:35     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #3
C++
1
st
это стаж?
Стивен
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 36
18.04.2012, 16:52  [ТС]     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #4
Да, st - стаж.
Ieroglif
 Аватар для Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
20.04.2012, 13:46     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #5
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// with_f.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
//#include "stdio.h"
using namespace std; 
 
int main()
{
    setlocale (LC_ALL,"RUS");
    //char puth[256], puth_[256]; для ручного ввода
    string str;
    
    int n=0, str_k, var=0, i=0, z=0, g=0, j=0, simv, vspom=0,c=0, podch=0, buff=0,ofigel=0,br=0;
    int pens=0, moll=0, proch=0;
    char ch_fam[15], ch_sex;
    float pens_pr, proch_pr;
 
    //cout<<"Введите путь к исходному файлу: "; cin>>puth;  можно сделать ручнной ввод пути к файлу
    ifstream my_file;
    //my_file.open(puth);
    my_file.open("1st.txt");
    if(!my_file) cout<<"\nОшибка открытия файла!"<<endl<<endl; else cout<<"\nФайл успешно открыт!"<<endl<<endl;
    
    while(!my_file.eof()){//кол-во строк в файле
        my_file>>str;
        n++;}
    cout<<endl;
    str_k=n;//кол-во строк, в дальнейшем понадобится жёсткий учёт строк
    n=(n/4);//подсчитывает кол-во эл-в для матриц и массивов = кол-ву человек
    //далее - создание массивов и матриц
    
    my_file.clear();//чист eof
    my_file.seekg(0);//ставим метку на нулевой байт файла
     
    char** fam=new char*[n];//создаём матрицу для фамилий
    for(i;i<n;i++){fam[i]=new char[15];}
    int* age=new int[n]; //новый массив для возраста
    char* sex=new char[n]; // массив для пола
    int* stag=new int[n];//массив для стажа
    int* simv_k=new int[n];//массив для кол-ва значащих эл-в в каждой строке матрицы фамилий
    
//начало обработки строк
    while(podch<str_k){
    if(vspom==0){
        my_file>>ch_fam;
        simv=my_file.tellg();
            i=0;
        if(ofigel==0){
            vspom=(simv-(buff-i));} else {vspom=(simv-(buff-i)-1);} 
        while(i<vspom){
            fam[c][i]=ch_fam[i];
            cout<<fam[c][i];
            i++;}
        c++; ofigel++;
        simv_k[br]=vspom;
        br++; 
        my_file>>var;
        age[z]=var;
        cout<<endl<<"age: "<<age[z]<<endl;
        z++;
        vspom++;}
    else{
        my_file>>ch_sex;
        sex[g]=ch_sex;
        cout<<"sex: "<<sex[g]<<endl;
        g++;
        my_file>>var;
        stag[j]=var;
        cout<<"stag: "<<stag[j]<<endl<<endl;
        j++;
        vspom=0;
        buff=my_file.tellg();}
    podch=podch+2;}
 
    my_file.close(); 
 
    if(!(my_file)){cout<<"Ошибка закрытия файла!"<<endl;} else cout<<"Файл успешно закрыт!"<<endl;
    for(i=0;i<n;i++){
        if((((age[i])>=55)&&((sex[i])=='w'))||(((age[i])>=60)&&((sex[i])=='m'))) pens++;
        if(((age[i])<=35) && ((stag[i])<=4))moll++;}
    proch=n-(moll+pens);
    cout<<"\nПенсионеры: "<<pens<<endl<<"Молодые: "<<moll<<endl<<"Прочие сотрудники: "<<proch<<endl;
 
    pens_pr=pens*100/n;
    proch_pr=proch*100/n;
    cout<<"Процент пенсионеров: "<<pens_pr<<"%"<<endl<<"Процент прочих сотрудников: "<<proch_pr<<"%"<<endl;
 
ofstream enter_file;
//cout<<"Введите путь к файлу-приёмнику: "; cin>>puth_;  можно сделать ручнной ввод пути к файлу
//enter_file.open(puth_);
enter_file.open("2nd.txt");
if(!enter_file){cout<<"Ошибка открытия файла!"<<endl;} else cout<<"Файл успешно открыт!"<<endl;
enter_file<<"Пенсионеры: "<<pens<<endl<<"Молодые: "<<moll<<endl<<"Прочие сотрудники: "<<proch<<endl<<"Процент пенсионеров: "<<pens_pr<<"%"<<endl<<"Процент прочих сотрудников: "<<proch_pr<<"%"<<endl;
cout<<"Идёт процесс записи..."<<endl;
enter_file.close();
if(!(enter_file)){cout<<"Ошибка закрытия файла!"<<endl;} else cout<<"Файл успешно закрыт!"<<endl;
 
    system("pause");
    return 0;}
Вложения
Тип файла: txt 1st.txt (79 байт, 8 просмотров)
Тип файла: txt 2nd.txt (108 байт, 8 просмотров)
Стивен
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 36
20.04.2012, 19:03  [ТС]     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #6
А что у тебя под переменными var, z, g, j, simv, vspom,c, podch, buff,ofigel,br подразумевается?
Ieroglif
 Аватар для Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
20.04.2012, 21:39     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #7
var, z, g, j, simv, vspom,c, podch, buff,ofigel,br

var - целочисленная переменная, в которую помещается численная строка из файла (возраст, стаж).
с - индекс массива фамилий
z - индекс массива возраста
g - индекс массива пола
j - индекс массива стажа
br - индекс массива кол-ва символов в строке

При желании для всех массивов можно использовать одну/две переменных, инкрементирующих в самом конце цикла.

simv - используется для подсчёта значимых символов в массиве фамилий, т.к. каждая строка создана с запасом, ведь мы не знаем насколько длинной может оказаться фамилия, а потому, чтобы не вводить/выводить мусор, считается её длина каждой фамилии.

vspom и buff - используются совместно с simv:
C++
1
 vspom=(simv-(buff-i))
ввиду специфики ф-ии tellg().

ofigel используется в качестве флага состояния, если он ревен нулю - исполняется if, в противном случае - else.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2012, 00:34     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл
Еще ссылки по теме:

Ввод из файла массива и вывод результат в файл среднее арифметическое C++
C++ Модифицировать программу таким образом, чтобы класс содержал закрытые переменные
C++ Доделать ввод исходных данных в программу

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

Или воспользуйтесь поиском по форуму:
Стивен
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 36
21.04.2012, 00:34  [ТС]     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл #8
спасибо)))
Yandex
Объявления
21.04.2012, 00:34     Файл: Изменить программу таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл
Ответ Создать тему
Опции темы

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