none
буфер записывается дважды на диск RRS feed

  • Вопрос


  • Всем привет!

    Я использую виндовус 10 и компилятор Dev-C++. Моя программа создает файл и записывает его на диск, диск идеален. На печать выдается созданный файл и считанный с диска. Эти файлы не совпадают. Причина - один из буферов записывается повторно. Ниже приводится программа и часть распечаток, демонстрирующая этот повтор. Это ошибка операционки, но не исключена ошибка Dev-C++.

    Майдим Малков

    Программа. ========================================================================

    #include<iostream>
    #include<fstream>
    using namespace std;
    int i,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16,i17,i18,i19,i20,i21,i22,i23,i24,i25,i26,i27,i28,j,j0; char C[27],C0[211250][27];
    int main()
    {ofstream cout;cout.open("k3n3(012122).txt");
     ofstream outf;outf.open("k3n3.(012122).bin",ios::binary);if(!outf)  return(2);}
     for(i0=j=0;i0<3;i0++)
     for(i1=C[0]=i0,C[1]=0;i1<3;i1++)
     {if(C[1]<C[0]) C[1]=C[0];if(i1<C[1]) i1=C[1];else if(C[1]<i1) C[1]=i1; for(i2=i1,C[2]=0;i2<3;i2++)
      {if(C[2]<C[1]) C[2]=C[1];if(i2<C[2]) i2=C[2];else if(C[2]<i2) C[2]=i2; for(i3=C[3]=0;i3<3;i3++)

       {if(C[3]<C[0]) C[3]=C[0];if(i3<C[3]) i3=C[3];else if(C[3]<i3) C[3]=i3; for(i4=i3,C[4]=0;i4<3;i4++)//
        {if(C[4]<C[3]) C[4]=C[3];if(C[4]<C[1]) C[4]=C[1];if(i4<C[4]) i4=C[4];else if(C[4]<i4) C[4]=i4;  for(i5=i4,C[5]=0;i5<3;i5++)
         {if(C[5]<C[4]) C[5]=C[4];if(C[5]<C[2]) C[5]=C[2];if(i5<C[5]) i5=C[5];else if(C[5]<i5) C[5]=i5;  for(i6=C[6]=0;i6<3;i6++)

          {if(C[6]<C[3]) C[6]=C[3];if(i6<C[6]) i6=C[6];else if(C[6]<i6) C[6]=i6; for(i7=i6,C[7]=0;i7<3;i7++)//
           {if(C[7]<C[6]) C[7]=C[6];if(C[7]<C[4]) C[7]=C[4];if(i7<C[7]) i7=C[7];else if(C[7]<i7) C[7]=i7;  for(i8=i7,C[8]=0;i8<3;i8++)
            {if(C[8]<C[7]) C[8]=C[7];if(C[8]<C[5]) C[8]=C[5];if(i8<C[8]) i8=C[8];else if(C[8]<i8) C[8]=i8;  for(i9=C[9]=0;i9<3;i9++)

             {if(C[9]<C[0]) C[9]=C[0];if(i9<C[9]) i9=C[9];else if(C[9]<i9) C[9]=i9; for(i10=i9,C[10]=0;i10<3;i10++)//
              {if(C[10]<C[9]) C[10]=C[9];if(C[10]<C[1]) C[10]=C[1];if(i10<C[10]) i10=C[10];else if(C[10]<i10) C[10]=i10; for(i11=i10,C[11]=0;i11<3;i11++)
               {if(C[11]<C[10]) C[11]=C[10];if(C[11]<C[2]) C[11]=C[2];if(i11<C[11]) i11=C[11];else if(C[11]<i11) C[11]=i11; for(i12=0,C[12]=0;i12<3;i12++)

                {if(C[12]<C[9]) C[12]=C[9];if(C[12]<C[3]) C[12]=C[3];if(i12<C[12]) i12=C[12];if(i12<C[12]) i12=C[12];else if(C[12]<i12) C[12]=i12; for(i13=i12,C[13]=0;i13<3;i13++)//
                 {if(C[13]<C[12]) C[13]=C[12];if(C[13]<C[10]) C[13]=C[10];if(C[13]<C[4]) C[13]=C[4];if(i13<C[13]) i13=C[13];else if(C[13]<i13) C[13]=i13; for(i14=i13,C[14]=0;i14<3;i14++)
                  {if(C[14]<C[13]) C[14]=C[13];if(C[14]<C[11]) C[14]=C[11];if(C[14]<C[5]) C[14]=C[5];if(i14<C[14]) i14=C[14];else if(C[14]<i14) C[14]=i14; for(i15=C[15]=0;i15<3;i15++)

                   {if(C[15]<C[12]) C[15]=C[12];if(C[15]<C[6]) C[15]=C[6];if(i15<C[15]) i15=C[15];else if(C[15]<i15) C[15]=i15; for(i16=i15,C[16]=0;i16<3;i16++)//
                    {if(C[16]<C[15]) C[16]=C[15];if(C[16]<C[13]) C[16]=C[13];if(C[16]<C[7]) C[16]=C[7];if(i16<C[16]) i16=C[16];else if(C[16]<i16) C[16]=i16; for(i17=i16,C[17]=0;i17<3;i17++)
                     {if(C[17]<C[16]) C[17]=C[16];if(C[17]<C[14]) C[17]=C[14];if(C[17]<C[8]) C[17]=C[8];if(i17<C[17]) i17=C[17];else if(C[17]<i17) C[17]=i17; for(i18=C[18]=0;i18<3;i18++)

                      {if(C[18]<C[9]) C[18]=C[9];if(i18<C[18]) i18=C[18];else if(C[18]<i18) C[18]=i18; for(i19=i18,C[19]=0;i19<3;i19++)//
                       {if(C[19]<C[18]) C[19]=C[18];if(C[19]<C[10]) C[19]=C[10];if(i19<C[19]) i19=C[19];else if(C[19]<i19) C[19]=i19; for(i20=i19,C[20]=0;i20<3;i20++)
                        {if(C[20]<C[19]) C[20]=C[19];if(C[20]<C[11]) C[20]=C[11];;if(i20<C[20]) i20=C[20];else if(C[20]<i20) C[20]=i20; for(i21=0,C[21]=0;i21<3;i21++)

                         {if(C[21]<C[18]) C[21]=C[18];if(C[21]<C[12]) C[21]=C[12];if(i21<C[21]) i21=C[21];else if(C[21]<i21) C[21]=i21; for(i22=i21,C[22]=0;i22<3;i22++)//
                          {if(C[22]<C[21]) C[22]=C[21];if(C[22]<C[19]) C[22]=C[19];if(C[22]<C[13]) C[22]=C[13];if(i22<C[22]) i22=C[22];else if(C[22]<i22) C[22]=i22; for(i23=i22,C[23]=0;i23<3;i23++)
                           {if(C[23]<C[22]) C[23]=C[22];if(C[23]<C[20]) C[23]=C[20];if(C[23]<C[14]) C[23]=C[14];if(i23<C[23]) i23=C[23];else if(C[23]<i23) C[23]=i23; for(i24=C[24]=0;i24<3;i24++)

                            {if(C[24]<C[21]) C[24]=C[21];if(C[24]<C[15]) C[24]=C[15];if(i24<C[24]) i24=C[24];else if(C[24]<i24) C[24]=i24; for(i25=i24,C[25]=0;i25<3;i25++)//
                             {if(C[25]<C[24]) C[25]=C[24];if(C[25]<C[22]) C[25]=C[22];if(C[25]<C[16]) C[25]=C[16];if(i25<C[25]) i25=C[25];else if(C[25]<i25) C[25]=i25;  for(i26=i25,C[26]=0;i26<3;i26++)
                              {if(C[26]<C[25]) C[26]=C[25];if(C[26]<C[23]) C[26]=C[23];if(C[26]<C[17]) C[26]=C[17];if(i26<C[26]) i26=C[26];else if(C[26]<i26) C[26]=i26;

                               //for(i=j0=0;i<27;i++) j0|=1<<C[i]; if(j0==7)
                               for(i=0,cout<<"\n"<<j++<<" ";i<27;i++) cout<<(int)C[i]; outf.write(C,27);//if(j!=1) {for(i=0;i<27;i++) if(C[i]!=C0[i]) break; if(i==27) return(1);} for(i=0;i<27;i++) C0[i]=C[i];
     }}}}}}}}}}}}}}}}}}}}}}}}}}cout<<"\nj="<<j;clog<<"\nj="<<j;
     ifstream in;in.open("k3n3(012122).bin",ios::binary);if(!in) {clog<<"!!!in";return(1);} in.read(C0[0],j*27);
     for(i1=0;i1<j;i1++) for(i2=0,cout<<"\n"<<i1<<" ";i2<27;i2++)  cout<<(int)C0[i1][i2]; 
    }========================================================

    Строки с диска 1308-1472, далее повтор 1473=1308 и т.д. до 1637, до записи на диск повтора нет.

    1308 000000000000001001000001001

    1309 000000000000001001000001002
    1310 000000000000001001000001011
    1311 000000000000001001000001012
    1312 000000000000001001000001022
    1313 000000000000001001000001111
    1314 000000000000001001000001112
    1315 000000000000001001000001122
    1316 000000000000001001000001222
    1317 000000000000001001000002002
    1318 000000000000001001000002012
    1319 000000000000001001000002022
    1320 000000000000001001000002112
    1321 000000000000001001000002122
    1322 000000000000001001000002222
    1323 000000000000001001000011011
    1324 000000000000001001000011012
    1325 000000000000001001000011022
    1326 000000000000001001000011111
    1327 000000000000001001000011112
    1328 000000000000001001000011122
    1329 000000000000001001000011222
    1330 000000000000001001000012012
    1331 000000000000001001000012022
    1332 000000000000001001000012112
    1333 000000000000001001000012122
    1334 000000000000001001000012222
    1335 000000000000001001000022022
    1336 000000000000001001000022122
    1337 000000000000001001000022222
    1338 000000000000001001000111111
    1339 000000000000001001000111112
    1340 000000000000001001000111122
    1341 000000000000001001000111222
    1342 000000000000001001000112112
    1343 000000000000001001000112122
    1344 000000000000001001000112222
    1345 000000000000001001000122122
    1346 000000000000001001000122222
    1347 000000000000001001000222222
    1348 000000000000001001001001001
    1349 000000000000001001001001002
    1350 000000000000001001001001011
    1351 000000000000001001001001012
    1352 000000000000001001001001022
    1353 000000000000001001001001111
    1354 000000000000001001001001112
    1355 000000000000001001001001122
    1356 000000000000001001001001222
    1357 000000000000001001001002002
    1358 000000000000001001001002012
    1359 000000000000001001001002022
    1360 000000000000001001001002112
    1361 000000000000001001001002122
    1362 000000000000001001001002222
    1363 000000000000001001001011011
    1364 000000000000001001001011012
    1365 000000000000001001001011022
    1366 000000000000001001001011111
    1367 000000000000001001001011112
    1368 000000000000001001001011122
    1369 000000000000001001001011222
    1370 000000000000001001001012012
    1371 000000000000001001001012022
    1372 000000000000001001001012112
    1373 000000000000001001001012122
    1374 000000000000001001001012222
    1375 000000000000001001001022022
    1376 000000000000001001001022122
    1377 000000000000001001001022222
    1378 000000000000001001001111111
    1379 000000000000001001001111112
    1380 000000000000001001001111122
    1381 000000000000001001001111222
    1382 000000000000001001001112112
    1383 000000000000001001001112122
    1384 000000000000001001001112222
    1385 000000000000001001001122122
    1386 000000000000001001001122222
    1387 000000000000001001001222222
    1388 000000000000001001002002002
    1389 000000000000001001002002012
    1390 000000000000001001002002022
    1391 000000000000001001002002112
    1392 000000000000001001002002122
    1393 000000000000001001002002222
    1394 000000000000001001002012012
    1395 000000000000001001002012022
    1396 000000000000001001002012112
    1397 000000000000001001002012122
    1398 000000000000001001002012222
    1399 000000000000001001002022022
    1400 000000000000001001002022122
    1401 000000000000001001002022222
    1402 000000000000001001002112112
    1403 000000000000001001002112122
    1404 000000000000001001002112222
    1405 000000000000001001002122122
    1406 000000000000001001002122222
    1407 000000000000001001002222222
    1408 000000000000001001011011011
    1409 000000000000001001011011012
    1410 000000000000001001011011022
    1411 000000000000001001011011111
    1412 000000000000001001011011112
    1413 000000000000001001011011122
    1414 000000000000001001011011222
    1415 000000000000001001011012012
    1416 000000000000001001011012022
    1417 000000000000001001011012112
    1418 000000000000001001011012122
    1419 000000000000001001011012222
    1420 000000000000001001011022022
    1421 000000000000001001011022122
    1422 000000000000001001011022222
    1423 000000000000001001011111111
    1424 000000000000001001011111112
    1425 000000000000001001011111122
    1426 000000000000001001011111222
    1427 000000000000001001011112112
    1428 000000000000001001011112122
    1429 000000000000001001011112222
    1430 000000000000001001011122122
    1431 000000000000001001011122222
    1432 000000000000001001011222222
    1433 000000000000001001012012012
    1434 000000000000001001012012022
    1435 000000000000001001012012112
    1436 000000000000001001012012122
    1437 000000000000001001012012222
    1438 000000000000001001012022022
    1439 000000000000001001012022122
    1440 000000000000001001012022222
    1441 000000000000001001012112112
    1442 000000000000001001012112122
    1443 000000000000001001012112222
    1444 000000000000001001012122122
    1445 000000000000001001012122222
    1446 000000000000001001012222222
    1447 000000000000001001022022022
    1448 000000000000001001022022122
    1449 000000000000001001022022222
    1450 000000000000001001022122122
    1451 000000000000001001022122222
    1452 000000000000001001022222222
    1453 000000000000001001111111111
    1454 000000000000001001111111112
    1455 000000000000001001111111122
    1456 000000000000001001111111222
    1457 000000000000001001111112112
    1458 000000000000001001111112122
    1459 000000000000001001111112222
    1460 000000000000001001111122122
    1461 000000000000001001111122222
    1462 000000000000001001111222222
    1463 000000000000001001112112112
    1464 000000000000001001112112122
    1465 000000000000001001112112222
    1466 000000000000001001112122122
    1467 000000000000001001112122222
    1468 000000000000001001112222222
    1469 000000000000001001122122122
    1470 000000000000001001122122222
    1471 000000000000001001122222222
    1472 000000000000001001222222222
    1473 000000000000001001000001001

    • Изменено mamalkov 22 января 2017 г. 16:45
    22 января 2017 г. 16:21

