C
chipset
Есть программа, сортирующая слова в алфавитном пиорядке методом пузырька (BubbleSort). Считка и запись в текстовые файлы, их там три: 1й-исходный, 2й-промежуточный, и 3й-отсортированный. Все хорошо но никак не могу присобачить порядковые номера к каждой строчке..так чтобы во втором файле получилось!
1 шла
2 собака
3 по
4 роялю
а в третем соответственно..
3 по
4 роялю
2 собака
1 шла
Очень буду благодарен если подскажете как реализовать!..
1 шла
2 собака
3 по
4 роялю
а в третем соответственно..
3 по
4 роялю
2 собака
1 шла
Код:
$this_var =
#include <iostream>
#include <windows.h>
#include <cstring>
using namespace std;
// сортировка пузырьком
void bubbleSort(char **a,int size) {
int i, j;
char* x;
for( i=0; i < size; i++) { // i - номер прохода
for( j = size-1; j > i; j-- ) { // внутренний цикл прохода
if (strcmp(a[j-1],a[j])>0){
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
}
}
}
}
// Сохранение массива слов
void save(char **a,FILE *f){
int i=0;
// пока не встретим NULL пишем в файл
while(a[i]!=NULL){
fputs(a[i++],f);
fputs("\n",f);
}
}
void main(){
int size =10000; // размер массива слов (массива указателей на char)
int str_size =512; // размер одной строки
char **ar = new char*[size]; // выделяем память под массив указателей
for(int i=0;i<size;i++) // заполняем массив NULL_указателями
ar[i] = NULL;// Изначально массив пустой
FILE *f = fopen("1.txt","r"); // открываем исходный файл
i=0;
char buf[128]; // под строку
char *token; // вспомагательн для strtok в каждый укахатель адрес след ликсемы слаживать
char sep[] = " -,.!)(?:\ t\n\" "; // разделители
// пока не конец файла и не предел массива строк запоминаем строки в массив строк
while(!feof(f) && i<size){
fgets(buf,128,f);
token = strtok(buf,sep);
while(token!=NULL){// если нет след слова то 0 выход
ar[i] = new char[54];
strcpy(ar[i],token);
i++;
token = strtok(NULL,sep);
}
}
fclose(f); // закрываем исходный файл
f = fopen("2.txt","w");
save(ar,f);
fclose(f);
bubbleSort (ar,i); // Сортируем
f = fopen("3.txt","w");
save(ar,f);
fclose(f);
// освобождаем память
for(i=0;i<size;i++)
delete ar[i];
delete [] ar;
}
Очень буду благодарен если подскажете как реализовать!..