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

ifstream считывает 0 - C++

Восстановить пароль Регистрация
 
СуперОля
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 6
18.11.2013, 20:48     ifstream считывает 0 #1
Здравствуйте. Есть 2 текстовых файла с названиями n.in n.out .Содержимое входящего файла
1
5
2
4
3
9
4
7
5
8
6
4
7
8
8
5
9
10
10
9
C++
1
2
3
4
5
6
7
8
9
10
11
ifstream f1("n.in");
    ofstream f2("n.out");
    float x,x1;
 
    for(int i=1;i<11;i++)
    { 
        f1>>kom[0][i];
        cout<<kom[0][i];
        f1>>kom[1][i];
        cout<<kom[0][i];
    }
В итоге мне выдает на консоль все нули. В чем может быть проблема ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
18.11.2013, 20:53     ifstream считывает 0 #2
добавьте после 4й строки
C++
1
f1.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
и посмотрите, что произойдет.
СуперОля
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 6
18.11.2013, 20:55  [ТС]     ifstream считывает 0 #3
Необработанное исключение в "0x75699617" в "disretLaba3.exe": Исключение Microsoft C++: std::ios_base::failure по адресу 0x0020fa38..
Вот весь код программы
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
// disretLaba3.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<math.h>
#include<conio.h>
using namespace std;
const int K=6;
float kom[2][11];
float rez[2][K+1];
float komrez[2][K+1];
 
bool prov(float x)
{
    bool pro=false;
    for(int i=0;i<K;i++) if(rez[1][i]==x) pro=true;
    return pro;
}
 
void zam(float x,float ind)
{
    for(int i=0;i<K;i++)
        if(rez[1][i]==x) rez[0][i]=rez[0][i]*ind;
}
 
void Combinations(bool RetVal, bool SortVal, char X[],char (Y)[],unsigned A_Size,int z=0)
 {
     if ( z==K )
     {
        for (int i = 0; i < K; i++) {rez[1][i]=Y[i]-47;}
            rez[0][K]=0;
        for(int i=0;i<K;i++) {rez[0][i]=kom[1][(int)rez[1][i]];
    }
//-----------------------------------------------------------------------------------------------
    if(prov(3)&&prov(7)) {zam(3,0.7);zam(7,0.5);}
    if(prov(8)&&(prov(10)==false)) {zam(8,0.6);}
    if(prov(10)&&(prov(8)==false)) {zam(10,0.6);}
    if(prov(4)&&prov(5)&&prov(6)) {zam(4,0.7);zam(5,0.7);zam(6,0.8);}
    else
    {   
        if(prov(4)&&(prov(5)==false)) {zam(4,0.5);}
    if(prov(5)&&(prov(4)==false)) {zam(5,0.5);}
    if(prov(6)&&(prov(1)==false)&&(prov(2)==false)) {zam(6,0.5);}}
    if(prov(9)&&prov(7)&&prov(8)) {zam(9,0.5);}
    else {
        if(prov(9)&&(prov(7)==false)) zam(9,0.5);}
//-----------------------------------------------------------------------------------------------
        for(int i=0;i<K;i++) rez[0][K]+=rez[0][i];
        if(komrez[0][K]<rez[0][K])
        for(int i=0;i<K+1;i++) for(int j=0;j<2;j++) komrez[j][i]=rez[j][i];}
else 
    for (int j=0; j < A_Size-1; j++){
    Y[z]=X[j];
    if (!RetVal) for (int m = 0; m < z; m++)
    if (Y[m]==Y[z]) goto Next;
    if (!SortVal&& (z>0) && (Y[z]<Y[z-1])) continue;
    Combinations(RetVal,SortVal,X,Y,A_Size,z+1);
Next:;
    } 
}
 
