argon bulletin board

Експертно търсене  

Новини:

Автор Тема: C++ работа с фаилове - порблем  (Прочетена 1575 пъти)

*****

  • Неактивен Неактивен
  • Публикации: 35

Здрасти колеги, имам  нужда от малко помощ...

ofstream data;
 data.open("d:\\data.txt");
   
for (i = 0; i <= 19; i++)
for (i2 = 0; i2 <= 3; i2++)
for (i3 = 0; i3 <= 54; i3++)
for (i4 = 0; i4 <= 47; i4++)
for (i5 = 0; i5 <= 31; i5++)
{
a++;
data <<code<<code2[i2]<<code3[i3]<<code4[i4]<<<<code5[i5]<<endl;
}

Искам на всеки a=100 000 да записва в друг файл.
Може ли някак да се създаде масив от имена на файлове?

string x[5000];
 data.open(х);

Или нещо друго, без значение стига да стане!
ПС. Този файл стана 572 MB  :-o
Активен

*****

  • Неактивен Неактивен
  • Публикации: 35
Re:C++ работа с фаилове - порблем
« Отговор #1 -: 29.04.2010, 00:19:43 »

Е съмнявам се никой да не знае.Не е и като да не ви се пише, ш'от пишете по другите теми...
Ама ок, никой не е длъжен все пак.
Всичко най!
Активен

radko87

  • Неактивен Неактивен
  • Публикации: 112
  • Stupid man :D
Re:C++ работа с фаилове - порблем
« Отговор #2 -: 29.04.2010, 11:55:51 »

Въпроса ти е реторичен  ... аз невиждам защо да не може да си направиш масив с имена на фаилове или пък да си създаваш нови фаилове  от рода  "име_на_основен_1-n.txt" или както си поискаш. Друг е въпроса за това колко е добро решението на задачата (каквато и да е тя) с тези 5 вложени цикъла.
Активен
Sun Certified Java Programer/OCJP/ - От Sun спомен нема .....

*****

  • Неактивен Неактивен
  • Публикации: 35
Re:C++ работа с фаилове - порблем
« Отговор #3 -: 30.04.2010, 13:36:44 »

Въпроса не е риторичен.То може да се направи споменатия масив, но не може да се използва (поне аз не знам как).
Иначе мога да и да си декларирам имената на фаиловете, но не се сещам как ще стане после IF-a

IF (a==100 000) .... и какво как да започне да отпечатва от там където е стигнал до сега, но вече в
другия файл?
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:C++ работа с фаилове - порблем
« Отговор #4 -: 02.05.2010, 12:21:18 »

Защо не if (a % 1000000 == 0) - и после а / 100000 ти е точно индекса в масива с имената? А може и да се сглобява името с strcat и itoa или с format-strings (printf например)?
« Последна редакция: 02.05.2010, 12:23:16 от Светослав Енков »
Активен

*****

  • Неактивен Неактивен
  • Публикации: 35
Re:C++ работа с фаилове - порблем
« Отговор #5 -: 03.05.2010, 02:13:24 »

Защо не if (a % 1000000 == 0) - и после а / 100000 ти е точно индекса в масива с имената? А може и да се сглобява името с strcat и itoa или с format-strings (printf например)?

Мерси за предложенията, но отдавна го направих.
 
if (!((a + 1) % 100 000))
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:C++ работа с фаилове - порблем
« Отговор #6 -: 03.05.2010, 10:02:11 »

И има ли още проблеми?
Активен

*****

  • Неактивен Неактивен
  • Публикации: 35
Re:C++ работа с фаилове - порблем
« Отговор #7 -: 06.05.2010, 00:54:29 »

Еми поне за момента не.

Радвам се че има хора, които са готови да помогнат винаги когато имат възможност!
Активен

neli_randewa

  • Неактивен Неактивен
  • Публикации: 5
Re:C++ работа с фаилове - порблем
« Отговор #8 -: 27.04.2012, 15:09:24 »

