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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Паскаль. Соритровка двумерного массива. Где ошибка?, Написал сортировку, но она не работает. Помогите пожалуйстьа найти оши
сообщение
Сообщение #1


Новичек


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

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


Доброго вам времени суток!

Сейчас работаю над заданием, которое выглядит так:

Дан список группы в 10 человек в виде:

ФАМИЛИЯ: 14 символов (13+1 пробел)
ПОЛ: 2 символа (1+1 пробел)
РЕЗУЛЬТАТЫ_СЕССИИ: 4 символа

Всего в строке 20 символов.

Данные в одной строке отделяются друг от друга пробелами. Например:
Иванов________м_4455
Петрова_______ж_3554
………………………….
Отсортировать по убыванию среднего балла мужчин и женщин по отдельности. Список брать из файла и сохранить в файл. Процедуры, функции и string-и не использовать. Реализовать программу через сортировку двумерного массива.


Вот что я написал:



program Zachet1;

type massC=array[1..10,1..20] of char;

var A:massC;
C:massC;
my1,my2,i,j:integer;
myin,myout:text;

begin

assign (myin, 'INPUT.TXT');
assign (myout, 'OUTPUT.TXT');
reset (myin);
rewrite (myout);

for i:=1 to 10 do
begin
for j:=1 to 20 do
read(myin,A[i,j]);
readln(myin);
end;

for i:=1 to 10 do {перевожу 4 цифры в числовой тип и сортирую по убыванию}
for j:=1 to 20 do
begin
my1:= (ord(A[i,17])-48)+(ord(A[i,18])-48)+(ord(A[i,19])-48)+(ord(A[i,20])-48);
my2:= (ord(A[i+1,17])-48)+(ord(A[i+1,18])-48)+(ord(A[i+1,19])-48)+(ord(A[i+1,20])-48);
if my1<my2
then
begin
C[i,j]:=A[i,j];
A[i,j]:=A[i+1,j];
A[i+1,j]:=C[i,j];
i:=i+1;
end;
end;

for i:=1 to 10 do {вывожу мужской пол}
begin
if (A[i,15]='м') then
begin
for j:=1 to 20 do
write(myout,A[i,j]);
writeln(myout)
end;
end;

for i:=1 to 10 do {вывожу женский пол}
begin
if (A[i,15]='ж') then
begin
for j:=1 to 20 do
write(myout,A[i,j]);
writeln(myout);
end;
end;

close(myin);
close(myout);

end.




Но программа не работает.

Пожалуйста, помогите исправить ошибку. Заранее спасибо.

P.S. Файл "INPUT.TXT" приложил, "OUTPUT.TXT" программа создаст сама.


Прикрепленные файлы
Прикрепленный файл  INPUT.TXT ( 218 байт ) Кол-во скачиваний: 326


--------------------
We Do What We Must, Because We Can © GLaDOS

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Можно попробовать убрать перебор по j, оставив только i (т.е. только по строчкам), но опять же сортировка не работает.
Не надо ничего пробовать просто так... Ты должен делать только то, что понимаешь, как работает. Зайди вот сюда: Методы сортировок , посмотри, как реализуется сортировка "пузырьком", и сравни с тем, что делаешь ты...

Хинт: тебе надо отсортировать строки... Все, больше ничего... Условие, при котором строки меняются местами, у тебя почти правильное ("почти" - потому, что с твоим условием это будет сортировка по возрастанию, а не по убыванию)... Над остальным - подумай...

Добавлено через 9 мин.
P.S. Хинт №2: не считай массив A двумерным. Его можно сделать одномерным быстрее, чем ты думаешь...

Смотри:
type
massC=array[1..20] of char;
massA=array[1..10] of massC;

var
A:massA;
C:massC;
... Теперь тебе надо отсортировать одномерный массив A (неважно, элементы какого типа он содержит, это не играет никакой роли, сортировка будет совершенно идентична при любом типе элементов...) при помощи дополнительной переменной типа massC... Все как в примере по ссылке... Теперь понятнее?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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