int main()
{
    ifstream f1("n.in");
    ofstream f2("n.out");
    float x,x1;
    f1.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
    for(int i=1;i<11;i++)
    { 
        f1>>kom[0][i];
        cout<<kom[0][i];
        f1>>kom[1][i];
        cout<<kom[0][i];
    }
 
 
    
 
 
    char X[] = "0123456789";
    char Y[sizeof(X)];
 
    Combinations(0,0,X,Y,sizeof(X));
    cout<<"    Best team:"<<endl;
    cout<<"|-------|--------|"<<endl;
    cout<<"|Nomer\t|Strength|"<<endl;
    cout<<"|-------|--------|"<<endl;
    for(int i=0;i<K;i++) cout<<"| "<<komrez[1][i]<<"\t| "<<komrez[0][i]<<"\t |"<<endl<<"|-------|--------|"<<endl;
    cout<<"\t = "<<komrez[0][K]<<endl;
    cout<<endl<<"saved successfully";
 
    for(int i=0;i<K;i++) f2<<komrez[1][i]<<" "<<komrez[0][i]<<endl;
     f2<<"= "<<komrez[0][K];
    return 0;
}
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
18.11.2013, 20:56     ifstream считывает 0 #4
потому что путь к вашему файлу не найден
СуперОля
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 6
18.11.2013, 20:58  [ТС]     ifstream считывает 0 #5
Ну я их создала в папке Debug
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.11.2013, 21:00     ifstream считывает 0 #6
После открытия файла принято проверять, а открылся ли он вообще. Для этого у класса fstream есть метод .is_open()
СуперОля
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 6
18.11.2013, 21:08  [ТС]     ifstream считывает 0 #7
Так что мне делать? Почему файлы могут не открываться?Находятся в папки дебаг. Текстовые файлы.Может .in , .out это не имена текстовых документов а разрешения ?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.11.2013, 21:11     ifstream считывает 0 #8
Цитата Сообщение от СуперОля Посмотреть сообщение
Может .in , .out это не имена текстовых документов а разрешения ?
А Вы как думаете?))) Конечно расширения файлов. Имя у них одно n.
СуперОля
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 6
18.11.2013, 21:25  [ТС]     ifstream считывает 0 #9
Поменяла, теперь это не текстовые файлы. Но вылетает окно на котором написано что вызвана функция abort()
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
18.11.2013, 21:25     ifstream считывает 0 #10
Еще один нюанс.
Если Вы не указываете полный путь к файлу,
то файл ищется в текущей директории,
а она при отладке совсем не Debug,
а та, в которой находится файл проекта.
Поэтому, если сомневаетесь, то пишите так:
C++
1
ifstream f1("c:\\папка где находится файл\\n.in");
И не забывайте про двойные обратные слаши (\\).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2013, 21:58     ifstream считывает 0
Еще ссылки по теме:

ifstream ofstream C++
C++ Что считывает ifstream: слово до пробела или полностью строку?
Ifstream ошибка C++

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

Или воспользуйтесь поиском по форуму:
СуперОля
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 6
18.11.2013, 21:58  [ТС]     ifstream считывает 0 #11
Всем большое спасибо
А можете еще объяснить программу?) Несколько комментариев )

Добавлено через 23 минуты
Объясните пожалуйста эти момент
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
bool prov(float x)
{
    bool pro=false;
    for(int i=0;i<K;i++) 
        if(rez[1][i]==x)
            pro=true;
    return pro;
}
 
void zam(float x,float ind)
{
    for(int i=0;i<K;i++)
        if(rez[1][i]==x) 
            rez[0][i]=rez[0][i]*ind;
}
 
void Combinations(bool RetVal, bool SortVal, char X[],char (Y)[],unsigned A_Size,int z=0)
 {
     if ( z==K )
     {
        for (int i = 0; i < K; i++) {rez[1][i]=Y[i]-47;}
            rez[0][K]=0;
        for(int i=0;i<K;i++) {rez[0][i]=kom[1][(int)rez[1][i]];
    }
Yandex
Объявления
18.11.2013, 21:58     ifstream считывает 0
Ответ Создать тему
Опции темы

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