Здравейте!
И аз имам прблем. ГОЛЯМ! ПОМОГНЕТЕ МИ?
Искам да направя информационна ситема, която работи с файлове, чийто елементи са структура. Про извеждането на елементите на файла винаги последния ми го отпечатва два пъти.Успях да добавя елемент, но не мога да промена даден елемент. Дава ми грешка при функцията seekp! Ако се справя с това вероятно ще успея и да изтрий елемент от файла.
#include<iostream.h>
#include<fstream.h>
struct uchenik
{unsigned nom;
char ime[20];
char egn[11];
float usp;
 }u;
int is;



/*void append();
void update();
void choose();
void del();
*/
void create ()
 {  ofstream f;
    f.open("klas.dat",ios::out);
    if (!f) {cout<<"Error"<<"\n";
     system("pause");
     return ;}
    int n=-1, is;
    while (n!=0)
      {cout<<"Nomer: "; cin>>u.nom;
   cout<<"Ime: ";cin>>u.ime;
   cout<<"EGN: "; cin>>u.egn;
   cout<<"Uspeh: "; cin>>u.usp;
    f.write((const char*)&u,sizeof(struct uchenik));
    cout<<"Nov zapis: 1-da,0-ne"<<"\n";
    cin>>n; }
    f.close();
}
void print()
{    ifstream f;
     f.open("klas.dat",ios::in);
    if (!f) {cout<<"Error"<<"\n";
     system("pause");
     return ;}
     do
      {f.read((char*)&u,sizeof(struct uchenik));
      cout<<"Nomer: "<<u.nom<<endl;
     cout<<"Ime: "<<u.ime<<endl;
     cout<<"EGN: "<<u.egn<<endl;
     cout<<"Uspeh: "<<u.usp<<endl<<endl;
      }
       while (!f.eof());
    f.close();
}
void append()
{    ofstream f;
     f.open("klas.dat",ios::app);
     /*if (!f) {cout<<"Error"<<"\n";
     system("pause");
     return ;}*/
     int n=-1;
    while (n!=0)
    {cout<<"Nomer: "; cin>>u.nom;
   cout<<"Ime: ";cin>>u.ime;
   cout<<"EGN: "; cin>>u.egn;
   cout<<"Uspeh: "; cin>>u.usp;
    f.write((const char*)&u,sizeof(struct uchenik));
    cout<<"Nov zapis: 1-da,0-ne"<<"\n";
    cin>>n; }
    f.close();
 }
void update()
 {unsigned long pos;
      fstream f;
      f.open("klas.dat",ios::in|ios::ate|ios::binary);
 unsigned  search_nom;
 float ocenka;
 cout<<"Vyvedi tyrseniq nomer: ";cin>>search_nom;
 cout<<"Vyvedi nova ocenka: ";cin>>ocenka;
 //if (!f) {cout<<"Error"<<"\n";
  //   system("pause");
    // return ;}
      while (f)
      {f.read((char*)&u,sizeof(struct uchenik));
      if(u.nom==search_nom)
      {pos=f.tellg()-sizeof(struct uchenik);
      f.seekp(pos);
      u.usp=ocenka;
      f.write((const char*)&u,sizeof(struct uchenik));
      }
      }
          f.close();
 
  }
int main()
{ int op=-1;
while (op!=0)
  {cout<<"izberete funciq:"<<endl;
   cout<<"     1-sazdavane na fail\n"<<endl;
   cout<<"     2-izvejdane na fail\n"<<endl;
   cout<<"     3-dobavqne na u4enik\n"<<endl;
   cout<<"     4-promqna na ocenka\n"<<endl;
   cout<<"     5-izbor po uspeh\n"<<endl;
   cout<<"     6-iztrivane\n"<<endl;
   cout<<"vsi4ko drugo-krai\n"<<endl;
   cin>>op;
    switch (op)
    { case 1: create();break;
      case 2:print();break;
      case 3:append();break;
     /*case 4:update();break;
      case 5:choose();break;
      case 6:del();break;*/
     default:exit(0); }
     }   
  system("PAUSE");   
  return 0;
}
Активен