|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.08.2021, 19:11 | #1 |
Пользователь
Регистрация: 10.11.2020
Сообщений: 17
|
сортировка строк в Паскаль
Задание:
Для программы на сортировку строк напишите принципиальный алгоритм (последовательность блоков), а также опишите, что означает каждая переменная Не могу найти ошибку, при запуске данного кода сортировка только по первой и второй строке, а нужно чтобы сортировка была по всем строкам в файле input.txt. В файле следующие данные Петров;1997;4 Абрамов;1996;5 Иванов;1994;3 Богданов;1997;5 И что значит "напишите принципиальный алгоритм (последовательность блоков)" не понимаю Код:
Последний раз редактировалось BDA; 02.08.2021 в 19:15. |
02.08.2021, 20:13 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,351
|
С форматированием кода жить легче. После автоматического форматирования сразу бросается в глаза лишняя точка с запятой в строке "if s[j] > s[j + 1] then;". Принципиальный алгоритм, предположу, алгоритм в общих чертах (словесное описание крупных блоков кода).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
02.08.2021, 20:49 | #3 | |||
Пользователь
Регистрация: 10.11.2020
Сообщений: 17
|
Цитата:
Цитата:
Цитата:
Ввод массива строк Сортировка массива строк Вывод отсортированного массива строк. Что еще должно быть в описании? Последний раз редактировалось BDA; 05.08.2021 в 05:55. |
|||
05.08.2021, 05:54 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,351
|
А кроме условия задачи нет никаких примеров, лекций, пояснений? В принципе, блоки кода описаны. Но насколько подробное описание требуется - не понятно.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
05.08.2021, 06:54 | #5 |
Пользователь
Регистрация: 10.11.2020
Сообщений: 17
|
Нет, и к моему огромному сожалению, нет ни каких подробностей, кроме условия задания "Для программы на сортировку строк напишите принципиальный алгоритм (последовательность блоков), а также опишите, что означает каждая переменная." Переменные я описал, а вот с алгоритмом тупик(((.
|
05.08.2021, 09:45 | #6 | |
Пользователь
Регистрация: 10.11.2020
Сообщений: 17
|
Цитата:
еще раз код var temp_s, s1:string; //объявление строковых переменных s:array[1..255]of string; //array - объявление массива; string - строковая переменная ball,year:array[1..255]of integer; //integer - используется для определения целых чисел i,j,n,pos1,kod,k:integer; //объявление целых чисел input,output:text; //input, output - системные файлы для связи с внешними устройствами ввода/вывода текстовые файлы begin // начало блока assign(input,'input.txt'); //ассоциация переменной input с файлом input.txt reset(input); //открытие файла связанного с переменной input на чтение i:=1; while not eof (input) do //пока не конец файла input begin //начало блока readln(input,temp_s); //чтение переменной input в строке-накопителе pos1:=pos(';',temp_s); //позиция первого пробела s[i]:=copy(temp_s,1,pos1-1); //копирует из строки temp_s начиная с первого символа символ номер один delete(temp_s,1,pos1); //удаление символов из строки temp_s начиная с первого символа символ номер один pos1:=pos(';',temp_s); //позиция второго пробела s1:=copy(temp_s,1,pos1-1); //копируем подстроку до второго пробела val(s1,year[i],kod); //Преобразует строку в число delete(temp_s,1,pos1); //удаляем все до второго пробела включительно s1:=temp_s; val(s1,ball[i],kod); //Преобразует строку в число writeln(s[i],';',year[i],';',ball[i]); //writeln - перенос на новую строку i:=i+1; end; //конец блока n:=i-1; writeln('---всего ',n,' записей---'); //сортировка for i:=1 to (n-1) do for j:=1 to(n-i) do if s[j] > s[j+1] then begin //начало блока temp_s:=s[j]; s[j]:=s[j+1]; s[j+1]:=temp_s; k:=year[j]; year[j]:=year[j+1]; year[j+1]:=k; k:=ball[j]; ball[j]:=ball[j+1]; ball[j+1]:=k; end; //конец блока writeln('---После сортировки---'); for i:=1 to n do writeln(s[i],' ',year[i],' ',ball[i]); assign(output,'output.csv'); //вывод в CSV-файл rewrite(output); //открытие файла output на запись for i:=1 to n do //чтение элементов от 1 до n writeln(output,s[i],';',year[i],';',ball[i]); close(output); //закрытие файла output close(input); // закрытие файла связанного с input end. //конец блока |
|
05.08.2021, 09:58 | #7 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
А это вас так учат или это вы сами пишите абсолютно бесполезные комментарии?
|
05.08.2021, 10:01 | #8 |
Пользователь
Регистрация: 10.11.2020
Сообщений: 17
|
|
05.08.2021, 10:19 | #9 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
Код:
Код:
Код:
И т.д. |
05.08.2021, 10:40 | #10 | |
Пользователь
Регистрация: 10.11.2020
Сообщений: 17
|
Цитата:
В начале программы она пустая. Далее мы "цепляем" к ней символ до тех пор, пока не встретим конец слова (пробел, запятая и др.) Когда встретим, тогда сравниваем ее значение с эли массива уникальных слов. s1 - строка для построчного чтения информации из файла |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка строк. | qipist | Общие вопросы C/C++ | 2 | 02.05.2014 11:00 |
Задан текст, состоящий из строк произвольной длины. Обработать текст, подсчитав количество строк и отсортировав их (Паскаль) | Александр_Прог | Помощь студентам | 3 | 24.03.2014 14:37 |
Сортировка строк матрицы методом прямых вставок с использование барьеров вставок. Паскаль | myrakami | Помощь студентам | 0 | 23.12.2010 14:31 |
Сортировка строк | oriojke | Общие вопросы C/C++ | 9 | 04.06.2010 13:03 |
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца | немозг | Помощь студентам | 11 | 06.02.2010 21:57 |