Сортировка чисел из файла в порядке возрастания (перевод с Паскаля) - C (СИ)
Формулировка задачи:
Хотелось бы, чтобы вы преобразовали код отсюда: Вывести числа из текстового файла в порядке возрастания! из Паскаля в Си
Условие: сортировка чисел из файла в порядке возрастания
Решение задачи: «Сортировка чисел из файла в порядке возрастания (перевод с Паскаля)»
textual
Листинг программы
#include <iostream> #include <string.h> #include <stdlib.h> #include <stdio.h> using namespace std; const int SIZE =80; void form (char*, char*); char *probel2 (char *in); char *probel1 (char *in); char *copyword (char *, char *, int); char *sort (char *a, char *b, char *); int main() { char buf[SIZE], outbuf[SIZE]={' '}; while(cout<<"Vvedite stroky: ", cin.getline(buf, SIZE)) { form (buf, outbuf); printf("Rezultat: %s", outbuf); return 0; } } void form (char *a,char *out) { char *first=a; *out='\0'; int s[80]={0}; char min; while (*(first=probel1(a))) { min=*first; a=probel2(first); out=copyword(first, out,a-first); } cout<<endl; } char *probel1(char *in) { while (*in&&(*in==' ')||(*in=='\t')) in++; return in; } char *probel2 (char *in) { while (*in&&*in!=' '&&*in!='\t') in++; return in; } char *copyword (char * from, char *to, int len) { char *a=to; char *d=to; char *b=to; for (int j=0; (j<len)&&(*to++=*from++); j++) ; while (a!=to) { b=d; while (b!=to-1) { if (*b>*(b+1)) { char buf=*(b+1); *(b+1)=*b; *b=buf; } b++; } a++; } *to++=' '; *to='\0'; return to; }
Объяснение кода листинга программы
- Сначала мы включаем необходимые заголовочные файлы:
, , , . - Объявляем константу SIZE равную 80.
- Объявляем функцию form, которая принимает два указателя на строки (char*) и выполняет сортировку и вывод результата.
- Внутри функции main создаем две строки: buf и outbuf.
- Затем в цикле while считываем строки из ввода пользователя и вызываем функцию form для каждой строки.
- Функция form начинает с поиска первого слова в строке, затем определяет минимальный символ и копирует это слово в начало выходной строки.
- Затем функция form вызывает функцию probel1, чтобы найти следующую позицию в строке, где находится следующее слово.
- Функция probel1 проверяет каждый символ в строке до тех пор, пока не найдет слово, которое заканчивается пробелом или табуляцией.
- Функция probel2 проверяет каждый символ в строке до тех пор, пока не найдет слово, которое начинается с пробела или табуляции.
- Функция copyword копирует слова из входной строки во входную строку, добавляя каждое слово в конец выходной строки.
- Затем функция copyword сортирует слова во входной строке, сравнивая каждое слово слева направо и меняя их местами при необходимости.
- Наконец, функция main выводит результат на экран.
- Функция form возвращает 0, указывая на успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д