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

Поиск:

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


Новичок



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

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



Помогите пожалуйста!!! Нужно решить 3 задачки
Задача 1

Указания к решению: 
1.    Ввод и вывод элементов матрицы оформить в виде процедур. Ввод выполнить с помощью датчика случайных чисел.
2.    Для визуальной проверки решения при выводе матрицы выделить цветом элементы, удовлетворяющие требованиям условия задачи.

         Дана матрица А(N,M) натуральных чисел. Найти количество столбцов, сумма элементов которых является не простым числом.


Задача 2

Указания к решению: 
1.    Ввод и вывод элементов матрицы оформить в виде процедур. Ввод выполнить с помощью датчика случайных чисел.
2.    Для визуальной проверки решения при выводе матрицы выделить одним цветом элементы, принадлежащие выделенной области, и другим – удовлетворяющие требованиям условия задачи.

    Дана квадратная матрица B(K,K) натуральных чисел. Найти максимальный элемент среди тех, который лежат в выделенной области и являются квадратом какого-либо натурального числа. Область задается координатами элемента B(S,P), через который проводится косая линия, параллельная побочной диагонали. Элементы, расположенные на границах области, входят в заштрихованную часть.
   user posted image

Задача 3

Указания к решению: 
Ввод и вывод элементов матрицы оформить в виде процедур. Ввод выполнить с помощью датчика случайных чисел.

    Дана квадратная матрица B(2K,2K) натуральных чисел. Матрицы разбита на квадраты. Поменять местами квадраты матрицы согласно рисунку.

user posted image
PM MAIL   Вверх
Chazer
Дата 13.5.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Упоротый гентушник
*


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

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



Задача №1.
Код

uses Crt;
const m=10; n=15; {Простейший вариант. Задаем
                  размеры матрицы статически. Или
                  надо динамически создавать?}
    max=100; {Указываем "потолок" значений
                 в матрице}
var a:array[1..m,1..n]of word;
    b:array[1..n]of boolean; {Сохраняем данные о
                              столбцах при поиске, т.е.
                              нужно ли закрашивать при выводе}
    x:integer;{количество столбцов, которые
                                        соответствуют условию}

{Инициализация матрицы}
procedure Init;
var i,j:integer;
begin
    randomize;
    for i:=1 to m do
        for j:=1 to n do
            a[i,j]:=random(max);
end;

procedure Find;
var i,j,l:integer;
    sum:longint;
begin
    x:=0;
    for j:=1 to m do
        begin
        b[j]:=true;
        sum:=0;
        for i:=1 to n do sum:=sum+a[i,j];
        for l:=2 to round(sqrt(sum)) do
            if sum mod l = 0 then
                begin
                b[j]:=false;
                break;
                end;
            if b[j] then inc(x);
        end;
        
end;

procedure Print;
var i,j:integer;
begin
    for i:=1 to m do
        begin
        for j:=1 to n do
            begin
            if b[j] then textcolor(lightblue) else textcolor(white);
            write(a[i,j]:4);
            end;
        writeln;
        end;
        textcolor(red);
        writeln('К-ство столбцов, соответствующих условию: ',x);
        textcolor(white);
end;

begin
clrscr;
Init;
Find;
Print;
readkey;
end.


З.Ы. Блондиночка, на будущее: ознакомься, пожалуйста, с Правилами форума "Центр помощи", особенно прочитай внимательно следующий пункт
  • Помни: один топик - один вопрос!

PM MAIL Jabber   Вверх
Chazer
Дата 13.5.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Упоротый гентушник
*


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

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



Задача №2.
Код

uses Crt;
const k=15; {Простейший вариант. Задаем
                  размеры матрицы статически.}
    max=100; {Указываем "потолок" значений
                 в матрице}
var a:array[1..k,1..k]of word;
    x,y,p,s:integer;

{Инициализация матрицы}
procedure Init;
var i,j:integer;
begin
    randomize;
    for i:=1 to k do
        for j:=1 to k do
            a[i,j]:=random(max)+1;
end;

procedure Init_B;
begin
    writeln('Введіть координати елементу B:');
    write('S: ');
    readln(s);
    write('P: ');
    readln(p);
end;

procedure Find;
var i,j,l:integer;
    sum:longint;
begin
    x:=0;
    for i:=1 to k do
        for j:=1 to k do
            if(s+p>=i+j)and(sqrt(a[i,j])=trunc(sqrt(a[i,j])))then
                if (x=0)or((x<>0)and(a[i,j]>a[x,y])) then
                    begin
                    x:=i;
                    y:=j;
                    end;
end;

procedure Print;
var i,j:integer;
begin
    for i:=1 to k do
        begin
        for j:=1 to k do
        begin
        if ((s+p>=i+j)) then textcolor(lightblue) else textcolor(white);
        if (a[x,y]=a[i,j])and(s+p>=i+j) then textcolor(lightred);
        write(a[i,j]:4);
        end;
        writeln;
        end;
        textcolor(white);
end;

begin
clrscr;
Init;
Init_B;
Find;
Print;
readkey;
end.


Это сообщение отредактировал(а) Chazer - 13.5.2009, 21:48
PM MAIL Jabber   Вверх
Chazer
Дата 13.5.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Упоротый гентушник
*


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

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



Задача №3.
Код

uses Crt;
const k=4; {Простейший вариант. Задаем
                  размеры матрицы статически.}
    tab=4;{Размер отступа при выводе матрицы}
    max=100; {Указываем "потолок" значений
                 в матрице}
var a:array[1..2*k,1..2*k]of word;
    colours:array[1..4]of byte;
{Инициализация матрицы}
procedure Init;
var i,j:integer;
begin
    randomize;
    for i:=1 to 2*k do
        for j:=1 to 2*k do
            a[i,j]:=random(max)+1;
    {тута указываем цвета для вывода отдельных квадратов}
    colours[1]:=lightred;
    colours[2]:=cyan;
    colours[3]:=green;
    colours[4]:=yellow;
end;

{Преобразование матрицы}
procedure morph;
var i,j:integer;
    tmp:word;
begin
    for i:=1 to k do
        for j:=1 to k do
        begin
            {Меняем местами элементы квадратов 1 и 3}
            tmp:=a[i,j];
            a[i,j]:=a[i+k,j+k];
            a[i+k,j+k]:=tmp;
            {Меняем местами элементы квадратов 2 и 4}
            tmp:=a[i,j+k];
            a[i,j+k]:=a[i+k,j];
            a[i+k,j]:=tmp;
        end;
    {Меняем местами цвета для вывода квадратов 1 и 3}
    tmp:=colours[1];
    colours[1]:=colours[3];
    colours[3]:=tmp;
    {Меняем местами цвета для вывода квадратов 2 и 4}
    tmp:=colours[2];
    colours[2]:=colours[4];
    colours[4]:=tmp;
end;

{собсно, вывод на экран}
procedure print;
var i,j,c:integer;
begin
    for i:=1 to 2*k do
    begin
        for j:=1 to 2*k do
        begin
            if (i<=k)and(j<=k)then textcolor(colours[1]);
            if (i<=k)and(j>k)then textcolor(colours[2]);
            if (i>k)and(j>k)then textcolor(colours[3]);
            if (i>k)and(j<=k)then textcolor(colours[4]);
            write(a[i,j]:tab);
        end;
        writeln;
    end;
    textcolor(white);
end;

begin
clrscr;
textcolor(white);
Init;
writeln('Нормальная матрица:');
Print;
morph;
writeln('Трансформированная матрица:');
Print;
readkey;
end.

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

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


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

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

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

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


 




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


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

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