Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Меню в С++ 3.1  (Прочитано 61214 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
elja_1989
Гость
« Ответ #30 : 26-02-2008 17:06 » 

C меню разобрался.. запаров нет) спс! Теперь вопрос другой! Как лучше представить текст вводимый/выводимы на экран? Массив строк? 1 большая строка ? Список?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #31 : 26-02-2008 17:44 » 

Большая строка и массив имеют известные недостатки, связанные с операциями вставки/удаления в середине.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
elja_1989
Гость
« Ответ #32 : 26-02-2008 18:52 » 

с быстродействием что ли? Вроде в голове продумал и просто,тока медленно..

А если делать через список(никогда не делал ещё, тока начал изучать, то надо на каждый символ что ли отдельную структуру имеющую символ, и адрес следующей что ли, ну ещё и ряд функций для работы с ним? Кстати А в списке чего такого понтового? Только то что адреса перенапрявлять проще?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #33 : 26-02-2008 19:18 » 

Под каждый символ липить структуру, ну Вы братец изврашенец. Символ имеет длину 1 байт, если брать однобайтовую кодировку. Плюс 8 байт на два указателя, Один вверх списка, второй вниз списка. Итого получается 9 байт на 1 символ. Делают как правило блоками. например абзац. Тогда получается как бы меньший объем занимаемой памяти. Второй момент, содержимое блока относительно мало, поэтому им быстрее манипулировать.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #34 : 27-02-2008 07:11 » 

Finch, ну почему сразу такой уж извращенец? Улыбаюсь Если мне не изменяет память, небезызвестный товарищ Гамма сотоварищи в своей книжке про образцы проектирования как раз занимался созданием расчудесного текстового редактора с кучей возможностей по безболезненному расширению. И первым делом ввёл древовидную структуру сущностей "глиф", чтобы поддерживать форматирование (включая потенциал его расширения и усложнения) и ряд других любопытных возможностей. Правда, там были зачатки мощного текстового процессора, с набором шрифтов, возможностью вставки картинок, проверки орфографии, ну и так далее. Не сказать, чтобы они скрывали, что это более затратно - но находили такой метод более универсальным, чтобы не пришлось потом перепроектировать в случае, если понадобится, скажем, усложнить форматирование Улыбаюсь

P.S. Разумеется, в обсуждаемой задаче все эти навороты могут быть и не нужны Улыбаюсь Вообще, некоторые считают vi вполне удобным текстовым редактором - в принципе, когда запоминаешь базовые команды, работать с ним и правда не так сложно Улыбаюсь
« Последнее редактирование: 27-02-2008 07:23 от Вад » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 27-02-2008 11:42 » 

Цитата: Вад
Если мне не изменяет память, небезызвестный товарищ Гамма сотоварищи в своей книжке про образцы проектирования как раз занимался созданием расчудесного текстового редактора с кучей возможностей по безболезненному расширению. И первым делом ввёл древовидную структуру сущностей "глиф", чтобы поддерживать форматирование (включая потенциал его расширения и усложнения) и ряд других любопытных возможностей.
К сожалению, расчудесная банда четырёх с известным текстовым редактором на 1-м курсе слишком сложны и непонятны, а ООП в этой курсовой не применяется Жаль. Так что, увы, студенту эта книжка пока пользы не принесёт, а раз она бесполезна, то остаётся лишь не навредить Улыбаюсь.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #36 : 27-02-2008 11:55 » new

Вад, Насколько я помню, как-то Джон на форуме расказывал байку. Как один чудак выделил под число в пределах от 0 до 1024 ровно 1024 байта. Да расширяемость просто наименоверная. Можно хранить числа  аж до 2^8096-1. Если уж так нужно, то есть паттерн проектирования Приспособленец http://www.citforum.ru/SE/project/pattern/#3.1.8, который эту задачу решает также легко с меньшим расходом ресурсов.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #37 : 27-02-2008 12:27 » 

Finch, dimka, согласен Улыбаюсь Но нельзя же полёт мысли человеку ограничивать просто потому, что он затеял что-то сложное Улыбаюсь Просто нужно помочь ему задуматься над тем, адекватны ли те или иные решения сложности предложенной задачи. Отклонение от упомянутого Finch-ем правила ещё не является извращением. В каких-то случаях такое решение будет удобнее. Нужно лишь, чтобы elja_1989 сумел понять, когда такое решение - наилучшее, а когда можно и попроще чего сделать Улыбаюсь
А то напугаете, будет всю жизнь варианты поэкономнее выгадывать, считая более сложное извращением Улыбаюсь
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #38 : 27-02-2008 14:50 » 

Вад, согласен. Но тогда лучше излагать решение своими словами и, главное, в терминах структурного программирования, а не ООП.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
elja_1989
Гость
« Ответ #39 : 15-03-2008 22:31 » 

Народ, с меню поконченно, впринципе оочень давно)) всё было намного проще чем системная часть, но вот теперь возникает вопрос насчет памяти..
Как выделить более 64 кб памяти, если конечно стоит это делать, просто ведь так проще))) Если уж никак тогда как правильно алгоритмизировать работу с файлами подкачи(буфер.. короче не знаю как правильно назвать) Стоит ли создавать 2 буфера(верхний и нижний) или можно обойтись 1 фалом таким, и как записывать на тоже место в файл изменённую строчку превышающую по размерам не измененную(fwrite) как перемещатся по строчкам файла не используя fgets(я думаю это не оптимально..наверное). Короче идеи у меня были такие:
1) Хранить данные идущие вверх в верхнем буфере, а идущие вниз в нижнем..
Всё принципе с верхним вышло, а вот с нижним нет)) Там надо подписывать данные в буфер не с конца а с начала, а как это оптимальнее сделать я не догадался..
2) ВЫделить на мое окно в котором 46 строчек, ровно 46 пустых строк.. и при каждом ствиге записывать всё в 1 буфер, а потом читать из него новые переписывая их на эти 46..
3) Забить на мою посимвольную премотку текста и сделать постраничную, это решит пару проблем... Но я очень не хочу..

