Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 21:48   #51
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Nitrino
а что это за функция такая flushall();, что она делает?
Очистка буферов ввода-вывода. Там после scanf остается символ перевода строки. От него нужно избавиться.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.05.2009, 14:13   #52
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

подскажите в чём ошибка этой функции
Код:
//Сортировка файла

void sort_file(node *nsp)
{
  node *res, *rsp, *q;
  FILE *temp, *fp;
  int i;
  rsp->pred=res;
  q=nsp;
  while(nsp->str!=NULL)
  {
     for(rsp=nsp; rsp!=NULL; res=rsp, rsp=rsp->sled)
	{
	  if(strlen(rsp->str) < strlen(q->str)) q=rsp;
	}
     if(res==NULL)
      {
       q=nsp;
       nsp=nsp->sled;
      }
    else
      {
       q=rsp;
       res->sled=rsp->sled;
      }
    temp = fopen("2.txt", "a+t");
    fputs(q->str, temp);
    fclose(temp);
    free(q);
  }
    open_file2;
    fp = fopen("1.txt", "w+t");
    while  (rsp!=NULL)
       {
	  fputs(rsp->str, fp); rsp = rsp->sled;
       }
    fclose(fp);
    textbackground( TEXT_BG ); textcolor( TEXT_C );
    clrscr(); gotoxy( COL, ROW-1 );
    i=1; while( i <= K ) { out_menu( i, TEXT_BG ); i++; }

}
При её запуске программа зависает
Nitrino вне форума Ответить с цитированием
Старый 31.05.2009, 14:19   #53
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Поясните, зачем второй файл (2.txt) и как именно происходит сортировка.
В функцию передается список. Его нужно отсортировать и записать в файл? Тогда зачем 2.txt?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.05.2009, 14:34   #54
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

я просто не знаю как произвести сортировку в списке, за этого я находил самую короткую строку в списке и записывал её в другой файл, затем удалял её в списке.
Так файл 2.txt, должен получаться уже отсортированным, затем просто переписывал файл 2.txt в 1.txt.
А как производить сортировку в списке?
Nitrino вне форума Ответить с цитированием
Старый 31.05.2009, 14:37   #55
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Т.к. я не знаю, как прикрутить к меню пункт для сортировки, то напишу набросок:
Код:
void sort_file(node *nsp)
{
  node *a,*b;
  FILE *fp;
  char tmp[1000];
  int i;

 // сама сортировка
  a = nsp;
  while(a->sled)   
  {
   b = a->sled;
   while(b)
    {
     if(strcmp(b->str,a->str)<0)  // сравнение строк
      {
       strcpy(tmp,b->str);   // обмен строк
       strcpy(b->str,a->str);
       strcpy(a->str,tmp);
      }
     b = b->sled;
    }
   a = a->sled;
  }

   // теперь пишем все в файл 2.txt
    a = nsp;
    fp = fopen("2.txt", "w+t");
    while  (a!=NULL)
       {
	  fputs(a->str, fp); a = a->sled;
       }
    fclose(fp);
    textbackground( TEXT_BG ); textcolor( TEXT_C );
    clrscr(); gotoxy( COL, ROW-1 );
    i=1; while( i <= K ) { out_menu( i, TEXT_BG ); i++; }

}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 22:28   #56
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

Подскажите в чём ошибка постраничного просмотра файла
Исходник прикреплён
За постраничный вывод на экран отвечает функция:
Код:
void out_list(node *nsp)
{
   textbackground( TEXT_BG ); textcolor( TEXT_C );
   clrscr();
   int i, lenp, n=0, l;
   int loop;
   int choice;
   int old_choice;
   double fun, x;
   node *rsp;
   for(rsp=nsp; rsp!=NULL; rsp=rsp->sled)
     {
       clrscr();
       for(lenp=30; lenp!=0; lenp--)
	{
	 printf("\r %s ", rsp->str); rsp = rsp->sled;
	 if(rsp==NULL) break;
	}
      n++;
      if(rsp==NULL) { gotoxy(35, 50);printf("Страница №: %d (Последняя)", n);}
      gotoxy(35, 50);
      printf("Страница №: %d", n);
      gotoxy( COL, ROW-1 );
      /* Начальный вывод всех пунктов меню */
      i=1; while( i <= 2 ) { out_menu4( i, TEXT_BG ); i++; }
      loop = 1; choice = 1; old_choice = 2;
      l=1;
      while ( loop )
	{
	  out_menu4( old_choice, TEXT_BG );
	  out_menu4( choice, CHOICE_BG );
	  old_choice = choice;
	  switch( GetCh() )
	   {
	     case kbUp    :
	     if ( choice>1 ) choice--; else choice = 2; break;
	     case kbDown  :
	     if ( choice<2 ) choice++; else choice = 1; break;
	     case kbEnter :
	     switch ( choice )
	      {
		case 1 : if(rsp==NULL) break;
		 l=0; break;
		case 2 : loop=0; textbackground( TEXT_BG );
		textcolor( TEXT_C ); clrscr(); gotoxy( COL, ROW-1 );
		i=1; while( i <= N ) { out_menu3( i, TEXT_BG ); i++; } break;
	      }
	    textbackground( TEXT_BG ); gotoxy( COL, ROW+1 );
	    if(l==0) break;
	  }
	if(l==0) break;
     }
   if(loop==0) break;

  }
   getch();
   clrscr();
   textbackground( TEXT_BG ); textcolor( TEXT_C );
   clrscr(); gotoxy( COL, ROW-1 );
   i=1; while( i <= N ) { out_menu3( i, TEXT_BG ); i++; }
}
Эта функция правильно выводит первую и вторую страницу за тем почему то считает что вторая страница является последний хотя это не так
Вложения
Тип файла: rar KURS2.rar (2.8 Кб, 6 просмотров)

Последний раз редактировалось Nitrino; 03.06.2009 в 22:40.
Nitrino вне форума Ответить с цитированием
Старый 03.06.2009, 23:40   #57
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Заполнил файл числами от 0 до 100 (каждое на новой строке). При постраничном просмотре вывел все 4 страницы. Поэтому ошибку не обнаружил.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 23:47   #58
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

Попробовал вывел две страницы написав что 2 последняя
Изображения
Тип файла: jpg 2009-06-03_234905.jpg (16.5 Кб, 145 просмотров)

Последний раз редактировалось Nitrino; 03.06.2009 в 23:49.
Nitrino вне форума Ответить с цитированием
Старый 03.06.2009, 23:51   #59
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Прикладываю скомпиленную прогу + файл.
И меню, у меня, кстати, как-то неверно отображается.

Вложения
Тип файла: rar kurs.rar (18.7 Кб, 5 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 00:13   #60
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

При запуске скомпилированного файла выводит все страницы, неверно отображая, а при запуске из под оболочки BC3.1 отображает верно, но выводит только 2 страницы, какой то бред получается
Nitrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Десятичные дроби в двоичном виде Ukrajinec Помощь студентам 2 13.04.2009 11:29
хранение данных в файле (dc++) AsabeasT Общие вопросы Delphi 2 27.03.2009 11:57
Поиск определённого текста в текстовом файле vitawt Общие вопросы Delphi 4 20.01.2008 22:12
Как правильно сохранить настройки текста в ini файле KORN Общие вопросы Delphi 2 30.10.2007 09:14
Поиск и замена текста в файле VAbramyak Общие вопросы Delphi 3 04.04.2007 20:20