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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Pork6
сообщение 7.10.2008 22:25
Сообщение #2


Новичек


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

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


Я не очень глупый человек, и, естественно, перед тем, как постить что-то на форум, не раз менял и изменял код.

Изучал, анализировал.

Ну и наконец пришел к мертвой точке, когда вроде все правильно, а ничего не работает.

Ну и за помощью я сюда и пришел. Так что можете мне конкретно показать ошибку, которую я найти, увы, не могу.

2 мисс_граффити: Можно попробовать убрать перебор по j, оставив только i (т.е. только по строчкам), но опять же сортировка не работает.


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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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