Что вы мне посоветуете..
« Последнее редактирование: 15-03-2008 22:57 от elja_1989 » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 16-03-2008 13:44 » 

Цитата: elja_1989
Как выделить более 64 кб памяти
Проще всего в куче. Можно и для статического размещения, но нужно будет сменить модель памяти со small на что-нибудь более основательное и использовать far-указатели.

Но под DOS я бы не советовал полагаться на память. Всегда можно получить такой файл, который в память не влезет.

Можно работать со временным файлом и держать окно текста в 32 Кб с возможностью расширения до 64 Кб. Окно - часть файла, находящаяся в памяти, в которой находится курсор (точка ввода/редактирования).

Как только юзер ввёл много текста, окно сбрасывается на диск в таком порядке: создаётся новый временный файл, часть старого временного файла до начала окна копируется в новый, затем вставляется окно, затем оставшаяся часть старого временного файла. После чего старый временный файл удаляется, окно очищается и в него загружается порция данных в 32 Кб вокруг курсора. Ну, обработать случаи начала и конца файла. То же самое, если пользователь удалил много текста или переместил курсор намного вперёд или назад. В случае "листания" файла новые временные файлы создавать, естественно, не нужно - просто обновлять окно, двигаясь по файлу вниз или вверх.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
elja_1989
Гость
« Ответ #41 : 17-03-2008 14:31 » 

А если я ограничусь 300-ми байтами на 1 строчку? То как сделать оптимальнее?

моя структурка выглядит примерно так(если конечно это что-то решает), огранизация - очередь.
struct TeXt
{ char txt[300];
  struct TeXt *next;
  struct TeXt *prev;
}
 
Записан
elja_1989
Гость
« Ответ #42 : 17-03-2008 19:14 » 

Во сделал тока что.. при каждом сдвиге всё делается как написал Дмитрий.. Запись изменений, перепись в темповик и вновь четение из него на строку ниже/выше.. Но при больших файлах начинает тормозить, потому что переписывать надо слишком много.. Как сделать оптимальнее этот вариант? Использовать вместо 1 окна.. как бы в 2 раза большее.. и делать опирации переписии-четения в 2 раза реже? Или вообще сделать n-окон на сколько памяти хватит? как оптимальнее?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #43 : 17-03-2008 19:37 » 

Именно потому я и говорил про окно в 32-64 Кб, что при таком окне дисковые операции достаточно редки.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
elja_1989
Гость
« Ответ #44 : 23-03-2008 18:05 » 

