Ввожу вектор,записываю в файл(записываю как в текстовый(wt)),открываю - а там бред..Не понимаю,почему=(
ВОт код..
fwrite(pvector,sizeof(pvector),1,f);
if((f=fopen(path,"wb")) == NULL) ...
fwrite(pvector,vsize*sizeof(float),1,file);
fclose(file);
file=fopen(path,"rb");
float *b=new float[vsize];
fread(b,vsize*sizeof(float),1,file);
float *fileread(int msize) {
FILE *file; // Незачем передавать это снаружи, ты же все равно только внутри открываешь и закрываешь файл
...
float *bufm = new float[msize];
fread (bufm,msize*sizeof(float),1,file);
...
return bufm;
}
int main() {
...
float *buffer;
...
buffer = fileread(vsize);
// Проверяем, что получили
cout <<"\n";
for (int i=0;i<vsize;i++) cout << buffer[i] << "\n";
delete [] buffer; // Не забываем удалить, когда массив больше не нужен
...
}
... // открываем файл для чтения
fseek(file, 0, SEEK_END);
msize = ftell(file) / sizeof(float);
rewind(file);
... // читаем массив из файла
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void filesave (float *mptr, int msize);
void work (float *mptr, int msize);
float fileread (int msize);
float inputkeyboard(int msize);
void inputfile (int msize);
void main()
{
cout << "Viberite pynkt menu :\n";
cout << "1 - Vvod s klaviaturi\n";
cout << "2 - Chtenie iz faila\n";
cout << "3 - Vihod\n";
int ch;
cin >> ch;
switch (ch)
{
case 1 :
{
cout << "vvedite razmernost posledovatelnosti:\n";
int msize;
cin >> msize;
inputkeyboard(msize);
}
break;
case 2 :
{
int msize;
float *buffer;
buffer=fileread(msize);//ошибка тут
work (buffer,msize);
}
break;
}
cin.get();
cin.get();
}
void work (float *mptr,int msize)
{
cout << "Posledovatelnost :\n";
for (int i=0;i<msize;i++)
cout << mptr[i] << " ";
cout << "\n";
int j=0;
float *min = new float;
*min=mptr[0];
for (i=0;i<msize;i++)
{
if (*min>mptr[i])
{
*min=mptr[i];
j=i;
}
else;
}
cout << "\nMinimalnoe chislo v posledovatelnosti : " << *min <<" \n";
float *srar = new float;
*srar=0;
for (i=0;i<msize;i++)
{
*srar=*srar+mptr[i];
}
*srar=*srar/ msize;
cout << "\nSrednearifmeticheskoe chislo v posledovatelnosti : " << *srar << "\n";
mptr[j]=*srar;
cout << "Posledovatelnost' posle zameni : \n";
for (i=0;i<msize;i++)
cout << mptr[i] << " ";
cout << "\n";
delete min;
delete srar;
}
float inputkeyboard (int msize)
{
cout << "Vvedite chisla v posledovatelnosti : \n";
float *maptr = new float [msize];
for (int i=0;i<msize;i++)
{
cin >> maptr[i];
cout << "\n";
}
cout << "\n";
work(maptr,msize);
cout << "\n";
cout << "Sohranit v file?(1 - Yes,2 - no)\n";
int cho;
cin >> cho;
if (cho==1)
filesave(maptr,msize);
else
;
delete [] maptr;
return 0;
}
void filesave(float *mptr,int msize)
{
char *path= new char[67];
int result;
FILE *file;
do
{
result=1;
cout << "\nVvedite pyt\n";
cin >> path;
if ((file=fopen(path,"wb"))==NULL)
{
cout <<"\nError!\n";
result=0;
}
}
while (result==0);
fwrite(mptr,msize*sizeof(float),1,file);
delete path;
fclose(file);
}
float fileread(int msize)
{
FILE *file;
char *path= new char[67];
int result;
do
{
result=1;
cout << "\nVvedite pyt\n";
cin >> path;
if ((file=fopen(path,"rb"))==NULL)
{
cout <<"\nError!\n";
result=0;
}
}while (result==0);
fseek(file, 0, SEEK_END);
msize = ftell(file) / sizeof(float);
rewind(file);
float *bufm=new float[msize];
fread (bufm,msize*sizeof(float),1,file);
fclose(file);
cout <<"\n";
delete path;
return bufm;// ошибка тут
}
float *fileread(int msize)у тебя изменение msize не передается в основную программу, и потом при вызове work() в нее передается мусор... Сделай msize ссылкой:
float *fileread(int &msize), тогда то ее значение которое определится в функции fileread станет известно в вызывающей ее main(), и соответственно - в work.