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

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

Войти
Регистрация
Восстановить пароль
 
 
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
#1

Ввод из файла. - C++

30.05.2011, 16:32. Просмотров 890. Ответов 24
Метки нет (Все метки)

дана программа. в ней нужно ввести данные из файла. при выводе их на экран выводит не той кодировкой. помогите поменять. вот код программы:
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
//---------------------------------------------------------------------------
//ГЄГ®Г*Г±ГІГ*Г*ГІГ*
const n=3;
//ñîçäГ*Г*ГЁГҐ ГЄГ«Г*Г±Г±Г*
class my{
public:
char nazv[20];
int cena;
int kolvo;
int vozmin;
int vozmax;};
int comp(const void *, const void *);
int main(int argc, char* argv[])
 
{ //îáüÿâëåГ*ГЁГҐ ïåðåìåГ*Г*Г*ûõ
 int j,a,b,h,l,g; float k,c; char *d; my var[n];
 char text;
FILE *fp,*fp1;//ññûëêГ* Г*Г* ïîòîê
//îòêðûòèå ГґГ*éëГ*
if ((fp=fopen("rez","wt"))==NULL)
{perror("dat");
return 1;}
 cout<<"1.VVod vrychnuy\n";
 cout<<"2.Zagruzka is faila\n";
   cin>>g;
 if (g==1)
for(j=0;j<n;j++)
{
//ââîä Г*èìåГ*îâГ*Г*ГЁГї
printf("vvedite nazvanie\n");
scanf("%s",&var[j].nazv);
fprintf(fp,"%s ",var[j].nazv);
//ââîä öåГ*Г»
printf("vvedite ceny\n");
scanf("%d",&var[j].cena);
fprintf(fp,"%d ",var[j].cena);
//ââîä êîëè÷åñòâГ*
printf("vvedite kolvo\n");
scanf("%d",&var[j].kolvo);
fprintf(fp,"%d ",var[j].kolvo);
//ââîä ìèГ*ГЁГ¬Г*ëüГ*îãî âîçðГ*Г±ГІГ*
printf("vvedite min vozrast\n");
scanf("%d",&var[j].vozmin);
fprintf(fp,"%d",var[j].vozmin);
//ââîä Г¬Г*ГЄГЁГ±Г¬Г*ëüГ*îãî âîçðГ*Г±ГІГ*
printf("vvedite max vozrast\n");
scanf("%d",&var[j].vozmax);
fprintf(fp,"%d ",var[j].vozmax);
fprintf(fp,"\n");}
//ñ÷èòûâГ*Г*ГЁГҐ ГЁГ§ ГґГ*éëГ*
if (g==2) {
fp1=fopen("C:\\Program Files\\Borland\\CBuilder6\\Projects\\dat.txt","rt");
for(j=0;j<n;j++)
{
fscanf(fp," %c",&var[j].nazv);
text=
//"%d",var[j].cena,"%d",var[j].kolvo,"%d",var[j].vozmin,"%d",var[j].vozmax);
printf("%s",var[j].nazv);  }}
//printf("%s %d %d %d-%d \t \n",&var[j].nazv,&var[j].cena,&var[j].kolvo,&var[j].vozmin,&var[j].vozmax);}}
//cîçäГ*Г*ГЁГҐ ìåГ*Гѕ
cout<<"\n";
cout<<"MENU: \n";
cout<<" 1. dobavlenie \n ";
cout<<"2. ydalenie po nomery \n";
cout<<" 3. sortirovka po cene \n";
cout<<" 4. sortirovka po kolvo \n";
//cout<<"5. sortirovka po nazvaniu\n ";
cout<<" 5. sortirovka po minimalnomy vozrasty\n ";
cout<<"6. sortirovka po maxsimalnomy vozrasty\n ";
cout<<" vvedite nomer menu \n";
cin>>h;
//äîáГ*âëåГ*ГЁГҐ
if (h==1) {
//ââîä Г*èìåГ*îâГ*Г*ГЁГї
printf("vvedite nazvanie\n");
scanf("%s",&var[j].nazv);
fprintf(fp,"%s ",var[j].nazv);
//ââîä öåГ*Г»
printf("vvedite ceny\n");
scanf("%d",&var[j].cena);
fprintf(fp,"%d ",var[j].cena);
//ââîä êîëè÷åñòâГ*
printf("vvedite kolvo\n");
scanf("%d",&var[j].kolvo);
fprintf(fp,"%d ",var[j].kolvo);
//ââîä ìèГ*ГЁГ¬Г*ëüГ*îãî âîçðГ*Г±ГІГ*
printf("vvedite min vozrast\n");
scanf("%d",&var[j].vozmin);
fprintf(fp,"%d",var[j].vozmin);
//ââîä Г¬Г*ГЄГЁГ±Г¬Г*ëüГ*îãî âîçðГ*Г±ГІГ*
printf("vvedite max vozrast\n");
scanf("%d",&var[j].vozmax);
fprintf(fp,"%d ",var[j].vozmax);
fprintf(fp,"\n");}
//ГіГ¤Г*ëåГ*ГЁГҐ
if(h==2)
{cout<<"vvedite nomer";
cin>>l;
for(j=l;j<n-1;j++)
var[j]=var[j+1];}
//ñîðòèðîâêГ* ГЇГ® öåГ*ГҐ
if(h==3)
{{int temp=0;
        for (int j=1;  j<n  ;  j++){
                for (int j=0;  j<n-j;  j++){
                        if (var[j].cena>var[j+1].cena){
                                temp=var[j].cena;
                                var[j].cena=var[j+1].cena;
                                var[j+1].cena=temp;
                        }
                }
        } }
        for(j=1;j<n;j++)
        {cout<<var[j].nazv<<" "<<var[j].cena<<"\n";
        fprintf(fp,"%s",var[j].nazv," %d ", var[j].cena);
        fprintf(fp,"\n");}}
//ñîðòèðîâêГ* ГЇГ® êîëè÷åñòâó
if(h==4)
 {{int temp=0;
        for (int j=1;  j<n  ;  j++){
                for (int j=0;  j<n-j;  j++){
                        if (var[j].kolvo>var[j+1].kolvo){
                                temp=var[j].kolvo;
                                var[j].kolvo=var[j+1].kolvo;
                                var[j+1].kolvo=temp;
                        }
                }
        } }
        for(j=1;j<n;j++)
        {cout<<var[j].nazv<<" "<<var[j].kolvo<<"\n";
        fprintf(fp,"%s",var[j].nazv," %d ", var[j].kolvo);
        fprintf(fp,"\n");}}
//ñîðòèðîâêГ* ГЇГ® Г*Г*çâГ*Г*ГЁГѕ
//if(h==5) {
//for(j=0; j<n;j++)
  //qsort(var[j].cena,10,sizeof(var[j].cena),comp); }
//ñîðòèðîâêГ* ГЇГ® ìèГ*ГЁГ¬Г*ëüГ*îìó âîçðГ*Г±ГІГі
if(h==5)
{{int temp=0;
        for (int j=1;  j<n  ;  j++){
                for (int j=0;  j<n-j;  j++){
                        if (var[j].vozmin>var[j+1].vozmin){
                                temp=var[j].vozmin;
                                var[j].vozmin=var[j+1].vozmin;
                                var[j+1].vozmin=temp;
                        }
                }
        } }
        for(j=1;j<n;j++)
        {cout<<var[j].nazv<<" "<<var[j].vozmin<<"\n";
        fprintf(fp,"%s",var[j].nazv," %d ", var[j].vozmin);
        fprintf(fp,"\n");}}
//ñîðòèðîâêГ* ГЇГ® Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îìó âîçðГ*Г±ГІГі
if(h==6)
{{int temp=0;
        for (int j=1;  j<n  ;  j++){
                for (int j=0;  j<n-j;  j++){
                        if (var[j].vozmax>var[j+1].vozmax){
                                temp=var[j].vozmax;
                                var[j].vozmax=var[j+1].vozmax;
                                var[j+1].vozmax=temp;
                        }
                }
        }
        }
        for(j=1;j<n;j++)
        {cout<<var[j].nazv<<" "<<var[j].vozmax<<"\n";
        fprintf(fp,"%s",var[j].nazv," %d ", var[j].vozmax);
        fprintf(fp,"\n");}}
            c=-900;
cout<<"\nvvedite kolvo deneg\n";
cin>>k;
cout<<"min vozrast\n";
cin>>a;
cout<<"max vozrast\n";
cin>>b;
// Г*Г*õîæäåГ*ГЁГҐ Г±Г*ìîé äîðîãîé èãðóøêè
for(j=0;j<n;j++)
if(var[j].cena>c){c=var[j].cena; d=var[j].nazv;}
cout<<d;
//Г*Г*õîæäåГ*ГЁГҐ èãðóøêè ГЇГ® Г§Г*Г¤Г*Г*Г*ûì êîë-âîì äåГ*ГҐГЈ ГЁ âîçГ*Г±ГІГ*ûå ГЈГ°Г*Г*èöû
for(j=1;j<=n;j++)
if (k<=var[j].cena && a>=var[j].vozmin && b<=var[j].vozmax)
cout<<var[j].nazv<<"\n";
getch();
        return 0;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2011, 16:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод из файла. (C++):

ввод из файла - C++
подскажите как делать ввод из файла

Ввод из файла - C++
Написал такой метод, но отказывается работать. void file_in(){ freopen(&quot;in.txt&quot;,&quot;r&quot;,stdin); cin&gt;&gt;size; ...

Ввод из файла - C++
Помогите написать код программы которая проверяет правильно ли указано имя файла и производится ввод из файла.

Ввод из файла - C++
Есть ввод из файла, но при запуске программы ничего не происходит - черный экран с мигающим курсором ifstream in(&quot;D:\file.txt&quot;); ...

Ввод из файла в вектор - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;ostream&gt; #include &lt;vector&gt; const int size=7; using...

Ввод данных из файла - C++
Всем доброго времени суток! Написала программку: расчет формулы, в которой 6 переменных, данные вводила с клавиатуры. Но нужно чтобы данные...

24
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 16:41 #2
setlocale(LC_ALL,"Russian");
если в файле русский
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 17:16  [ТС] #3
в Файле присутствуют и буквы и цифры примерно выглядит так:
azxs 159 1 2 6

но при выводе он не то выводит. с русскими буквами не пробовал.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 18:08 #4
окей а чего выводит то, можешь скрин ?
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 18:22  [ТС] #5
вот скрин
0
Миниатюры
Ввод из файла.  
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 18:43 #6
попробуй вместо fscan использовать fgets
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 18:46  [ТС] #7
пробовал. все равно тоже самое.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 18:47 #8
через отладку посмотри нормально ли считывается файл ?
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 18:48  [ТС] #9
да. все нормально считывает.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 18:52 #10
fscan(%s ) может читать как строку попробывать ?

Добавлено через 23 секунды
блин у меня кончаются варианты =)
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 18:54  [ТС] #11
у меня уже тоже) мы всемером думали над этим) нихрена не придумали) если fscanf(fp,"%S",var[j].nazv) он считывает не той кодировкой. а если другие варианты то выдает тоже самое.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 19:08 #12
а как в файле данные организованы ?
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 19:11  [ТС] #13
вот в таком виде
0
Миниатюры
Ввод из файла.  
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
30.05.2011, 20:25 #14
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
for(j=0;j<n;j++)
{
    int m=0;
    fgets(buff,32,fp1);//прочитали строку
    flag=0;
    for(int l=0;l<strlen(buff);l++)//разобрали и записали куда надо
    {
        
        if(flag==0)
        {
            var[j].nazv[l]=buff[l];
        }
        if(flag==1)
        {
            temp1[m]=buff[l];
            m++;
        }
        if(flag==2)
        {
            temp1[m]=buff[l];
            m++;
        }
        if(flag==3)
        {
            temp1[m]=buff[l];
            m++;
        }
        if(flag==4)
        {
            temp1[m]=buff[l];
            m++;
        }
        if(buff[l]==' ')
        {
            flag++;
            if(buff[l]==' ' && flag == 2)
            {
                var[j].cena = atoi(temp1);
                m=0;
                for(int i=0;i<12;i++)
                {
                    temp1[i]=0;
                }
            }
            if(buff[l]==' ' && flag == 3)
            {
                var[j].kolvo = atoi(temp1);
                m=0;
                for(int i=0;i<12;i++)
                {
                    temp1[i]=0;
                }
            }
            if(buff[l]==' ' && flag == 4)
            {
                var[j].vozmin = atoi(temp1);
                m=0;
                for(int i=0;i<12;i++)
                {
                    temp1[i]=0;
                }
            }
        }
        if(l==strlen(buff)-1)
        {
            var[j].vozmax = atoi(temp1);
        }
    }
    //cout<<j<<" "<<buff<<endl;
    for(int i=0;i<32;i++)
    {
        buff[i]=0;
    }
    
    printf("%s %d %d %d %d\n",var[j].nazv,var[j].cena,var[j].kolvo,var[j].vozmin,var[j].vozmax);
}
}
замени свой цикл со строки 62 по 67 который, вот этим ...
и напиши в каком порядке в файле лежат данные, имя, цена, мин,мах думаю ты понял =)
0
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 20:30  [ТС] #15
а вот flag и buf какие переменные? целые или вещественные?
0
30.05.2011, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2011, 20:30
Привет! Вот еще темы с ответами:

Ввод и вывод из файла - C++
Есть программа. Нужно сделать так, чтобы размерность матрицы можно было считать из файла и чтобы готовую или исходную матрицу можно было...

Ввод данных с файла - C++
struct mec { string name; double sum; }; cout &lt;&lt; &quot;Число меценатов с файла: &quot;; int n; ifstream ReadOn; ...

Ввод данных из файла - C++
Здравствуйте, не откажите пожалуйста в помощи, вот программа: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Ввод массива из файла - C++
Хелп плиз!!! Задача: &quot;Нужно создать небольшую базу данных. Нужно чтобы массив задавался из текстового файла. В файле должны быть данные для...


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

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

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