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

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

Восстановить пароль Регистрация
 
 
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 16:32     Ввод из файла. #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
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;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2011, 16:32     Ввод из файла.
Посмотрите здесь:

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

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

Добавлено через 23 секунды
блин у меня кончаются варианты =)
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 18:54  [ТС]     Ввод из файла. #11
у меня уже тоже) мы всемером думали над этим) нихрена не придумали) если fscanf(fp,"%S",var[j].nazv) он считывает не той кодировкой. а если другие варианты то выдает тоже самое.
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
30.05.2011, 19:08     Ввод из файла. #12
а как в файле данные организованы ?
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 19:11  [ТС]     Ввод из файла. #13
вот в таком виде
Миниатюры
Ввод из файла.  
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 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 который, вот этим ...
и напиши в каком порядке в файле лежат данные, имя, цена, мин,мах думаю ты понял =)
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 20:30  [ТС]     Ввод из файла. #15
а вот flag и buf какие переменные? целые или вещественные?
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
30.05.2011, 20:34     Ввод из файла. #16
точно, звыняй сча

Добавлено через 29 секунд
C++
1
2
3
4
5
6
7
8
9
10
char buff[32]={0};
char temp1[12]={0};
int flag = 0;
for(int h=0;h<n;h++)
{
    for(int o=0;o<20;o++)
    {
        var[h].nazv[o]=0;
    }
}
это перед циклом
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 20:39  [ТС]     Ввод из файла. #17
теперь он вот так вот выводит. спасибо за помощь.
Миниатюры
Ввод из файла.  
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
30.05.2011, 20:40     Ввод из файла. #18
не то чтоли *?
Ikatta
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 16
30.05.2011, 20:40  [ТС]     Ввод из файла. #19
ага не то. выводит просто адреса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2011, 20:46     Ввод из файла.
Еще ссылки по теме:

Ввод из файла в вектор C++
C++ Ввод\вывод файла
Ввод/Вывод в/из файла C++

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

Или воспользуйтесь поиском по форуму:
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
30.05.2011, 20:46     Ввод из файла. #20
cout<<j<<" "<<buff<<endl;
разкоментируй
а printf там где массив выводиться закоменти и погляди что он показывает...
Yandex
Объявления
30.05.2011, 20:46     Ввод из файла.
Ответ Создать тему
Опции темы

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