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

Считывание из файла - ifstream - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
lp_4eva
Учусь...
 Аватар для lp_4eva
59 / 2 / 1
Регистрация: 20.03.2010
Сообщений: 167
22.11.2011, 00:36     Считывание из файла - ifstream #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
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include< stdio.h>
#include< conio.h>
#include< string.h>
#include <iostream>
#include <fstream>
#include <cmath>
 
struct node
{
 char sym[10];
 float pro;
 int arr[20];
 int top;
}s[20];
 
typedef struct node node;
 
void prints(int l,int h,node s[])
{
 int i;
 for(i=l;i<= h;i++)
 {
 printf("\n%s\t%f",s[i].sym,s[i].pro);
 }
}
 
void shannon(int l,int h,node s[])
{
 float pack1=0,pack2=0,diff1=0,diff2=0;
 int i,d,k,j;
 if((l+1)==h || l==h || l>h)
 {
 if(l==h || l>h)
 return;
 s[h].arr[++(s[h].top)]=0;
 s[l].arr[++(s[l].top)]=1;
 return;
 }
 else
 {
 for(i=l;i<=h-1;i++)
 pack1=pack1+s[i].pro;
 pack2=pack2+s[h].pro;
 diff1=pack1-pack2;
 if(diff1< 0)
 diff1=diff1*-1;
 j=2;
 while(j!=h-l+1)
 {
 k=h-j;
 pack1=pack2=0;
 for(i=l;i<=k;i++)
 pack1=pack1+s[i].pro;
 for(i=h;i>k;i--)
 pack2=pack2+s[i].pro;
 diff2=pack1-pack2;
 if(diff2< 0)
 diff2=diff2*-1;
 if(diff2>=diff1)
 break;
 diff1=diff2;
 j++;
 }
 k++;
 for(i=l;i<=k;i++)
 s[i].arr[++(s[i].top)]=1;
 for(i=k+1;i<=h;i++)
 s[i].arr[++(s[i].top)]=0;
 shannon(l,k,s);
 shannon(k+1,h,s);
 }
}
 
void main()
{
 int n,i,j;
 float x,total=0;
 char ch[10];
 node temp;
 
 printf("Enter How Many Symbols Do You Want To Enter\t: ");
 scanf("%d",&n);
 for(i=0;i< n;i++)
 {
 printf("Enter symbol %d ---> ",i+1);
 scanf("%s",ch);
 strcpy(s[i].sym,ch);
 }
 for(i=0;i< n;i++)
 {
 printf("\n\tEnter probability for %s ---> ",s[i].sym);
 scanf("%f",&x);
 s[i].pro=x; 
 total=total+s[i].pro;
 if(total>1)
 {
 printf("\t\tThis probability is not possible.Enter new probability");
 total=total-s[i].pro;
 i--;
 }
 }
 s[i].pro=1-total;
 for(j=1;j<=n-1;j++)
 {
 for(i=0;i<n-1;i++)
 {
 if((s[i].pro)>(s[i+1].pro))
 {
 temp.pro=s[i].pro;
 strcpy(temp.sym,s[i].sym);
 s[i].pro=s[i+1].pro;
 strcpy(s[i].sym,s[i+1].sym);
 s[i+1].pro=temp.pro;
 strcpy(s[i+1].sym,temp.sym);
 }
 }
 }
 for(i=0;i< n;i++)
 s[i].top=-1;
 
 shannon(0,n-1,s);
printf("---------------------------------------------------------------");
 printf("\n\n\n\tSymbol\tProbability\tCode");
 for(i=n-1;i>=0;i--)
 {
 printf("\n\t%s\t%f\t",s[i].sym,s[i].pro);
 for(j=0;j<=s[i].top;j++)
 printf("%d",s[i].arr[j]);
 }
printf("\n---------------------------------------------------------------");
 getch();
}
Вот я пробовала сделать:
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include< stdio.h>
#include< conio.h>
#include< string.h>
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
struct node
{
 char sym[10];
 float pro;
 int arr[20];
 int top;
}s[20];
 
typedef struct node node;
 
void prints(int l,int h,node s[])
{
 int i;
 for(i=l;i<= h;i++)
 {
 printf("\n%s\t%f",s[i].sym,s[i].pro);
 }
}
 
