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

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

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

> Паскаль. Соритровка двумерного массива. Где ошибка?, Написал сортировку, но она не работает. Помогите пожалуйстьа найти оши
Pork6
сообщение 7.10.2008 21:52
Сообщение #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 байт ) Кол-во скачиваний: 186


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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 7.10.2008 22:36
Сообщение #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 - 7.10.2008 22:37
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 20.07.2025 10:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"