Ответы

  • Ваш код трудно читать. Попробуйте переделать код чтоб он был лучше. Уберите все ненужные переменные (три десятка переменных с ужасными именами - код практически обречен на неправильность), все ненужные if и так далее.

    Например просто считайте файл и запишите то что считали. Где то 5 строк, одна локальная переменная. В процессе скорее всего "ошибка в ОС" исчезнет. :)


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа ЖукMVP, Moderator 13 февраля 2017 г. 21:19
    22 января 2017 г. 19:05
    Модератор
  • "не исключена ошибка Dev-C++"

    Ну так перекомпилируйте под Visual C++, в чем проблема. Возможно GNU-библиотеку, которую использует Dev-C++, просто не позаботились обновить под Windows 10.

    22 января 2017 г. 19:28

Все ответы

  • Ваш код трудно читать. Попробуйте переделать код чтоб он был лучше. Уберите все ненужные переменные (три десятка переменных с ужасными именами - код практически обречен на неправильность), все ненужные if и так далее.

    Например просто считайте файл и запишите то что считали. Где то 5 строк, одна локальная переменная. В процессе скорее всего "ошибка в ОС" исчезнет. :)


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа ЖукMVP, Moderator 13 февраля 2017 г. 21:19
    22 января 2017 г. 19:05
    Модератор
  • "не исключена ошибка Dev-C++"

    Ну так перекомпилируйте под Visual C++, в чем проблема. Возможно GNU-библиотеку, которую использует Dev-C++, просто не позаботились обновить под Windows 10.

    22 января 2017 г. 19:28