void shannon(int l,int h,node s[])
{
 float pack1=0,pack2=0,diff1=0,diff2=0;
 int i,k,j;
 if((l+1)==h || l==h || l>h)
 {
 if(l==h || l>h)
 return;
 s[h].arr[++(s[h].top)]=0;
 s[l].arr[++(s[l].top)]=1;
 return;
 }
 else
 {
 for(i=l;i<=h-1;i++)
 pack1=pack1+s[i].pro;
 pack2=pack2+s[h].pro;
 diff1=pack1-pack2;
 if(diff1< 0)
 diff1=diff1*-1;
 j=2;
 while(j!=h-l+1)
 {
 k=h-j;
 pack1=pack2=0;
 for(i=l;i<=k;i++)
 pack1=pack1+s[i].pro;
 for(i=h;i>k;i--)
 pack2=pack2+s[i].pro;
 diff2=pack1-pack2;
 if(diff2< 0)
 diff2=diff2*-1;
 if(diff2>=diff1)
 break;
 diff1=diff2;
 j++;
 }
 k++;
 for(i=l;i<=k;i++)
 s[i].arr[++(s[i].top)]=1;
 for(i=k+1;i<=h;i++)
 s[i].arr[++(s[i].top)]=0;
 shannon(l,k,s);
 shannon(k+1,h,s);
 }
}
void main()
{
 
 int i,j;
 int n = 0;
 float x,total=0;
 char ch[10];
 node temp;
 ifstream in;
ofstream out;
  in.open("1.txt");
 
 int str[1000];
 
  if(!in)cout<<"\n File not found ";
 
int k = 0;
while(!in.eof()){
     in>>s[k].sym>>s[k].pro>>s[k].top;
         k++;
}
cout<<"\n Symbol vstre4aetsya:   ";
for(int i=0;i<256;i++){
     total++;
if(ch[i]){
           cout<<"\n    "<<char(i)<<"           "<<ch[i]<<" raz \n ";
           cout<<"\n Veroyatnost'=>    "<<"           "<<ch[i]/total<<" ";
          
 strcpy(s[i].sym,ch);
}
 s[i].pro=1-total;
 for(j=1;j<=n-1;j++)
 {
 for(i=0;i<n-1;i++)
 {
 if((s[i].pro)>(s[i+1].pro))
 {
 temp.pro=s[i].pro;
 strcpy(temp.sym,s[i].sym);
 s[i].pro=s[i+1].pro;
 strcpy(s[i].sym,s[i+1].sym);
 s[i+1].pro=temp.pro;
 strcpy(s[i+1].sym,temp.sym);
 }
 }
 }
 for(i=0;i< n;i++)
 s[i].top=-1;
 
 shannon(0,n-1,s);
printf("---------------------------------------------------------------");
 printf("\n\n\n\tSymbol\tProbability\tCode");
 for(i=n-1;i>=0;i--)
 {
 printf("\n\t%s\t%f\t",s[i].sym,s[i].pro);
 for(j=0;j<=s[i].top;j++)
 printf("%d",s[i].arr[j]);
 }
printf("\n---------------------------------------------------------------");
 getch();
}
}
Но ехе закрывается говорит ошибка. Но когда компилируешь ошибок нету!
Я знаю что написала что-то не то с структурой и ifstream
Помогите связать их!

P.S:Завтра уже сдавать! Плиз! Помогите!Я правда пыталась=)

Добавлено через 20 минут
Никто не сможет мне помочь???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 00:36     Считывание из файла - ifstream
Посмотрите здесь:

C++ чтение бинарного файла ifstream
проверка существования файла с использованием ifstream() C++
"Бесконечное" считывание из файла. ifstream; C++
C++ ifstream записать число из файла
Считывание с файла с помощью ifstream: приложение не находит файл C++
Считывание через ifstream строки состоящей из чисел и символов из файла C++
C++ Чтение файла через ifstream в stringstream
C++ Чтение с файла. ifstream

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
22.11.2011, 01:36     Считывание из файла - ifstream #2
у меня не выдало ошибку, вот только работает бесконечно, но считывание из файла тут не причем - из файла считалось все правильно.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.11.2011, 01:40     Считывание из файла - ifstream #3
tutorial
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
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <string>
 
class student
{
    std::string name;
    int group;
 
public:
    student() :
      group(), name()
      {
      }
 
      student(const std::string& name, int group) :
      name(name), group(group)
      {
      }
 
      friend std::ostream& operator<< (std::ostream& stream, const student& instance)
      {
          stream << instance.name << " " << instance.group << std::endl;
          return stream;
      }
 
      friend std::istream& operator>> (std::istream& stream, student& instance)
      {
          stream >> instance.name;
          stream >> instance.group;
          return stream;
      }
 
};
 
int main()
{
    std::string fileName;
    std::cout << "Etner the file name" << std::endl;
    std::cin >> fileName;
 
    // creation the file on write corresponding to fileName
    std::fstream file(fileName, std::ios_base::out | std::ios_base::trunc);
    // pass int into file
    file << 6 << std::endl;
    // pass const char* into file
    file << "fileName" << std::endl;
 
    student st("sandye51", 8309);
    // pass student into file
    file << st;
    // close the file
    file.close();
 
    // opening the same file for reading
    file.open(fileName, std::ios_base::in);
    if (file.fail())
    {
        std::cerr << "File not found" << std::endl;
        return EXIT_SUCCESS;
    }
 
    int varInt;
    std::string varString;
    student varStudent;
 
    // reading variables
    file >> varInt;
    file >> varString;
    file >> varStudent;
 
    // closing the file
    file.close();
 
    // printing variables on console
    std::cout << varInt << std::endl;
    std::cout << varString << std::endl;
    std::cout << varStudent << std::endl;
 
    return EXIT_SUCCESS;
}
Yandex
Объявления
22.11.2011, 01:40     Считывание из файла - ifstream
Ответ Создать тему
Опции темы

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