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

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

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

> МОЙ вам вопрос по матрицам...., Отладка и исполнение программы...Возможно
Slava8888
сообщение 17.01.2011 23:40
Сообщение #1





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

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


У меня задача по массивам:Дана матрица размером 4х4. Поменять местами
строки и столбцы этой матрицы.
Вот мой исходник, проверьте пожалуйста,что не так:

Program Mas_2;
Var
matr:array[1..4,1..4] of integer;
i,j,buf:integer;
BEGIN
for i:=1 to 4 do
for j:=1 to 4 do begin write('vvedite element',i,'',j,'');
readln (matr[i,j]);
end;
Writeln('Sodergmoe matrici do obrabotki');
for i:=1 to 4 do begin for j:=1 to 4 do write(matr[i,j]:4);
writeln;
end;
for i:=1 to 4 do
for j:=1 to 4 do begin
buf:=matr[i,j];
matr[i,j]:= matr[j,i];
matr[j,i]:= buf;
end;
writeln('sodergimoe matrici posle obrabotki');
for i:=1 to 4 do begin for j:=1 to 4 do
write(matr[i,j]:4);
writeln;
end;
END.
Прога в паскале нормально выполняется, без ошибок. Но всё равно мне препод сказал что неправильно.
Далее запускаю ехе проги, и она постоянно просит вводить числа до бесконечности, тоесть:
введите элемент-ввели цифру->жмем ентер и с новой строки опять строка "введите элемент" и так до бесконечности.
Видимо прога пашет как то неправильно,ПРОШУ ВАС ПОПРАВЬТЕ МЕНЯ!!
Прикрепленное изображение Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
мисс_граффити
сообщение 18.01.2011 8:43
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


ну почему же до бесконечности? до того, как введешь 16 элементов.

for i:=1 to 4 do
for j:=1 to 4 do begin
buf:=matr[i,j];
matr[i,j]:= matr[j,i];
matr[j,i]:= buf;
end;

У тебя элементы поменяются местами дважды... то есть вернутся в исходное состояние.
делай j не от 1 до 4, а от 1 до i (даже до i-1), то есть только для элементов, лежащих ниже главной диагонали.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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