Кресты / Говнокод #19967 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
#include <iostream>
#include <string>
#include <fstream>
#include <locale>
#include <windows.h>
#include <conio.h>
#include <cstdlib>

using namespace std;

struct Book
{
string author;
string name;
string year;
};

struct toolstruct
{
string filename;
ifstream file_for_read;
ofstream file_for_write;
unsigned int struct_cnt = 0;
HANDLE stdouthandle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
Book * shelfptr;
};

enum SSORT_TYPE
{
SSORT_INC = 1,
SSORT_DEC = -1
};

void Display(toolstruct*);
void Edit(toolstruct*);
void Sort(toolstruct*, SSORT_TYPE);
void Write(toolstruct*);

int main()
{

setlocale(LC_ALL, "Russian");

toolstruct ftool;
char buff;
unsigned int i = 0;

do
{
cout<<"Введите имя каталога:"<<endl;
getline(cin, ftool.filename);
ftool.file_for_read.open(ftool.filename.c_str(), ios_base::in);
}while(!ftool.file_for_read.is_open());


while(!ftool.file_for_read.eof() && ftool.struct_cnt<20)
   {
   ftool.file_for_read>>buff;
   if(buff=='~'){ftool.struct_cnt++;}
   };
ftool.shelfptr = new Book[ftool.struct_cnt];
ftool.file_for_read.clear();
ftool.file_for_read.seekg(0);
ftool.shelfptr = new Book[ftool.struct_cnt];
do
   {
   ftool.file_for_read>>buff;
   if(buff=='~')
      {
      getline(ftool.file_for_read, ftool.shelfptr[i].author);
      getline(ftool.file_for_read, ftool.shelfptr[i].name);
      getline(ftool.file_for_read, ftool.shelfptr[i].year);
      i++;
      }
   }while(!ftool.file_for_read.eof());
ftool.file_for_read.close();
Display(&ftool);
}

void Display(toolstruct* ts)
{
//void (*callback_ptr)(toolstruct*) = Display;
system("cls");
cout<<"Содержимое файла "<<ts->filename<<":"<<endl
    <<"   Автор            "<<"Название            "<<"Год публикации"<<endl;
if(ts->struct_cnt != 0)
{
for(unsigned short j = 0; j<ts->struct_cnt; j++)
{
ts->pos.X = 0;
ts->pos.Y = j+2;
SetConsoleCursorPosition(ts->stdouthandle, ts->pos);
cout<<j+1<<". ";
if(ts->shelfptr[j].author.length()<=20)
    {cout<<ts->shelfptr[j].author;}
else{cout<<ts->shelfptr[j].author.substr(0,16)+"...";}
ts->pos.X = 20;
SetConsoleCursorPosition(ts->stdouthandle, ts->pos);
if(ts->shelfptr[j].name.length()<=20)

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

Запостил: Fluttie Fluttie, (Updated )

Комментарии (20) RSS

  • т.е. проблема в том, что студент, не имеющий понятия, как надо, сделал велосипед на костылях?
    Ответить
      • А надо, во-первых, перегрузить для типа структуры операторы << и >> с ostream и istream соответственно, а во-вторых, определить для типа структуры статическую функцию compare и использовать std::sort.
        Ответить
    • Ну в общем да, а это охуительное форматирование ещё и китайским программированием попахивает, как по мне. На чистых крестах (ну там с парой платформенных вещей) вообще хз как это делается.
      Ответить
  • Какая-то унылая попытка сделать из крестовых *stream'ов сишные FILE/fread/fwrite.

    PS, "getline(cin, ftool.filename)" - убеждённый процедурник писал?
    Ответить
  • Я вот сам студентота, если б получил такое задание, смотрел бы в сторону шарпа, формочек, всей хуйни, ну и здесь внимание привлекло в первую очередь брутальное форматирование, а про *stream двже не задумывался, в чем тут фишка-то?
    Ответить
    • >> реализовать чтение-запись структур в файл/из файла, а также сортировку по убыванию/возрастанию одного из полей
      > смотрел бы в сторону шарпа, формочек
      Каких формочек? Это же не куличики в песочнице, это структуры и файлы, C++, файлопотоков и консолечки здесь хватит. Или даже C и FILE*.
      Ответить
      • Всё про форматирование, вот каких. Всяко удобнее выводить список структур в виндовые спискотаблицы, чем ебаться с форматированием в консоли.
        Ответить
        • > удобнее выводить список структур в виндовые спискотаблицы, чем ебаться с форматированием в консоли
          Вот и выросло поколение...
          Ответить
          • Такое поколение еще в 1991м выросло

            Выросло и наплодило программ, у которых аутпут только ввиде GUI таблиц. Получить этот аутпут и передать дальше нельзя никак, если только не дергать их полудокументированный API
            Ответить
          • Удобнее != лучше, а программистская ориентация не позволяет != неудобно.
            К слову.
            Ответить
  • Почему нельзя было отформатировать код хотябы?
    Ответить
    • Prepare your foot.
      
                            ,                                               ,
                           @"===,                                  ,_____cctI
                           "?AAAAAAAAAAAAAAAA,,,,,,,,,,,,,,,,,,,,,;LLLLLLLLLL
                 ~",,,      1""""""""""""###OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
                  '"EEEEE, !'"***"~~~~~~"OOOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
                     ,EEEEE)>"'''???????"WWW!MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
                      "E.,)+="WWW~~~~~~#"OOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
                   ,~:#")LLL!"+++???????"$$$1==========##/
                    &LLLLLLLLL;;;;;;;;;;;;,,,/
                    1#LLLLLLLLLLLLLLLLLLLLLL!
                  ,!###LLLLLL"'EEEE,'"LLLLL!
                  !######LLL"  "EEE"  "LLLL"
                 !#########L!   "EEJ. "LL!
                !##########1      "JJ*,l"
               !############"!       ,l"
               1##########"  1"~~,~~"
              !##########"
             !###########!
             !###########1
            !############!
            1#############
           !"#############"
           !##############!
           1##########"'
           1#####"'
           """""
      Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8