Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
1

файлы, чтение запись идет не так как нужно

24.12.2013, 16:15. Показов 501. Ответов 0

Author24 — интернет-сервис помощи студентам
и так, мне очень нужна ваша помощь! в кратце эта программа считывает файл в буфер, потом сравнивает 1 значение из буфера, и если оно подходит изменяет на нужное.
и вобщем всё бы хорошо, даже справляется с поставленой задачей но есть одно НО.

если я выбираю пункт заменить допустим все "0" в 11 столбце, то всё отлично заменяется,
но если я изменяю другое число, например 5, эм... на 32, то на выходе я получаю кашу.
жуткого качества.

в чем проблема -хз, вроде бы всё правильно.

(код в плохом виде , т.к на скорую руку)

что считывается:
Код
wpn_revolver.dds
0 -0.003498 0.041957 0.022500 0.000000 -1.000000 0.000000 0.535665 -0.301831 1 5 1.000000
0 0.002402 0.041957 0.022500 0.000000 -1.000000 0.000000 0.568365 -0.204401 1 5 1.000000
0 -0.000198 0.041957 0.022800 0.000000 -1.000000 0.000000 0.535665 -0.251108 1 5 1.000000
wpn_revolver.dds
0 -0.004598 0.041957 0.021400 0.000000 -1.000000 0.000000 0.568365 -0.348539 1 0 1.000000
0 -0.006098 0.041957 0.019500 0.000000 -1.000000 0.000000 0.628865 -0.384559 1 0 1.000000
0 -0.003498 0.041957 0.022500 0.000000 -1.000000 0.000000 0.535665 -0.301831 1 0 1.000000
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
#include <iostream>
#include <windows.h>
 
#include <fstream>
#include <string>
#include <clocale>
#include <cstring>
#include <stdio.h>
 
using namespace std;
 
struct table
{
int dum;
float x,y,z;
float nx,ny,nz;
float u,v;
int dumm;
int idbone;
float weight;
};
 
 
int main()
{setlocale(LC_CTYPE, "Russian");
ifstream fin;
ofstream fout;
const int szbuf = 256;
const string txn = "wpn_revolver.dds";
char lbufer[szbuf];
char obufer[szbuf];
string wbufer;
int cline = 0;
table *ptable;
table *prtable;
int incr = 0;
int searchv;
int variablev;
 
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD cor;
 cor.X = 0;
 cor.Y = 20;
 
 
fin.open("input.smd",std::ios::in);
if (!fin.is_open()){cout << "не удалось открыть файл.\n";}
while (!fin.eof())
{char c;
fin.get(c);
if (c == '\n') cline++;}
cout <<"строк в файле:"<<cline<<"\n";
fin.close();
 
fin.open("input.smd",std::ios::in);
ptable = new table[cline]; //---------------буфер структурированного файла
prtable = new table[cline]; //--------------буфер для записи корректированых данных
 
while (!fin.eof()){
 
 fin.getline(lbufer, szbuf);
 //wbufer=lbufer;
 
 //if (wbufer==txn){continue;
 //}else{
 sscanf( &lbufer[0], "%d %f %f %f %f %f %f %f %f %d %d %f" , &ptable[incr].dum, &ptable[incr].x, &ptable[incr].y,
 &ptable[incr].z, &ptable[incr].nx, &ptable[incr].ny, &ptable[incr].nz, &ptable[incr].u, &ptable[incr].v,
 &ptable[incr].dumm, &ptable[incr].idbone, &ptable[incr].weight);
 
incr++;
/*
printf("%d %f %f %f %f %f %f %f %f %d %d %f" , ptable[1].dum, ptable[1].x, ptable[1].y,
 ptable[1].z, ptable[1].nx, ptable[1].ny, ptable[1].nz, ptable[1].u, ptable[1].v,
 ptable[1].dumm, ptable[1].idbone, ptable[1].weight);*/
 SetConsoleCursorPosition(hConsole,cor);
cout <<"read:"<<(float)incr/cline*100<<"% \b\n";
if (incr==cline){goto S;}
 }//}
 
S:{
 
 cout << "введите значение которое следует заменить:\n";
 cin >> searchv;
 cout << "введите значение на которое следует изменять:\n";
 cin>> variablev;
 
 cout <<"замена выполняется...\n";
 for(int q = 0; q<=cline; q++){
prtable[q].dum = ptable[q].dum;
prtable[q].x = ptable[q].x;
prtable[q].y = ptable[q].y;
prtable[q].z = ptable[q].z;
prtable[q].nx = ptable[q].nx;
prtable[q].ny = ptable[q].ny;
prtable[q].nz = ptable[q].nz;
prtable[q].u = ptable[q].u;
prtable[q].v = ptable[q].v;
prtable[q].dumm = ptable[q].dumm;
if(ptable[q].idbone==searchv){ prtable[q].idbone=0; prtable[q].idbone=variablev;}else{
 prtable[q].idbone=ptable[q].idbone;}
//prtable[q].idbone = ptable[q].idbone;
prtable[q].weight = ptable[q].weight;
 
SetConsoleCursorPosition(hConsole,cor);
cout <<"analise:"<<(float)q/cline*100<<"% \b\n";
 
if (q==cline){goto R;}}}
R:{
cout <<"замена успешно выполнена!\n";
cout <<"идет запись результатов...\n";
 
fout.open("output.smd",ios::out);
 
for(int w = 0; w<=cline; w++){
if(prtable[w].dum+prtable[w].x+prtable[w].y+
 prtable[w].z+prtable[w].nx+prtable[w].ny+prtable[w].nz+prtable[w].u+prtable[w].v,
 prtable[w].dumm+prtable[w].idbone+prtable[w].weight==variablev){
 sprintf(&obufer[0],"%s",txn.c_str());
 }else{
sprintf(&obufer[0],"%d %f %f %f %f %f %f %f %f %d %d %f",prtable[w].dum, prtable[w].x, prtable[w].y,
 prtable[w].z, prtable[w].nx, prtable[w].ny, prtable[w].nz, prtable[w].u, prtable[w].v,
 prtable[w].dumm, prtable[w].idbone, prtable[w].weight);}
 
fout << &obufer[0]<<endl;
SetConsoleCursorPosition(hConsole,cor);
cout <<"write:"<<(float)w/cline*100<<"% \b\n";
 
  }
cout <<"запись завершена\n";
fout.close();
delete [] ptable;
delete [] prtable;}
return 0;}

