V
vladis222
Здравствуйте, прошу помощи по такому вопросу:у нас 1 лабораторная в этом семестре-работа с переходом от си к си++. цель работы состоит в том, что дана таблица из в которой описаны произв-во комбайнов и тракторов за 50-57 годы. и нужно сформировать рез-т в виде макс процента по отношению, записать его в выходной файл. я часть работы сделал,нашел это значение, но с файлами работаю не чоень, не очень понимаю в какой посл-ти нужно выполнять с ними работу. Подскажите пожалуйста.
Вот код:<!--shcode--><pre><code class='"#include<iostream>
using namespace std;
#include<fstream>
#include<iomanip>
const int N= 10;
const int LN= 20;
const int LC= 15;
const int LG_I= 77;
const int LG_V= 52;
/* ========================================== ИСХОДНЫЕ ДАННЫЕ =================================================================== */
struct stricx /* структурный тип и исходная таблица */
{char name[LN+1'>; /* название cтраны */
int tr_50; /* Число тракторов в 50 году */
int tr_57; /* Число тракторов в 75 году */
float komb_50; /* Число комбайнов в 50 году */
float komb_57; /* Число комбайнов в 75 году */
};stricx c[N];
int n /* Реальное количество стран*/
/* ========================================== Результаты =================================================================== */
struct result
{char name[LN+1]; /* название cтраны, в которой процент прироста парка комбайнов в 50 году по сравнению к 57 году-макс. */
float abs_prir; /* абсолютный прирост парка комбайнов найденной страны 50-57 годов . */
}; result c[N];
//==================================================== ПРОМЕЖУТОЧНЫЕ ДАННЫЕ=====================================================
int fl=0; /* признак: файл еще не создан */
ofstream fileout; /* поток (для задания) */
char namevix[13]; /* имя выходного потока */
int pvix; /* есть ли в командной строке имя потока ?*/
char sg_vix[LG_V+1]={"---------------------------------------------------\n"};
/* =====================================================ГЛАВНАЯ ФУНКЦИЯ ===================================================== */
main(int argc,char * argv[])
/* имя выходного - аргумент main */
/* имя входного - пользователь */
// Проверка ограничений: задание в командной строке имени выходного файла
// Проверка ограничений: задание в командной строке имени
// выходного файла
if (argc == 0)
{ cerr<<"При вызове программы укажите имя выходного файла !!!\n";
getch();
pvix=0; exit(-1);
};
strcpy(namevix,argv[1]); // запоминание имени выходного потока
int clrscr();
//================================================ФУНКЦИЯ ДЛЯ ЗАДАНИЯ 1 - СОЗДАНИЕ ИСХОДНОЙ ТАБЛИЦЫ===============================*/
void create_t()
{int pr;
int i;
float r;
char sg_icx[LG_I+1]="--------------------------------------------------------\n";
cout <<"Создание таблицы\n";
if(fl)
{cerr << "ТАБЛИЦА УЖЕ БЫЛА СОЗДАНА !!!\n";
int getch();
exit(-1);
}
else
{fl=1;
do
{cout << "Введите количество стран (не более чем "<<N << "): ";
cin >> n;
if(n<0 || n>N)
{pr=1; cout << "Вы ошиблись!\n";}
else pr=0;
} while(pr);
//============================================================== Ввод табличных данных =========================================//
cout << "Введите данные о странах\n";
cout << sg_icx;
cout << "!NN! Название страны ! Кол-во тракторов в 50 году ! Кол-во тракторов в 57 году";
cout << " Кол-во комбайнов в 50 году ! Кол-во комбайнов в 57 году !\n";
cout << sg_icx;
do /* проверка ограничений */
{for(i=0; i<n; i++)
{cout << "! " << i+1 << " ";
cin >> c.name;
cin >> c.tr_50;
cin >> c.tr_57;
cin >> c.komb_50;
cin >> c.komb_57;
if(c.tr_50<0 || c.tr_57<0||c.komb_50||c.komb_57<0)
{pr=1;
cerr << "Вы ошиблись. Повторите ввод\n"; i--; }
else pr=0;
}
}while(pr);
cout << sg_icx;
cout << "Создана таблица из " << i << " записей\n";
}
}
/*========================================================Выполнение задания=============================================================*/
/*=============Нахождение страны, у которой процент прироста комбайнов в 1957 году по отношению к 1950 году максимальный================*/
void percent_max()
{int pr;
float perc_max;
int n_max;
n_max=-1;perc_max=((c[0].komb_57-c[0].komb_50)*0,01);
for(int i=0;i<n;i++)
{
if(((c.komb_57-c.komb_50)*0,01)>((c[0].komb_57-c[0].komb_50)*0,01))
{perc_max=((c.komb_57-c.komb_50)*0,01); n_max=i;}
}
ifstream f;[/CODE]
Вот код:<!--shcode--><pre><code class='"#include<iostream>
using namespace std;
#include<fstream>
#include<iomanip>
const int N= 10;
const int LN= 20;
const int LC= 15;
const int LG_I= 77;
const int LG_V= 52;
/* ========================================== ИСХОДНЫЕ ДАННЫЕ =================================================================== */
struct stricx /* структурный тип и исходная таблица */
{char name[LN+1'>; /* название cтраны */
int tr_50; /* Число тракторов в 50 году */
int tr_57; /* Число тракторов в 75 году */
float komb_50; /* Число комбайнов в 50 году */
float komb_57; /* Число комбайнов в 75 году */
};stricx c[N];
int n /* Реальное количество стран*/
/* ========================================== Результаты =================================================================== */
struct result
{char name[LN+1]; /* название cтраны, в которой процент прироста парка комбайнов в 50 году по сравнению к 57 году-макс. */
float abs_prir; /* абсолютный прирост парка комбайнов найденной страны 50-57 годов . */
}; result c[N];
//==================================================== ПРОМЕЖУТОЧНЫЕ ДАННЫЕ=====================================================
int fl=0; /* признак: файл еще не создан */
ofstream fileout; /* поток (для задания) */
char namevix[13]; /* имя выходного потока */
int pvix; /* есть ли в командной строке имя потока ?*/
char sg_vix[LG_V+1]={"---------------------------------------------------\n"};
/* =====================================================ГЛАВНАЯ ФУНКЦИЯ ===================================================== */
main(int argc,char * argv[])
/* имя выходного - аргумент main */
/* имя входного - пользователь */
// Проверка ограничений: задание в командной строке имени выходного файла
// Проверка ограничений: задание в командной строке имени
// выходного файла
if (argc == 0)
{ cerr<<"При вызове программы укажите имя выходного файла !!!\n";
getch();
pvix=0; exit(-1);
};
strcpy(namevix,argv[1]); // запоминание имени выходного потока
int clrscr();
//================================================ФУНКЦИЯ ДЛЯ ЗАДАНИЯ 1 - СОЗДАНИЕ ИСХОДНОЙ ТАБЛИЦЫ===============================*/
void create_t()
{int pr;
int i;
float r;
char sg_icx[LG_I+1]="--------------------------------------------------------\n";
cout <<"Создание таблицы\n";
if(fl)
{cerr << "ТАБЛИЦА УЖЕ БЫЛА СОЗДАНА !!!\n";
int getch();
exit(-1);
}
else
{fl=1;
do
{cout << "Введите количество стран (не более чем "<<N << "): ";
cin >> n;
if(n<0 || n>N)
{pr=1; cout << "Вы ошиблись!\n";}
else pr=0;
} while(pr);
//============================================================== Ввод табличных данных =========================================//
cout << "Введите данные о странах\n";
cout << sg_icx;
cout << "!NN! Название страны ! Кол-во тракторов в 50 году ! Кол-во тракторов в 57 году";
cout << " Кол-во комбайнов в 50 году ! Кол-во комбайнов в 57 году !\n";
cout << sg_icx;
do /* проверка ограничений */
{for(i=0; i<n; i++)
{cout << "! " << i+1 << " ";
cin >> c.name;
cin >> c.tr_50;
cin >> c.tr_57;
cin >> c.komb_50;
cin >> c.komb_57;
if(c.tr_50<0 || c.tr_57<0||c.komb_50||c.komb_57<0)
{pr=1;
cerr << "Вы ошиблись. Повторите ввод\n"; i--; }
else pr=0;
}
}while(pr);
cout << sg_icx;
cout << "Создана таблица из " << i << " записей\n";
}
}
/*========================================================Выполнение задания=============================================================*/
/*=============Нахождение страны, у которой процент прироста комбайнов в 1957 году по отношению к 1950 году максимальный================*/
void percent_max()
{int pr;
float perc_max;
int n_max;
n_max=-1;perc_max=((c[0].komb_57-c[0].komb_50)*0,01);
for(int i=0;i<n;i++)
{
if(((c.komb_57-c.komb_50)*0,01)>((c[0].komb_57-c[0].komb_50)*0,01))
{perc_max=((c.komb_57-c.komb_50)*0,01); n_max=i;}
}
ifstream f;[/CODE]