Народ помогите я в тупике... Не могу дописать уже 4 день 1 мелочь... Где ошибка? Что не так делаю?
Объясню принцип.. Когда переменная для скролирования становится крастно 46(полное окно), то текст должен переписаться в темповик, а потом счетаться из него в соответствие с тем куда движется текст.. Вниз всё ок, а вверх не могу дописать.. Не понимаю какие цифры нужны для этих смещений...

Вот код этого момента
Код:
if(c=='u')
 while(++t!=yy+win/2)
  {if(t<(yy-(win*3)/2))    fgets(byf,str_size,tmp);
   else if(t>(yy-(win*3)/2)) { fgets(byf,str_size,tmp);
     strcpy(p1->txt,byf);
     p1=p1->next; }
  }
else if(c=='d')
 while(++t!=(yy+win))
  {if(t<yy)  fgets(byf,str_size,tmp);
   else if(t>yy)     {  fgets(byf,str_size,tmp);
strcpy(p1->txt,byf);
p1=p1->next; }
 }


fclose(tmp);

t=0;
if(c=='d')
 p3=*text;
else if(c=='u')
 { p3=*text;
  while(++t!=(win/2))
   p3=p3->next;
 }

Вот тестовая версия части проги..
В качестве проверки юзал файлик с цифрами от 1 до 999

Код:
#include <dos.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <alloc.h>

#define str_size 300
#define win 92
/////////////////////////////////STRUCT////////////////////////
struct Text
{char txt[str_size];
 struct Text *next;
 struct Text *prev;
};
//////////////////////////////////////INSERT////////////////////////////////
void insert( Text **golova, char *ms, Text **hvost)
{Text *n;
 if(!(n=(Text*)calloc(1,sizeof(Text))))
    return;
 else strcpy(n->txt,ms);
 if(!*golova)
  *golova=*hvost=n;
 else
{ n->prev=*hvost;
  (*hvost)->next=n;
  *hvost=n; }
}
//////////////////////////////////////OPEN////////////////////////
void open(Text **start)
{
FILE *txt,*rec;
rec=fopen("temp.tmp","w");
Text *hvost=NULL;
char ms[str_size+1];
int i=0;
if( (txt=fopen("123.txt","r"))==NULL)
     { printf("ЌҐў®§¬®¦­® ®вЄалвм д ©«!!!");
       delay(1500);
       exit(1);
     }
    else
    {    while(1)
   {if(!feof(txt))
     {fgets(ms,str_size,txt);
   if(!feof(txt))  fputs(ms,rec);
      if(i++<=win) insert(start,ms,&hvost);
     }
    else if(feof(txt)&&i<win)
     {fputs("",rec);
      if(i++<=win) insert(start,"",&hvost);
     }
    else break;
   }fclose(txt);
    fclose(rec);

    }

}


///////////////////////////PROTOTIPS/////////////////////
int print(Text **,int,int,char);
void to_menu(void);
void refresh(void);

//void add(TXT *text,int x,int y);
//void to_text(void);
//void open
//void save
//void copy
//void paste
//void cut




