/Лабораторная работа №1.Студента группы Пс-10в.Брика Александра.
#include <iostream>
#include <fstream>
#include <conio.h>
#include <Windows.h>
#include "functions.h"
using namespace std; // Подключения простраства имен std
char name[15]; // Имя файла с которого производиться чтение
char rezult[15]; // Имя файла в который записуеться результат работы программы
// Создание структуры добычи полезных ископаемых стран , учавсвующих в программе
void menu ();
void russian ();
int main()
{
int menu_count=0;// счетчик для меню
russian();
menu();
cout << "Ваш выбор" << endl <<"#: ";
cin >> menu_count;
while(menu_count!=3){
switch (menu_count) {
case 1: cout << "Введите имя файла в системе с которого будет производиться чтение" << endl<<">";
cin >> name;
break;
case 2: if(read_out(name)){
}
else {
cout << "Файл не найден в системе , попробуйте заново ввести имя"<< endl;
}
break;
default: cout << "В меню нет такого пункта пункта!" << endl
<< "Повторите ввод";
break;
}
cout << "#: ";
cin >> menu_count;
}
cout << "Конец програмы.."<<endl;
getch();
return 0;
}
// Шапка меню программы
void menu() {
cout << "1. Задать имя файла " << endl
<< "2. Выполнить задание лаболаторной" << endl
<< "3. Выйти из программы " << endl;
}
// Переход на русский шрифт в консоли
void russian () {
system("chcp 1251");
system("cls");
}
не откріваеться файл в С++
файл лежит так D:\fin.dat
пробовал бросать именно в корень
но все время файл не находит вот код
code.cpp
Код:
functions.h
Код:
//Заголовочный файл с определением функций , использованых в программе
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int count=0;// Глобальный счетчик
int mount=0;// Количество годов в таблице
ifstream fin;
ofstream fout;
// Создание структуры добычи полезных ископаемых стран , учавсвующих в программе
extern struct strani{
int year;
float USA;
float England;
float France;
float USSR;
};
strani table[5];
// Фунцкия чтения из файла
int read_out (char *file_name) {
int i=0;
fin.open(file_name);
if(fin.fail()){
return 0;
}
while (!fin.eof()){
fin >> table.year
>> table.USA
>> table.England
>> table.France
>> table.USSR;
i++;
}
fin.close();
return 1;
}
// Функция записи результата в файл результат
int write_rezult (char name[]) {
fout.open(name);
if(fin.fail())
return 0;
fout.close();
return 1;
}
// Функция вывода на экран считаных результатов из файла
void print () {
}
// Функция которая выполняет задание лаболаторной
int job () {
return 1;
}
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int count=0;// Глобальный счетчик
int mount=0;// Количество годов в таблице
ifstream fin;
ofstream fout;
// Создание структуры добычи полезных ископаемых стран , учавсвующих в программе
extern struct strani{
int year;
float USA;
float England;
float France;
float USSR;
};
strani table[5];
// Фунцкия чтения из файла
int read_out (char *file_name) {
int i=0;
fin.open(file_name);
if(fin.fail()){
return 0;
}
while (!fin.eof()){
fin >> table.year
>> table.USA
>> table.England
>> table.France
>> table.USSR;
i++;
}
fin.close();
return 1;
}
// Функция записи результата в файл результат
int write_rezult (char name[]) {
fout.open(name);
if(fin.fail())
return 0;
fout.close();
return 1;
}
// Функция вывода на экран считаных результатов из файла
void print () {
}
// Функция которая выполняет задание лаболаторной
int job () {
return 1;
}
По моему в С++ когда вводишь путь к файлу, надо вводить не 1 \, a 2 \\...Т.е. будет выглядеть так D:\\fin.dat
И это касается не только путей к файлу. =) Почитайте про escape-последовательности.
пробовал просто записать в файл число или что то в этом роде. Файл создает но ничего не записывает
Код:
int write_rezult (char name[]) {
fout.open(name);
if(fin.fail())
return 0;
...
fout.open(name);
if(fin.fail())
return 0;
...
Да и как будет произведена запись этой функцией?
Цитата:
Код:
system("chcp 1251");
Это делается средствами языка, обращаться к системным вызовам для этого совсем не обязательно: setlocale().
Спасибо все учел.
Цитата: Alexander92
Никогда и ни при каких обстоятельствах не помещайте тело функции в заголовочный файл
Сильное утверждение!
Заголовочный файл не должен содержать определения обычных функций:
Код:
char get (char *p) {return *p++;}
[/QUOTE]
© Б.Страуструп, страница 246. :)
Разумеется, к стандарту языка это никакого отношения не имеет, но с точки зрения удобства - на 100% разделяю эту позицию.
Да и удобство для каждого свое. А от redefinition и redeclaration в данном случае легко избавиться с помощью "стражей включения"
Код:
//some_header.h
#ifndef SOME_HEADER_H
#define SOME_HEADER_H
//code
#endif
#ifndef SOME_HEADER_H
#define SOME_HEADER_H
//code
#endif
А с шаблонами как быть?
[/QUOTE]
А какие там проблемы? Или я вас не понял?
Согласитесь, что заголовочный файл не зря так называется, на то он и должен содержать, в первую очередь, заголовки, а не реализацию. :)
P.S.: я ж не утверждаю, что писать функции в h-файлы нельзя вообще никогда, просто в 99% Страуструп действительно прав =)
Например, переделайте что-нибудь такое:
Код:
//func.h
#ifndef FUNC_H
#define FUNC_H
#include <sstream>
template <typename Target>
Target StringTo(std::string s)
{
std::istringstream iss;
iss.str(s);
Target t;
iss >> t;
return t;
}
#endif
//main.cpp
#include "func.h"
...
double dValue = StringTo<double>("3.14") + 2;
#ifndef FUNC_H
#define FUNC_H
#include <sstream>
template <typename Target>
Target StringTo(std::string s)
{
std::istringstream iss;
iss.str(s);
Target t;
iss >> t;
return t;
}
#endif
//main.cpp
#include "func.h"
...
double dValue = StringTo<double>("3.14") + 2;
[QUOTE=Alexander92]Никогда и ни при каких обстоятельствах не помещайте тело функции в заголовочный файл
я ж не утверждаю, что писать функции в h-файлы нельзя вообще никогда[/QUOTE]Раздвоение личности? :D
Код:
extern template ...
?
Тогда считайте, что убедили. :)