Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Борисыч
Статус: Профессор
Рейтинг: 3465
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Профессор
Рейтинг: 2767
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2523
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1139
Дата выхода:21.11.2010, 23:30
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:191 / 183
Вопросов / ответов:1 / 2

Вопрос № 180810: Уважаемые эксперты! Помогите с решением этой задачи по программированию. Работаю под Windows Xp на Turbo Pascal. Вот задача. Даны действительные числа а1, а2, ...а64. Получить действительную квадратную матрицу порядка 8, элементами которой я...



Вопрос № 180810:

Уважаемые эксперты! Помогите с решением этой задачи по программированию.
Работаю под Windows Xp на Turbo Pascal.
Вот задача.
Даны действительные числа а1, а2, ...а64. Получить действительную квадратную матрицу порядка 8, элементами которой являются числа а1, а2, ...а64, расположенные в соответствии с рисунком ( прикреплен).

Отправлен: 16.11.2010, 23:18
Вопрос задал: Маша Гришина (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Micren (Профессионал) :
Здравствуйте, Маша Гришина!
Программа. Проверял во FreePascal.
Код:
program P_180810;

const
{ Размерность}
DIM=8;

type
{ Тип для матрицы }
TMatrix=array[1..8,1..8]of Double;

var
Matrix:TMatrix;
I,J,C,H:Integer;
D:Double;

begin
I:=0;
H:=1;
{ Заполняем матрицу в порядке согласно условия }
for J:=1 to DIM do begin
C:=DIM;
while C>0 do begin
I:=I+H;
Write('A[',I,',',J,']=');
ReadLn(D);
Matrix[I][J]:=D;
Dec(C);
end;
I:=I+H;
H:=-H;
end;
{ Выводим }
WriteLn('Matrix:');
for I:=1 to DIM do begin
for J:=1 to DIM do begin
Write(Matrix[I][J]:7:3,' ');
end;
WriteLn;
end;
ReadLn;
end.

Пример работы:
Код:
/home/.../Pascal/P_180810
A[1,1]=1
A[2,1]=2
A[3,1]=3
A[4,1]=4
A[5,1]=5
A[6,1]=6
A[7,1]=7
A[8,1]=8
A[8,2]=9
A[7,2]=10
A[6,2]=11
A[5,2]=12
A[4,2]=13
A[3,2]=14
A[2,2]=15
A[1,2]=16
A[1,3]=17
A[2,3]=18
A[3,3]=19
A[4,3]=20
A[5,3]=21
A[6,3]=22
A[7,3]=23
A[8,3]=24
A[8,4]=25
A[7,4]=26
A[6,4]=27
A[5 ,4]=28
A[4,4]=29
A[3,4]=30
A[2,4]=31
A[1,4]=32
A[1,5]=33
A[2,5]=34
A[3,5]=35
A[4,5]=36
A[5,5]=37
A[6,5]=38
A[7,5]=39
A[8,5]=40
A[8,6]=41
A[7,6]=42
A[6,6]=43
A[5,6]=44
A[4,6]=45
A[3,6]=46
A[2,6]=47
A[1,6]=48
A[1,7]=49
A[2,7]=50
A[3,7]=51
A[4,7]=52
A[5,7]=53
A[6,7]=54
A[7,7]=55
A[8,7]=56
A[8,8]=57
A[7,8]=58
A[6,8]=59
A[5,8]=60
A[4,8]=61
A[3,8]=62
A[2,8]=63
A[1,8]=64
Matrix:
1.000 16.000 17.000 32.000 33.000 48.000 49.000 64.000
2.000 15.000 18.000 31.000 34.000 47.000 50.000 63.000
3.000 14.000 19.000 30.000 35.000 46.000 51.000 62.000
4.000 13.000 20.000 29.000 36.000 45.000 52.000 61.000
5.000 12.000 21.000 28.000 37.000 44.000 53.000 60.000
6.000 11.000 22.000 27.000 38.000 43.000 54.000 59.000
7.000 10.000 23.000 26.000 39.000 42.000 55.000 58.000
8.000 9.000 24.000 25.000 40.000 41.000 56.000 57.000

Ответ отправил: Micren (Профессионал)
Ответ отправлен: 17.11.2010, 00:08
Номер ответа: 264120

Оценка ответа: 2
Комментарий к оценке:
Меня порадовала оперативность. Думала что помощь буду ждать неделю....
Программа в турбо паскале не заработала.
Компилятор пишет ошибку.
Error 116: Must be in 8087 mode to compile this.
Мне больше понравился второй ответ от Andrew Kovalchuk.

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 264120 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Andrew Kovalchuk (Профессионал) :
    Здравствуйте, Маша Гришина!
    Предлагаемое решение проверялось в Turbo Pascal 7.0
    Код:
    Uses
    Crt;
    Const
    MaxRange = 8; {размер матрицы}
    SqrMaxRange = MaxRange * MaxRange; {количество элементов в квадратной матрице}
    Var
    sAr: Array[1..SqrMaxRange] of Real; {исходный массив элементов}
    Ar: Array[1..MaxRange, 1..MaxRange] of Real; {результирующий массив}
    i, r, c: Byte; {счетчики}
    begin
    ClrScr; {очистка экрана}
    Randomize; {инициализация генератора псевдослучайных чисел}

    {initialize varialble}
    for i := 1 to SqrMaxRange do
    begin {заполнение исходного массива случайной последовательностью действительных чисел}
    sAr[i] := Rando m;
    Write(sAr[i]:5:2); {с выводом элементов массива на экран}
    end;
    writeln;

    {solving}
    for r := 1 to MaxRange do
    begin {последовательно пройдем по всем строкам квадратной матрицы}
    for c := 1 to MaxRange do
    begin {и заполним каждый элемент строки вычисляя индекс следующим образом}
    if odd(c) then {для нечетных номеров колонки}
    Ar[r, c] := sAr[(c-1) * MaxRange + r]
    else {для четных номеров}
    Ar[r, c] := sAr[c * MaxRange - r + 1];
    Write(Ar[r, c]:5:2);
    end;
    WriteLn;
    end; {что и даст такую последовательность, которая изображена на рисунке}

    readkey; {ожидать нажатия пользователем любой клавиши}
    end.

    -----
    Временная неудача лучше временной удачи

    Ответ отправил: Andrew Kovalchuk (Профессионал)
    Ответ отправлен: 17.11.2010, 00:41
    Номер ответа: 264121

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо вам огромное.
    Понравилось: оперативность, подробные пояснения,генератор псевдослучайных чисел!!!!
    Всё сразу заработало.

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 264121 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.23 от 18.11.2010

    В избранное