//////////////////////////////////////////MAIN//////////////
void main()
{
 textmode(64);
 Text *text=NULL,*hvost;
 int x=1,y=1,i; //Є®®а¤Ё­ вл ¤«п ЇҐаҐ¬ҐйҐ­Ёп Ї® ®Є­г । ЄвЁа®ў ­Ёп
 int handle=0;


remove("recopy.tmp");
remove("temp.tmp");
if (_dos_creatnew("temp.tmp", _A_HIDDEN, &handle) != 0)
  {
    perror("Unable to create");
 exit(1);
  }
if (_dos_creatnew("recopy.tmp", _A_HIDDEN, &handle) != 0)
  {
    perror("Unable to create");
 exit(1);
  }
_dos_close(handle);





open(&text);
textbackground(BLUE);
clrscr();



//ᮧ¤ ­ЁҐ ўЁ¤ 
window(1,1,80,1);
textbackground(LIGHTGRAY);
for(i=0;i<80;i++) cputs(" ");
textcolor(BLACK);
cputs(" File  Edit  Search  About ");
window(1,1,80,50);
gotoxy(1,2);
textcolor(YELLOW);
textbackground(BLUE);
 cputs("ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                             є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"є                                                                              є"
"ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј");
 cprintf(" F10 - enter menu                                               Esc - exit menu");

 window(3,3,78,47);
 print(&text,1,1,'0');
 gotoxy(1,1);


//®Є­® ᮧ¤ ­­®

char sim;  //ўў®¤Ё¬л© бЁ¬ў®«

int ps_x=1,ps_y=1; //ЇбҐў¤® y Ё е
long int scr_x=1,scr_y=1;
//y=44;
while(1)

{
 switch(sim=getch())
  {
    case 0: switch(sim=getch())
     {
       case 68:
to_menu();
break;

       case 72: if(ps_y==1)
{ ps_y=1;
   y--;
   if(y<=0) y=1;

   if(scr_y>1)
    {scr_y--;
     if(scr_y<=0) scr_y=1;
     print(&text,scr_x,scr_y,'u');
    }
  }
else {ps_y--;
      y--;
     }
gotoxy(ps_x,ps_y);
break;

       case 80: if(ps_y==46)
{ ps_y=46;
   y++;
   if(ps_y==46&&y!=46)
    {scr_y++;
     print(&text,scr_x,scr_y,'d');
    }
}
else
{ps_y++;
y++;
}
       gotoxy(ps_x,ps_y);
break;


       case 77: if(ps_x==76)
{ ps_x=76;
   x++;
   if(ps_x==76&&x!=76)
    {scr_x++;
    print(&text,scr_x,scr_y,'0');
    }
}
else
{ps_x++;
x++;
}
       gotoxy(ps_x,ps_y);
break;

       case 75: if(ps_x==1)
{ ps_x=1;
   x--;
   if(x<=0) x=1;

   if(scr_x>1)
    {scr_x--;
     if(scr_x<=0) scr_x=1;
    print(&text,scr_x,scr_y,'0');
    }
  }
else {ps_x--;
      x--;
     }
gotoxy(ps_x,ps_y);
break;


     }

    default: break;//add(text,x,y);

  }

}






getch();
}


void to_menu(void)
{

int i,j,k;
window(1,1,80,50);

_setcursortype(_NOCURSOR);

char *ms[4]={" File "," Edit "," Search "," About "};

gotoxy(1,1);
textcolor(BLACK);
textbackground(GREEN);
cprintf(" File ");

i=0;


while(1)
{
 switch(getch())
  {
    case 77 : if(i==3) i=3;
     else {
   i++;
   textbackground(LIGHTGRAY);
   textcolor(BLACK);
   gotoxy(1,1);
   cputs(" File  Edit  Search  About ");

   textcolor(BLACK);
   textbackground(GREEN);
   if(i==0) gotoxy(1,1);
   if(i==1) gotoxy(7,1);
   if(i==2) gotoxy(13,1);
   if(i==3) gotoxy(21,1);

   cputs(*(ms+i));
  }


     break;

   case 75 : if(i==0) i=0;
     else {
   i--;
   textbackground(LIGHTGRAY);
   textcolor(BLACK);
   gotoxy(1,1);
   cputs(" File  Edit  Search  About ");

   textcolor(BLACK);
   textbackground(GREEN);
   if(i==0) gotoxy(1,1);
   if(i==1) gotoxy(7,1);
   if(i==2) gotoxy(13,1);
   if(i==3) gotoxy(21,1);

   cputs(*(ms+i));
  }


     break;
  }
 }
}


