Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
lp_4eva
Учусь...
59 / 2 / 1
Регистрация: 20.03.2010
Сообщений: 167
#1

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

22.11.2011, 00:36. Просмотров 1298. Ответов 2
Метки нет (Все метки)

Пожалуйста помогите!
Сама пробовала!
Без результатно!!!
Пожалуйста помогите сделать так чтобы текст он считывал с тхт файла. А не так чтобы мы сами ввели!
Вот первичный код:
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 минут
Никто не сможет мне помочь???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 00:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание из файла - ifstream (C++):

Считывание с файла с помощью ifstream: приложение не находит файл - C++
Вот код, путь раз 20 проверял, не видит файл хоть ты тресни. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;fstream&gt; #include...

Считывание через ifstream строки состоящей из чисел и символов из файла - C++
Хотелось узнать как можно это осуществить, вся суть в том что у меня есть файл в который я записываю данные в виде F(0) T(178...

"Бесконечное" считывание из файла. ifstream; - C++
Суть такая, функция записывает в файл данные из моего списка, на каждую строку. вот эта функция: void outputFile(){ ...

Чтение с файла ifstream - C++
не работает чтение из файла #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; using namespace...

Чтение с файла. ifstream - C++
Доброго времени суток. Нашёл тему, решил помочь человеку, в итоге сам запарился... Проблема в следующем: В файле 3 строчки. На...

ifstream записать число из файла - C++
Всем здрасьте. У меня вопросом по чтению файлов. Допустим есть у меня файл и я хочу записать содержимое , например это будет число. ...

2
Liebe
...
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
22.11.2011, 01:36 #2
у меня не выдало ошибку, вот только работает бесконечно, но считывание из файла тут не причем - из файла считалось все правильно.
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.11.2011, 01:40 #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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 01:40
Привет! Вот еще темы с ответами:

Ifstream проверка на конец файла - C++
float toFloat(char array, int lenAr);// for delete dollar symbol and // convert to float int main() { char fname,...

Чтение бинарного файла ifstream - C++
есть бинарный файл 10101010101111010101011011001101001010100010 нужно прочить его в массив как числа, как? спасибо

Чтение файла через ifstream в stringstream - C++
Помогите разобраться, есть функция LOAD_DATA(std::string path_File) для чтения файла по пути открываю файл через ifstream, и не могу...

Ifstream - тип переменной имя файла - C++
Пользователь должен выбрать из списка какой файл он хочет открыть #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;fstream&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru