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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

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


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

 





- Текстовая версия 20.04.2024 16:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name