Тема: Двовимірний масив
Підкажіть, будь ласка, яка тут помилка? В задачі потрібно з файла ф1 прочитати матирицю А[10,10], знайти найбільший елемент кожного рядка і помістити його на головну діагональ, а діагональний елемент -на місце найбільшого.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Двовимірний масив
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Підкажіть, будь ласка, яка тут помилка? В задачі потрібно з файла ф1 прочитати матирицю А[10,10], знайти найбільший елемент кожного рядка і помістити його на головну діагональ, а діагональний елемент -на місце найбільшого.
А тепер помилка в тому, що ви не вказали, чому вважаєте, що в цьому коді є помилка...
І в тому, що ви завантажили файл замість використовувати теґ [ code ]
Vaska, помилка в алгоритмі, гадаю: занадто громіздка структура, щоб ув одному блоці її накидати.
Винесіть пошук максимального елемента рядка в окрему функцію: спростить життя.
А отут пропустили крапкому.
BEGIN
MAX:=A[I,J]
END;
І ще далі кілька разів по коду...
А отут пропустили крапкому.
BEGIN MAX:=A[I,J] END;
І ще далі кілька разів по коду...
Нічого не пропустили, не треба людину плутати!
Звернемо також увагу на те, що всі рядки між begin та end, крім останнього, закінчуються крапкою з комою. Крапка з комою служить для відокремлення команд одна від одної, а оскільки end не є командою, відокремлюватися від нього непотрібно. Тим не менш, часто ставлять крапку з комою і перед end. Це не є помилкою - крапка з комою, якщо не розділює команди, розглядається як пустий оператор - тобто відсутність дії, цей оператор не впливає на виконання програми.
Звернемо також увагу на те, що всі рядки між begin та end, крім останнього, закінчуються крапкою з комою. Крапка з комою служить для відокремлення команд одна від одної, а оскільки end не є командою, відокремлюватися від нього непотрібно.
Дякую - не знав про такі фічі. 0_о
Чесно кажучи, я теж до четвертого курсу не знав. А паскаль у нас був на першому.
Проблема в тому, що коли я нажимаю виконати програму, біля MAX:=A[J][J]; виникає:"массив имеет другоє количество розмерностей". Що це означає?
Проблема в тому, що коли я нажимаю виконати програму, біля MAX:=A[J][J]; виникає:"массив имеет другоє количество розмерностей". Що це означає?
Спробуйте A[J,J] замість A[J][J].
А що за версія паскаля? Російськомовна - значить, не ТурбоПаскаль; але PascalABC ніби нормально таку індексацію сприймає.
Vaska написав:Проблема в тому, що коли я нажимаю виконати програму, біля MAX:=A[J][J]; виникає:"массив имеет другоє количество розмерностей". Що це означає?
Спробуйте A[J,J] замість A[J][J].
А що за версія паскаля? Російськомовна - значить, не ТурбоПаскаль; але PascalABC ніби нормально таку індексацію сприймає.
Так, це PascalABC. Я спробувала написати[I,I],але тоді вибиває іншу помилку:"выход за границы диапазона изминения индекса 1..10."
Так, це PascalABC. Я спробувала написати[I,I],але тоді вибиває іншу помилку:"выход за границы диапазона изминения индекса 1..10."
А де саме це відбувається?
Я там бачу ще купу проблем в цій програмі, але ви маєте зрозуміти, що окрім вас самих вам ніхто не допоможе. Ми можемо тільки підказати. Доки ви не будете активно шукати причин виникнення проблем, а будете їх викладати сюди - отримуватимете максимум самоочевидні відповіді.
На майбутнє: будь-яке питання по коду має містити три складові: що ви хочете зробити (завдання), як ви це робите (код), що виходить (помилка). По кожному пункту має бути стільки інформації, щоб не викликати уточнювальних питань... ну або принаймні максимум інформації, що ви можете надати, і бажано в найзручнішій для тих, хто відповідатиме, формі. У останньому вашому питанні немає коду, і не вказано, де саме відбувається збій.
Так, і ще бажано нормально відформатувати код: всі рядки після begin, repeat, case зсунуті на 2 пробіли (якщо вкладений в begin-end begin - на 4, якщо ще вкладений - на 6 і т.д.; після відповідних end і until повераємося на рівень назад. Це значно полегшує читання програми (і вам теж).
Приклад правильно відформатованого коду, за яким можна прослідкувати логіку програми:
PROGRAM LAB7;
VAR
F: FILE OF INTEGER;
A: ARRAY [1..10, 1..10] OF INTEGER;
B: ARRAY [1..10, 1..10] OF INTEGER;
MN, I, J, MAX: INTEGER;
BEGIN
ASSIGN(F, 'D:\Dance.Mission\MOE.txt');
RESET(F);
WRITELN('VVID Z FILE F.TXT');
READ(F, A[I,J]);
BEGIN
MAX := A[1,1];
FOR I := 1 TO 10 DO
BEGIN
FOR J := 1 TO 10 DO
BEGIN
IF A[I,J] < MAX THEN
BEGIN
MAX := A[I,J]
END;
MN := MAX;
MAX := A[J, J];
A[J, J] := MN;
WRITE('RESULTATIV MASUV A=');
FOR I:=1 TO 10 DO {змінна I уже використовується для зовнішнього циклу}
WRITE(A[I, J]) {для цього циклу потрібно завести нову змінну, наприклад K}
END
END;
END;
CLOSE(F)
END.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися