Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Двумерный массив 
:(
    Опции темы
olgab
Дата 30.5.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.5.2009

Репутация: нет
Всего: нет



Дана матрица D(6*6) положительных и отрицательных целых чисел расположенных в шахматном порядке. Необходимо выбрать элементы стоящие по диагонали слева направо и справа налево. Сформировать два одномерных массива А(6) и В(6). Вывести на печать все массивы
Разработать алгоритм решения задачи, составить блок-схему, записать задачу на языке Pascal
Надеюсь на помощь
PM MAIL   Вверх
volvo877
Дата 30.5.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена! 
PM MAIL   Вверх
neic
Дата 30.5.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: 5
Всего: 7



Цитата(olgab @  30.5.2009,  13:12 Найти цитируемый пост)
Разработать алгоритм решения задачи, составить блок-схему

Разве это не одно и тоже?
А вообще полностью лабу тебе ни кто делать не будет. Программу да, а лабу как-нить сам доделывай.

Код

PROGRAM MATRIX;
    USES CRT;
    VAR
            I,J,L,K              :INTEGER;
            D:ARRAY[1..6,1..6] OF INTEGER;
            A,B:ARRAY[1..36] OF INTEGER;
BEGIN
CLRSCR;
RANDOMIZE;

FOR I:=1 TO 6 DO
BEGIN
    FOR J:=1 TO 6 DO
    BEGIN
        D[I,J]:=RANDOM(50);
        WRITE (D[I,J],' ')
    END;
    WRITELN;
END;

WRITELN;

K:=0;
L:=0;
WRITELN;
READLN;
FOR I:=1 TO 6 DO
BEGIN
    FOR J:=1 TO 6 DO
    BEGIN
        IF J>= I THEN
        BEGIN
            K:=K+1;
            A[K]:=D[I,J];
        END;

        IF J<I THEN
        BEGIN
            L:=L+1;
            B[L]:=D[I,J];
                END;
    END;
END;

WRITELN;
WRITELN;
WRITELN ('MASSIV A:');

FOR I:=1 TO K DO
BEGIN
    WRITE(' ', A[I])
END;

WRITELN;
WRITELN;
WRITELN ('MASSIV B:');

FOR I:=1 TO L DO
BEGIN
    WRITE(' ', B[I])
END;
WRITELN;
WRITELN;
WRITELN ('PLEASE CLICK <ENTER> DOR EXIT');
READLN
END.


Пока делал обнаружил аномалию в паскале...

Если массивы ограничить до 18 элементов, то B[1]:=A[19], B[2]:=A[20]
Попробуйте сами, мож это у меня среда какая-та не такая.
PM MAIL WWW ICQ Skype   Вверх
volvo877
Дата 30.5.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(neic @  30.5.2009,  15:32 Найти цитируемый пост)
Пока делал обнаружил аномалию в паскале...

Если массивы ограничить до 18 элементов, то B[1]:=A[19], B[2]:=A[20]

Если включить наконец режим {$R+} или Options -> Compiler -> [X] Range Check (и никогда его не выключать, если не хочешь искать ошибки в программах часами), то Паскаль тебе просто не даст обратиться к A[19], потому что нельзя.

А вообще, чего ж непонятного? Память под переменные выделяется в порядке их объявления, то есть, массив B идет непосредственно за массивом A, естественно, что как только ты выходишь "за рамки" массива A, ты переходишь во владения B... Точно так же B[0] будет равно A[18]...

P.S. У тебя чего, CapsLock заело? Не выключается? Зачем все время писать программы в верхнем регистре?
PM MAIL   Вверх
neic
Дата 30.5.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: 5
Всего: 7



volvo877
Мне так приятнее, нагляднее получается =)

Цитата(volvo877 @  30.5.2009,  15:50 Найти цитируемый пост)
Если включить наконец режим {$R+} или Options -> Compiler -> [X] Range Check (и никогда его не выключать, если не хочешь искать ошибки в программах часами), то Паскаль тебе просто не даст обратиться к A[19], потому что нельзя.

Понятно. Буду знать ;)

PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.