тестил на входе всё норм считывается, значит где то на выходе беда,
видимо условие не срабатывает :
C++
1
2
3
4
5
if(prtable[w].dum+prtable[w].x+prtable[w].y+
 prtable[w].z+prtable[w].nx+prtable[w].ny+prtable[w].nz+prtable[w].u+prtable[w].v,
 prtable[w].dumm+prtable[w].idbone+prtable[w].weight==variablev){
 sprintf(&obufer[0],"%s",txn.c_str());
 }
хотя так то должно.
оно задумано чтобы срабатывало когда сумма всех значение полей равна заменяемому,
т.к при считывании вот этого ->wpn_revolver.dds
функция по всем параметрам вернет 0, то есть строка из 12 нулей,
а при поиске и замене их сумма станет равной заменяемому значению

Добавлено через 36 минут
да блин, шо в тему никто даже не заходит. я понимаю , что конечно многа букафф, но блин прога очень нужна, помогите кто может чтоль.

Добавлено через 31 минуту
такие все,отзывчивые... еще 100 лет, и на мою скромную тему полюбому ответят!

Добавлено через 1 час 0 минут
эту статью посмотрели уже ~40 человек...
похоже она получилась заведомо мертвой, так как многа букафф...

Добавлено через 14 часов 12 минут
спустя день никто не решился отписатьса по програмке

Добавлено через 2 часа 7 минут
почему происходит эта проблема я выяснил, незнаю даже как сразу этого незаметил, суть её заключается в том что при поиске нулевых значений нули естессно находятся, а потому проверка (второй фрагмент кода)
выполняется, в иных случаях проверка не срабатывает.

Всем спасибо за помощь!
осталось решить только как выйти из этой ситуации и всё ОК! да да программе ЖИТЬ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2013, 16:15
Ответы с готовыми решениями:

Запись в файл Чтение не идет
Язык Си в Linux. Создаю файл по чтению и записи. Записываю в него целое число. Пытаюсь прочитать...

Как сделать так, чтобы прога имела доступ к реестру на чтение и запись (Vista, seven)
Как сделать так, чтобы прога имела доступ к реестру на чтение и запись (Vista, seven) Я так...

Как сделать так, чтобы используя checkbox активировать чтение и запись документа из textBox
Как сделать так, чтобы используя checkbox активировать чтение и запись документа из textBox.

Как сделать так, чтобы используя checkbox активировать чтение и запись документа из textBox
Как сделать так, чтобы используя checkbox активировать чтение и запись документа из textBox.

0
24.12.2013, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2013, 16:15
Помогаю со студенческими работами здесь

[Файлы] Запись-чтение-запись. Почему не прокатывает?
Сначала записываю в файл &quot;а&quot; запись &quot;makulatura&quot;, потом читаю ее в строку h. Все ок. Но потом когда...

Файлы (чтение/запись)
Привет всем. Уважаемые программисты! Второй день мучаюсь.. помогите плиз.. Забираю из текстового...

Запись и чтение, файлы
Помогите пожалуйста, не могу понять записывается ли в файл что-то и правильно ли я делаю? код...

Чтение и запись в файлы
Пусть файл с произвольным именем содержит 10 целых чисел. Написать программу fileprocessor,...

Файлы : запись и чтение
есть код записи TFileStream *vivod=new TFileStream(&quot;VseDanie.dat&quot;,fmCreate); if...

Чтение и запись в файлы
Нашел вот такую статью https://metanit.com/java/android/13.1.php. Мне нужно открыть и отпарсить...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru