IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Сортировка строк в файле в алфавитном порядке, Сортировка в С++
ninja
сообщение 10.05.2010 20:19
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Добрый вечер, необходимо написать программу которая сортирует строки в файле в алфавитном порядке.
Код программы:

laba3::sortirovka()
{
FILE *f;
char str={0};
char s1[79]={0};
char s2[79]={0};
int i=0,j=0,k=0;
int flag=1;
long pos1=0,pos2=0;
int length=0;
int flag_perest=0;
int flag_flag=0;
fpos_t filepos;
f=fopen ("laba3.txt","r+");
do
{
//f=fopen ("laba3.txt","r+");
if (flag_perest==1)
    {
     for (i=0;i<79;i++)
	{
	 //s1[i]='\0';
	 s2[i]='\0';
	}
    }
    else
    {
     for (i=0;i<79;i++)
	{
	 flag_flag=1;
	 pos1=0;
	 pos2=0;
	 s1[i]='\0';
	 s2[i]='\0';
	}
     }
i=0;
j=0;
if ((flag==1)&&(flag_perest==0))
   {
    //flag=0;
    if (flag_flag!=1)
    pos1=ftell(f);
    fseek(f,pos2,pos1);
    do
     {
      str=fgetc(f);
      if (str!=' ')
	  {
	   s1[i]=str;
	   i++;
	  }

      if ((i==80) || (feof(f)))
	  {
	   break;
	  }

     }
    while (str!=' ');
   } //endif;

//pos=fgetpos(f,&filepos);
//pos=fseek(f,ftell(f),SEEK_CUR);
pos2=ftell(f);
fseek(f,pos2,po1);
    do
     {

      str=fgetc(f);
      if ((str!=' ')&&(!feof(f)))
	{
	 s2[j]=str;
	 j++;
	}
      if ((feof(f))||(j==80))
	{
	 break;
	}
     }
    while (str!=' ');

if ((strlen(s1)) <= (strlen(s2))) //  <=
 {
 k=j;
 }
if ((strlen(s1)) > (strlen(s2)))
 {
  k=strlen(s1);
  flag=1;
 }
//i=j=0;

for (int m=0;m<k;m++)
	{
	 if (s1[m]>s2[m])
		{
		 flag=1;
		 break;
		}
	}

k=0;

/*if ((strlen(s1)) < (strlen(s2)))
  {
   length=strlen(s2);
  }
  else
  {
   length=strlen(s1);
  } */

if (flag==1)
    {
     fseek(f,pos1,0);
     do
      {
       fputc(s2[k],f);
       k++;
      }
     while (k!=strlen(s2));

    fputc(' ',f);
    k=0;
     do
      {
       fputc(s1[k],f);
       k++;
      }
     while (k!=strlen(s1));
    }
if (flag==0)
  {
   flag_perest=1;
  }
  else
  {
   flag_perest=0;
  }
//fclose(f);
}
while (!feof(f));
fclose(f);
return 0;
}


Язык С++. Идея сортировки такая, берется первое слово и сранивается со всеми, затем если нужно слова переставляются, и цикл начинается заново и так пока не достигнется конец файла, затем берется 2е слово и сранивается с отсальными и т.д.
Писал программу, но запутался с функцией fseek(); т.е 1е слово со всеми сравнивается, а вот чтобы взять затем 2е не получается. И 2я проблема есть ли какая-нибудь функция удаления и смещения символов в файле, т.е например если в файле 2 строки klmno и abc то при перестановке получается abcno klmno.

Заранее благодарен за помощь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
ninja   Сортировка строк в файле в алфавитном порядке   10.05.2010 20:19
volvo   Брррр... А что, сортировку обязательно написать са...   10.05.2010 20:51
ninja   Конечно можно, так даже будет удобней, я недавно н...   10.05.2010 20:59
volvo   Ты пример файла приведи, с которым работаешь...   10.05.2010 22:14
ninja   Пример файла sdfsdfsdfsdfsf fwfsdfsdf sdfwefs sdf...   10.05.2010 22:15
volvo   #include <algorithm> #include <iostream...   11.05.2010 1:23
ninja   Добрый день, Владимир спасибо огромное только это ...   11.05.2010 14:41
TarasBer   Вы путаете C и С++. Вам нужен просто C (судя по 1м...   11.05.2010 16:52
volvo   Ага... Особенно - судя вот по этой части первого п...   11.05.2010 17:20
TarasBer   Ага... Особенно - судя вот по этой части первого ...   12.05.2010 10:36
ninja   В 1м посте я писал программу на консольном С++. а ...   11.05.2010 18:31
volvo   Ты для себя сначала реши, ты хочешь С или С++? Пот...   11.05.2010 23:58
volvo   [color=gray]"- Осетрину прислали второй свеж...   13.05.2010 11:56
ninja   Программа вроде работает, я просто путаюсь с С и С...   17.05.2010 19:44


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 27.07.2025 3:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"