int print(Text **text,int x,int yy,char c)
{window(1,1,80,50);
 gotoxy(1,2);
 textcolor(YELLOW);
 textbackground(BLUE);
 cprintf("ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "є                                                                              є"
 "ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј");


 window(3,3,78,50);
 gotoxy(1,1);
 cprintf("%d", yy);
static int flg=0;

textcolor(WHITE);
textbackground(BLUE);
int t=0;
Text *p1=*text,*p2;
static Text *p3=*text;

if(c=='0')
 { p1=p3;
  t=0;
  while(p1->next&&(t++)!=46)
  {gotoxy(1,t);
   cprintf("%.76s",p1->txt+x-1);
   p1=p1->next;
  } return 0;
 }


FILE *tmp,*rec;
if(yy%(win/2+1)==0)
{char *byf;
byf=(char*)calloc(str_size+1,sizeof(char));

if(flg==0) { tmp=fopen("temp.tmp","r+");       //error places not view
     rec=fopen("recopy.tmp","w");
     flg=1;
   }
else       { rec=fopen("temp.tmp","w");       //error places not view
     tmp=fopen("recopy.tmp","r+");
     flg=0;
    }

t=0;

while(++t<(yy+win/2)) //+-1   perepis verha i okna i smeshenie po tmp k nizy
 {
 if(t<(yy-(win/2)-1))  { fgets(byf,str_size,tmp);
       fputs(byf,rec); }
 if(t>(yy-(win/2)-1)) { fputs(p1->txt,rec);
       p1=p1->next;
       fgets(byf,str_size,tmp); }
 }
t=0;
while(!feof(tmp))                    //Perepis konca
 {   fgets(byf,str_size,tmp);
   if(!feof(tmp))
     fputs(byf,rec);
 }
fclose(tmp);
fclose(rec);

if(flg==0)  tmp=fopen("recopy.tmp","r");
else        tmp=fopen("temp.tmp","r");
p1=*text;
if(c=='u')
 while(++t!=yy+win/2)
  {if(t<(yy-(win*3)/2))    fgets(byf,str_size,tmp);
   else if(t>(yy-(win*3)/2)) { fgets(byf,str_size,tmp);
     strcpy(p1->txt,byf);
     p1=p1->next; }
  }
else if(c=='d')
 while(++t!=(yy+win))
  {if(t<yy)  fgets(byf,str_size,tmp);
   else if(t>yy)     {  fgets(byf,str_size,tmp);
strcpy(p1->txt,byf);
p1=p1->next; }
 }


fclose(tmp);

t=0;
if(c=='d')
 p3=*text;
else if(c=='u')
 { p3=*text;
  while(++t!=(win/2))
   p3=p3->next;
 }

}

if(p3->next&&c=='d')
 {p3=p3->next;
  p1=p3;}
else if(p3->prev&&c=='u')
 {p3=p3->prev;
  p1=p3;}
t=0;
while(p1->next&&(t++)!=46)
 {gotoxy(1,t);
  cprintf("%.76s",p1->txt+x-1);
  p1=p1->next;
 }
return 0;
}

Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 23-03-2008 18:55 » 

1) для начала: когда копируешь в пост, делай так: включи русскую раскладку, затем скопируй в буфер текст программы, только потом вставь в пост. Так русские буквы не испортятся

2)
момент
Код:
 cputs("ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"
"є                                                                              є"
"є                                                                              є"
....
....
"є                                                                              є"
"ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј");


очень сильно пугает... Ну, я не имею в виду испорченные буквы, а сам подход. Я бы написал что то вроде
Код:
const char pch1="ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»\r\n";
const char pch2="є                                                                              є\r\n";
int i;

cputs(pch1);
for(i=0;i<46;i++)cputs(pch2);
cputs(pch1);

3) форматирование

даже фрагмент в первом блоке кода в твоём посте - нечитабельный...
а вот в таком виде, я уверен, даже радует глаз
Код:
if(c=='u')
{
while(++t!=yy+win/2)
{
if(t<(yy-(win*3)/2))
{
fgets(byf,str_size,tmp);
}
else if(t>(yy-(win*3)/2))
{
fgets(byf,str_size,tmp);
strcpy(p1->txt,byf);
p1=p1->next;
}
}
}
else
if(c=='d')
{
while(++t!=(yy+win))
{
if(t<yy)
{
fgets(byf,str_size,tmp);
}
else if(t>yy)
{
fgets(byf,str_size,tmp);
strcpy(p1->txt,byf);
p1=p1->next;
}
}
}


fclose(tmp);

t=0;
if(c=='d')
{
p3=*text;
}
else
if(c=='u')
{
p3=*text;
while(++t!=(win/2))
{
p3=p3->next;
}
}

----------------
вот, как бы к чему я всё это ? А никто не будет разбираться в чужом коде, когда это сделать так сложно, а на дворе - уже почти на работу надо идти, а потом - понедельник Улыбаюсь
Записан

elja_1989
Гость
« Ответ #46 : 23-03-2008 19:52 » 

А что разве быстрее будет делать циклом?

Ну ребят я просто уже в тупике, прошу помогите!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #47 : 24-03-2008 03:55 » 

elja_1989, в цикле, конечно, будет не быстрее, но ты этого никогда в таких масштабах не заметишь ) Зато удобно. Я бы ещё и длину строки в цикл загнал, но это уже как хочешь
-----------
насчёт помочь - я уже написал, что надо для этого сделать - люди ведь на работе сидят, им некогда в каше разбираться , серьёзно
Записан

Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines